Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CFFP-HB
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chao Sun
CFFP-HB
Commits
0e6970cd
Commit
0e6970cd
authored
May 20, 2025
by
yuzhenWang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-20250515wyz-修复bug' into 'uat'
Feature 20250515wyz 修复bug See merge request
!2
parents
963ad6ed
e4b94a5a
Hide whitespace changes
Inline
Side-by-side
Showing
63 changed files
with
529 additions
and
215 deletions
+529
-215
components/bootpage/bootpage.vue
+2
-2
components/courseItem/courseItem.vue
+39
-16
components/login/login.vue
+53
-8
components/search/search.vue
+59
-14
components/unipopup/loginPopup.vue
+1
-1
pages.json
+3
-3
pages/afterSaleDetail/afterSaleDetail.vue
+1
-1
pages/afterSales/afterSales.vue
+1
-1
pages/announcement/announcement.vue
+1
-1
pages/announcement/announcement_detail.vue
+1
-1
pages/application-process/basic-info.vue
+1
-1
pages/applyDropClass/applyDropClass.vue
+2
-1
pages/authentication-query/authentication-query.vue
+1
-1
pages/authentication-query/authentication-result.vue
+1
-1
pages/certifyDetail/certifyDetail.vue
+1
-1
pages/certifyDetail/uploadinformation.vue
+1
-1
pages/commonDetail/commonDetail.vue
+1
-1
pages/courseDetail/courseDetail.vue
+39
-16
pages/courselist/courselist.vue
+34
-8
pages/dropLists/dropLists.vue
+1
-1
pages/exchangeRecord/exchangeRecord.vue
+1
-1
pages/index/index.vue
+74
-37
pages/invitationRegister/invitationRegister.vue
+1
-1
pages/invitationRegister/invitationlogin.vue
+1
-1
pages/inviteJoin/inviteJoin.vue
+1
-1
pages/learnCertify/learnCertify.vue
+1
-1
pages/learningStatistics/learningStatistics.vue
+1
-1
pages/myCertify/myCertify.vue
+1
-1
pages/myLearning/myLearning.vue
+1
-1
pages/myPoints/myPoints.vue
+3
-3
pages/myPoints/pointsDetail.vue
+1
-1
pages/myShare/myShare.vue
+1
-1
pages/orderConfirm/orderConfirm.vue
+3
-3
pages/orderDetail/orderDetail.vue
+18
-9
pages/orderStatus/orderStatus.vue
+4
-3
pages/personalCenter/accountoperation/aboutcffp.vue
+1
-1
pages/personalCenter/accountoperation/confirmResetpassword.vue
+1
-1
pages/personalCenter/accountoperation/phonebinding.vue
+1
-1
pages/personalCenter/myTeam.vue
+1
-1
pages/personalCenter/personalCenter.vue
+14
-6
pages/personalCenter/system/accontsetting.vue
+1
-1
pages/personalCenter/system/cancellation.vue
+8
-6
pages/personalCenter/system/menulist.vue
+1
-1
pages/personalCenter/teamMembers/jurisdiction.vue
+1
-1
pages/personalCenter/teamMembers/members.vue
+1
-1
pages/personalCenter/teamMembers/otherteam.vue
+1
-1
pages/personalCenter/teamMembers/teamMembers.vue
+1
-1
pages/personalCenter/teamPerformance/teamPerformance.vue
+1
-1
pages/personalCenter/user-information.vue
+83
-13
pages/pointsExchange/pointsExchange.vue
+1
-1
pages/pointsExchange/pointsStatus.vue
+1
-1
pages/product/product.vue
+1
-1
pages/saleCourseLists/saleCourseLists.vue
+5
-5
pages/shareFriend/shareFriend.vue
+1
-1
pages/systemMsg/system_msg.vue
+1
-1
pages/systemMsg/system_msg_detail.vue
+1
-1
pages/taxRules/taxRules.vue
+1
-1
pages/withdrawal/withdrawal.vue
+1
-1
pages/withdrawal/withdrawalDetail.vue
+1
-1
sfp/childEdu/childEdu.vue
+1
-1
util/dataHandling.ts
+1
-0
util/fiveshare.ts
+1
-0
util/router.js
+41
-19
No files found.
components/bootpage/bootpage.vue
View file @
0e6970cd
...
...
@@ -7,7 +7,7 @@
</view>
<view
class=
"login-code"
>
<input
name=
"form.code"
placeholder=
"输入验证码"
v-model=
"code"
type=
"number"
maxlength=
"6"
/>
<text
style=
"width: 2
5
0rpx;"
@
click=
"sendMessage()"
:class=
"
{'grey':disabledSendBtn}">
{{
sendCode
}}
</text>
<text
style=
"width: 2
0
0rpx;"
@
click=
"sendMessage()"
:class=
"
{'grey':disabledSendBtn}">
{{
sendCode
}}
</text>
</view>
<view
class=
"agree"
>
<label
class=
"radio"
style=
"padding-right: 10rpx;"
>
...
...
@@ -146,7 +146,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content-box
{
position
:
absolute
;
//
left
:
50%
;
...
...
components/courseItem/courseItem.vue
View file @
0e6970cd
...
...
@@ -5,15 +5,15 @@
</view>
<view
class=
"courseDetailBox"
>
<view
class=
"title"
>
<
text
style=
"overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"
>
{{
title
}}
</text
>
<
view
style=
"overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"
>
{{
title
}}
</view
>
<!--
<text
class=
"detailBtn"
@
click=
"viewDetail()"
v-if=
"isNeedViewDetail"
>
订单详情>
</text>
-->
</view>
<view
class=
"summaryBox"
v-if=
"summaryBox"
>
<
text>
{{
summaryBox
}}
</text
>
<
view
class=
"text-wrap"
>
{{
summaryBox
}}
</view
>
</view>
<view
class=
"dataBox"
v-if=
"dataList"
>
<
strong>
¥
{{
dataList
.
coursePrice
}}
</strong
>
<
strong
v-if=
"dataList.coursePrice == 0"
>
免费
</strong
>
<
view
class=
"price"
>
¥
{{
dataList
.
coursePrice
}}
</view
>
<
text
v-if=
"dataList.coursePrice == 0"
>
免费
</text
>
<text
v-if=
"dataList.coursePrice != 0"
>
{{
dataList
.
salesNumber
}}
人购买
</text>
</view>
<view
class=
"tagListBox"
v-if=
"tagList || fileLecturerId"
>
...
...
@@ -101,36 +101,46 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.itemContent
{
box-sizing
:
border-box
;
display
:
flex
;
justify-content
:
flex-start
;
height
:
100%
;
width
:
100%
;
.thumbnailBox
{
width
:
300
rpx
;
box-sizing
:
border-box
;
flex-basis
:
300
rpx
;
margin-right
:
26
rpx
;
align-items
:
center
;
width
:
200
rpx
;
flex
:
0
0
auto
;
image
{
max-width
:
100%
;
width
:
100%
;
height
:
auto
;
}
}
.courseDetailBox
{
width
:
100%
;
flex
:
1
;
color
:
#333
;
height
:
auto
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
.title
{
//
flex
:
1
;
display
:
flex
;
max-width
:
260
rpx
;
//
justify-content
:
space-between
;
//
align-items
:
center
;
//
max-width
:
260
rpx
;
//
width
:
0
;
//
flex-basis
:
100
rpx
;
font-size
:
32
rpx
;
//
overflow
:
hidden
;
//
text-overflow
:
ellipsis
;
//
white-space
:
nowrap
;
.detailBtn
{
font-size
:
24
rpx
;
color
:
#4A4A4A
;
...
...
@@ -142,19 +152,32 @@
}
.summaryBox
{
//
overflow
:
hidden
;
//
text-overflow
:
ellipsis
;
//
white-space
:
nowrap
;
width
:
100%
;
font-size
:
24
rpx
;
//
margin
:
10
rpx
0
;
display
:
flex
;
.text-wrap
{
white-space
:
pre-wrap
;
word-break
:
break-word
;
}
text
{
margin-right
:
20
rpx
;
}
}
.dataBox
{
strong
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
.price
{
width
:
150
rpx
;
color
:
#F15A1F
;
font-size
:
30
rpx
;
margin
:
10
rpx
20
rpx
10
rpx
0
;
font-weight
:
600
;
}
text
{
...
...
components/login/login.vue
View file @
0e6970cd
<
template
>
<view
class=
"wrapper"
>
<view
v-if=
"loginType=='resetpw'"
@
click=
"rpsdlogin()"
class=
"psdlogin"
>
<view
v-if=
"loginType=='resetpw'
|| goBack
"
@
click=
"rpsdlogin()"
class=
"psdlogin"
>
<image
style=
"width: 40rpx;height: 40rpx;"
src=
"../../static/rpsloging.png"
mode=
""
></image>
</view>
<view
class=
"logo"
>
<image
:src=
"imgSrc"
alt=
"logo"
srcset=
""
class=
"iconBox"
mode=
"widthFix"
></image>
<view>
欢迎登录使用
{{
companyName
}}
APP
</view>
<!--
<view>
欢迎登录使用
{{
companyName
}}
APP
</view>
-->
<view>
欢迎登录使用
{{
companyName
}}
</view>
</view>
<view
class=
"content"
>
<view
class=
"login_title"
>
...
...
@@ -67,7 +68,7 @@
</view>
<view
class=
"login_type"
>
<text
@
click=
"loginType='visitor';initForm();loginIn(1)"
>
游客
</text>
<
text
@
click=
"loginType = 'agentlogin';loginTypeName = '管理账号登录';"
>
代理商
</text
>
<
!--
<text
@
click=
"loginType = 'agentlogin';loginTypeName = '管理账号登录';"
>
代理商
</text>
--
>
</view>
</view>
</view>
...
...
@@ -101,16 +102,59 @@
agreeFlag
:
false
,
userId
:
null
,
imgSrc
:
companyInfo
.
companyLogo
,
fileType
:
null
fileType
:
null
,
goBack
:
true
}
},
methods
:
{
c_agreeFlag
(){
this
.
agreeFlag
=!
this
.
agreeFlag
;
},
rpsdlogin
(){
this
.
loginType
=
'codelogin'
},
// rpsdlogin(){
// if(this.loginType== 'resetpw'){
// this.loginType= 'codelogin'
// return
// }else {
// // uni.navigateBack({ delta: 1 });
// const pages = getCurrentPages();
// console.log('pages',pages);
// if (pages.length > 1) {
// uni.navigateBack({ delta: 1 });
// }
// }
// },
rpsdlogin
()
{
if
(
this
.
loginType
==
'resetpw'
)
{
this
.
loginType
=
'codelogin'
;
return
;
}
// 获取跳转来源(通过路由参数)
const
pages
=
getCurrentPages
();
const
currentPage
=
pages
[
pages
.
length
-
1
];
const
from
=
currentPage
.
options
.
from
;
// 获取 url 中的 from 参数
console
.
log
(
'currentPage'
,
currentPage
);
// 从 TabBar 页跳转过来,用 switchTab 返回
if
(
from
===
'index'
)
{
uni
.
switchTab
({
url
:
'/pages/index/index'
})
}
else
if
(
from
===
'personalCenter'
)
{
uni
.
switchTab
({
url
:
'/pages/personalCenter/personalCenter'
})
}
else
if
(
pages
.
length
>
1
)
{
// 从普通页跳转过来,且页面栈中有上一页,直接返回
uni
.
navigateBack
({
delta
:
1
});
}
else
{
// 默认情况(如直接打开登录页),跳转到首页
uni
.
switchTab
({
url
:
'/pages/index/index'
});
}
},
getFile
(
type
){
uni
.
navigateTo
({
url
:
`/components/clause/clause?type=
${
type
}
`
...
...
@@ -344,7 +388,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.psdlogin
{
margin
:
40
rpx
;
width
:
40
rpx
;
...
...
@@ -353,6 +397,7 @@
}
.wrapper
{
background
:
#20279B
;
position
:
relative
;
overflow
:
auto
;
height
:
100vh
;
.logo{
...
...
components/search/search.vue
View file @
0e6970cd
<
template
>
<view
class=
"search"
>
<input
class=
"searchInput"
type=
"text"
name=
""
id=
""
v-model=
"queryName"
@
confirm=
"searchBtn()"
/>
<!--
<input
class=
"searchInput"
type=
"text"
name=
""
id=
""
v-model=
"queryName"
@
confirm=
"searchBtn()"
/>
-->
<input
class=
"searchInput"
type=
"text"
name=
""
id=
""
v-model=
"localQuery"
@
confirm=
"searchBtn()"
@
input=
"handleInput"
/>
<text
class=
"iconfont icon-sousuo"
@
click=
"searchBtn()"
></text>
<text
class=
"iconfont icon-xiaoxi"
></text>
<text
class=
"system_msg"
@
click=
"jumpToSystemMsg()"
>
{{
messageUnreadCount
}}
</text>
...
...
@@ -11,19 +27,33 @@
import
api
from
"../../api/api"
;
import
common
from
'../../common/common'
;
export
default
{
props
:[
'isSearch'
,
'userId'
],
props
:[
'isSearch'
,
'userId'
,
'initialQuery'
],
data
(){
return
{
messageUnreadCount
:
null
,
queryName
:
null
queryName
:
null
,
localQuery
:
this
.
initialQuery
||
''
,
}
},
name
:
'search'
,
components
:{},
onLoad
(
options
){
this
.
queryName
=
options
.
queryName
;
watch
:
{
initialQuery
:
{
immediate
:
true
,
// 立即触发
handler
(
newVal
)
{
this
.
localQuery
=
newVal
||
''
;
// 处理 null/undefined
}
}
},
methods
:{
// 新增方法:允许父组件重置搜索词
resetSearch
()
{
this
.
localQuery
=
''
;
},
handleInput
(
e
)
{
this
.
localQuery
=
e
.
detail
.
value
;
},
jumpToSystemMsg
(){
if
(
this
.
userId
){
uni
.
navigateTo
({
...
...
@@ -50,16 +80,31 @@
searchBtn
(){
if
(
this
.
isSearch
==
1
){
//掉查询
this
.
$emit
(
"send"
,
this
.
queryName
)
}
else
{
//有参数就掉查询否则直接跳转到课程列表页
if
(
this
.
queryName
){
uni
.
setStorageSync
(
'queryName'
,
this
.
queryName
)
}
// this.$emit("send",this.queryName)
this
.
$emit
(
"send"
,
this
.
localQuery
);
}
else
{
this
.
$emit
(
"update:initialQuery"
,
this
.
localQuery
);
// 新增
uni
.
setStorageSync
(
'queryName'
,
this
.
localQuery
);
uni
.
switchTab
({
url
:
'/pages/courselist/courselist'
})
}
url
:
'/pages/courselist/courselist'
});
}
// else{
// //有参数就掉查询否则直接跳转到课程列表页
// if(this.queryName){
// uni.setStorageSync('queryName', this.localQuery);
// // uni.setStorageSync('queryName',this.queryName)
// }
// uni.switchTab({
// url:'/pages/courselist/courselist'
// })
// }
}
},
mounted
()
{
...
...
components/unipopup/loginPopup.vue
View file @
0e6970cd
...
...
@@ -5,7 +5,7 @@
<view
class=
"loginPopupBox"
>
<view
class=
"loginPopupTitle"
>
<view>
<text>
预约课程
</text>
<text>
产品预约
</text>
</view>
<view
class=
"iconGuanbi"
>
<text
@
click=
"canle"
class=
"iconfont icon-guanbi"
></text>
...
...
pages.json
View file @
0e6970cd
...
...
@@ -21,7 +21,7 @@
},
{
"path"
:
"pages/courseDetail/courseDetail"
,
"style"
:
{
"navigationBarTitleText"
:
"
课程
详情"
,
"navigationBarTitleText"
:
"
产品
详情"
,
"enablePullDownRefresh"
:
false
,
"app-plus"
:
{
"softinputMode"
:
"adjustResize"
...
...
@@ -187,7 +187,7 @@
},
{
"path"
:
"pages/saleCourseLists/saleCourseLists"
,
"style"
:
{
"navigationBarTitleText"
:
"销售
课程
"
,
"navigationBarTitleText"
:
"销售
中心
"
,
"enablePullDownRefresh"
:
false
}
},
{
...
...
@@ -518,7 +518,7 @@
"pagePath"
:
"pages/product/product"
,
//
页面路径,必须在
pages
中先定义
"iconPath"
:
"static/tabbar/sfp.png"
,
//
图片路径,icon
大小限制为
40
kb,建议尺寸为
81
px
*
81
px
"selectedIconPath"
:
"static/tabbar/sfp_active.png"
,
//
选中时的图片路径
"text"
:
"
SFP智能财策
"
//
tab
上按钮文字
"text"
:
"
金融工具
"
//
tab
上按钮文字
},
{
//
最少
2
个、最多
5
个
tab
"pagePath"
:
"pages/courselist/courselist"
,
//
页面路径,必须在
pages
中先定义
...
...
pages/afterSaleDetail/afterSaleDetail.vue
View file @
0e6970cd
...
...
@@ -139,7 +139,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.top{
...
...
pages/afterSales/afterSales.vue
View file @
0e6970cd
...
...
@@ -60,7 +60,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.top{
...
...
pages/announcement/announcement.vue
View file @
0e6970cd
...
...
@@ -66,7 +66,7 @@
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
display
:
flex
;
height
:
80
rpx
;
...
...
pages/announcement/announcement_detail.vue
View file @
0e6970cd
...
...
@@ -59,7 +59,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
display
:
flex
;
height
:
80
rpx
;
...
...
pages/application-process/basic-info.vue
View file @
0e6970cd
...
...
@@ -115,7 +115,7 @@
</view>
<view
class=
"contentItem"
>
<text>
居住地址
</text>
<view><input
type=
"text"
class=
"form-control"
placeholder=
"请
选择
"
v-model=
"applyParam.liveAddress"
<view><input
type=
"text"
class=
"form-control"
placeholder=
"请
输入
"
v-model=
"applyParam.liveAddress"
:disabled=
"this.applyParam.approvalStatus!= 0 && this.applyParam.approvalStatus != 2"
/>
</view>
</view>
...
...
pages/applyDropClass/applyDropClass.vue
View file @
0e6970cd
...
...
@@ -108,6 +108,7 @@
});
},
bindPickerChange
(
e
){
console
.
log
(
'执行了'
);
this
.
dropIndex
=
e
.
detail
.
value
;
},
showModal
(){
...
...
@@ -206,7 +207,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
padding
:
10
rpx
20
rpx
;
height
:
100%
;
...
...
pages/authentication-query/authentication-query.vue
View file @
0e6970cd
...
...
@@ -102,7 +102,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.wrapper
{
padding
:
60
rpx
30
rpx
;
.content{
...
...
pages/authentication-query/authentication-result.vue
View file @
0e6970cd
...
...
@@ -109,7 +109,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.others
{
padding
:
30
rpx
;
margin-top
:
30
rpx
;
...
...
pages/certifyDetail/certifyDetail.vue
View file @
0e6970cd
...
...
@@ -184,7 +184,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
//
padding-top
:
40
rpx
;
.certifyIntro{
...
...
pages/certifyDetail/uploadinformation.vue
View file @
0e6970cd
...
...
@@ -188,7 +188,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
width
:
100vw
;
padding-top
:
80
rpx
;
...
...
pages/commonDetail/commonDetail.vue
View file @
0e6970cd
...
...
@@ -140,6 +140,6 @@
}
</
script
>
<
style
>
<
style
lang=
"scss"
scoped
>
</
style
>
pages/courseDetail/courseDetail.vue
View file @
0e6970cd
...
...
@@ -45,7 +45,7 @@
<!-- 课程详情图 -->
<view
class=
"courseTitleContent"
>
<view
class=
"courseTitle"
>
<view
class=
""
style=
"width:
7
0%;"
>
<view
class=
""
style=
"width:
10
0%;"
>
<h4>
{{
courseInfo
.
fileTitle
}}
</h4>
</view>
<view
class=
"shareF"
>
...
...
@@ -75,12 +75,10 @@
<!-- 课程介绍,相关课程,讲师 -->
<view
class=
"courseProBox"
>
<!-- tab区域 -->
<view
class=
"tab"
>
<
!--
<
view
class=
"tab"
>
<text
:class=
"
{'actived': tabType===1}" @click="switchTab(1)">详情
</text>
<!--
<text
:class=
"
{'actived': tabType===2}" @click="switchTab(2)">相关课程
</text>
-->
<!--
<text
:class=
"
{'actived': tabType===4}" @click="switchTab(4)">服务流程
</text>
-->
<text
:class=
"
{'actived': tabType===3}" @click="switchTab(3)">讲师
</text>
</view>
</view>
-->
<!-- tabContent区域 -->
<view
class=
"tabContent"
>
<!-- 课程介绍 -->
...
...
@@ -431,7 +429,8 @@
'&coursesharing=1'
+
'&serialsNo='
+
nanoid
()
+
'&shareCode='
+
shareCode
+
'&shareUserId='
+
this
.
userId
+
'&jumpUrl='
+
jumptime
+
"&"
,
title
:
this
.
courseInfo
.
fileTitle
,
summary
:
`加入我们开启学习之旅`
,
// summary: `加入我们开启学习之旅`,
summary
:
this
.
courseInfo
.
fileSynopsis
,
imageUrl
:
this
.
courseInfo
.
displayImage
,
fileId
:
this
.
fileId
,
shareCode
:
shareCode
...
...
@@ -578,6 +577,11 @@
}
else
{
this
.
isRenderVideo
=
true
;
}
// #ifdef H5
const
shareCode
=
nanoid
()
+
this
.
userId
const
jumptime
=
Date
.
parse
(
new
Date
())
/
1000
this
.
getshareData2
(
shareCode
,
jumptime
,
0
)
// #endif
}
})
},
...
...
@@ -780,13 +784,17 @@
}
})
},
getshareData2
(
shareCode
,
jumptime
)
{
getshareData2
(
shareCode
,
jumptime
,
type
=
1
)
{
let
newLink
=
type
==
1
?
shareURL
+
"/pages/courseDetail/courseDetail?fileId="
+
this
.
fileId
+
'&coursesharing=1'
+
'&serialsNo='
+
nanoid
()
+
'&shareCode='
+
shareCode
+
'&shareUserId='
+
this
.
userId
+
'&jumpUrl='
+
jumptime
+
"&"
:
shareURL
+
"/pages/courseDetail/courseDetail?fileId="
+
this
.
fileId
console
.
log
(
'this.courseInfo'
,
this
.
courseInfo
);
let
data
=
{
title
:
this
.
courseInfo
.
fileTitle
,
desc
:
'加入我们开启学习之旅'
,
link
:
shareURL
+
"/pages/courseDetail/courseDetail?fileId="
+
this
.
fileId
+
'&coursesharing=1'
+
'&serialsNo='
+
nanoid
()
+
'&shareCode='
+
shareCode
+
'&shareUserId='
+
this
.
userId
+
'&jumpUrl='
+
jumptime
+
"&"
,
//分享链接
// desc: '加入我们开启学习之旅',
desc
:
this
.
courseInfo
.
fileSynopsis
,
link
:
newLink
,
//分享链接
imgUrl
:
this
.
courseInfo
.
displayImage
,
//图片
}
//安卓机型获取当前页面路径
...
...
@@ -802,14 +810,19 @@
}
}
// let url = window.location.href.split('#')[0]
hshare
(
data
,
url
)
this
.
submitsuessc
(
shareCode
,
jumptime
)
if
(
type
==
1
){
this
.
submitsuessc
(
shareCode
,
jumptime
)
}
},
// H5 自定义分享
getshareData
()
{
let
data
=
{
title
:
this
.
courseInfo
.
fileTitle
,
desc
:
'加入我们开启学习之旅'
,
// desc: '加入我们开启学习之旅',
desc
:
this
.
courseInfo
.
fileSynopsis
,
link
:
window
.
location
.
href
,
//分享链接
imgUrl
:
this
.
courseInfo
.
displayImage
,
//图片
}
...
...
@@ -932,6 +945,7 @@
if
(
!
this
.
realName
){
this
.
queryInfo
();
}
// this.switchTab(1);
},
onShow
()
{
...
...
@@ -942,6 +956,7 @@
this
.
tabType
=
1
;
this
.
courseDetail
();
uni
.
setStorageSync
(
'entryUrl'
,
window
.
location
.
href
.
split
(
'#'
)[
0
])
},
mounted
()
{
let
_this
=
this
;
...
...
@@ -993,7 +1008,13 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
width
:
100%
;
height
:
auto
;
box-sizing
:
border-box
;
//
padding
:
20
rpx
;
}
page
{
padding
:
0
;
}
...
...
@@ -1042,7 +1063,9 @@
}
.courseTitleContent
{
height
:
150
rpx
;
box-sizing
:
border-box
;
width
:
100%
;
height
:
auto
;
background-color
:
#fff
;
margin-bottom
:
10
rpx
;
padding
:
20
rpx
0
rpx
20
rpx
30
rpx
;
...
...
@@ -1052,7 +1075,7 @@
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
16
rpx
;
box-sizing
:
border-box
;
h4
{
font-size
:
40
rpx
;
}
...
...
pages/courselist/courselist.vue
View file @
0e6970cd
<
template
>
<view
class=
"pad"
>
<!--搜索组件-->
<search
:isSearch=
"1"
:userId =
"userId"
@
send=
"getCourseList"
></search>
<search
:isSearch=
"1"
:userId =
"userId"
@
send=
"getCourseList"
:initialQuery=
"queryName"
></search>
<!--轮播组件-->
<view
class=
"banner"
>
<view
class=
"uni-margin-wrap"
>
<carousel
:carouselList=
"fileUploadItemCFFPList"
></carousel>
</view>
</view>
<h4
v-if=
"cffpCourseInfos.length
<
=
0
"
class=
"noListTip"
>
暂无
课程
列表
</h4>
<h4
v-if=
"cffpCourseInfos.length
<
=
0
"
class=
"noListTip"
>
暂无
产品
列表
</h4>
<view
class=
"ulBox"
v-if=
"cffpCourseInfos.length>0"
>
<view
class=
"liBox"
v-for=
"item in cffpCourseInfos"
:key=
"item.fileId"
@
click=
"goDetail(item)"
>
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" :tagList="{v1:item.fileLecturerRanks,v2:item.fileLecturerName}">
</course-item>
<!-- :tagList="
{v1:item.fileLecturerRanks,v2:item.fileLecturerName}" -->
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}"
>
</course-item>
</view>
</view>
</view>
...
...
@@ -43,9 +55,14 @@
carousel
,
search
},
onLoad
(){
this
.
queryName
=
uni
.
getStorageSync
(
'queryName'
);
},
onLoad
()
{
this
.
queryName
=
uni
.
getStorageSync
(
'queryName'
)
||
''
;
},
onShow
()
{
this
.
queryName
=
uni
.
getStorageSync
(
'queryName'
)
||
''
;
this
.
courseList
();
},
methods
:{
goDetail
(
item
){
uni
.
navigateTo
({
...
...
@@ -53,6 +70,7 @@
});
},
courseList
(){
const
param
=
{
queryName
:
this
.
queryName
}
...
...
@@ -70,6 +88,7 @@
}
},
getCourseList
(
res
){
console
.
log
(
'res'
,
res
);
this
.
queryName
=
res
;
this
.
courseList
()
},
...
...
@@ -97,13 +116,18 @@
}
this
.
courseList
();
},
onTabItemTap
()
{
// 通过tabbar切换时清空storage
uni
.
removeStorageSync
(
'queryName'
);
},
onHide
()
{
this
.
queryName
=
''
uni
.
removeStorageSync
(
'queryName'
)
}
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.ulBox
,
.liBox
{
padding-bottom
:
30
rpx
;
display
:
flex
;
...
...
@@ -120,11 +144,13 @@
}
.pad
{
padding
:
0
30
rpx
20
rpx
30
rpx
;
.banner
{
border-radius
:
20
rpx
;
overflow
:
hidden
;
margin-bottom
:
30
rpx
;
.swiper{
height
:
2
0
0
rpx
;
height
:
2
5
0
rpx
;
}
}
}
...
...
pages/dropLists/dropLists.vue
View file @
0e6970cd
...
...
@@ -68,7 +68,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
margin-bottom
:
20
rpx
;
...
...
pages/exchangeRecord/exchangeRecord.vue
View file @
0e6970cd
...
...
@@ -80,7 +80,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.top{
...
...
pages/index/index.vue
View file @
0e6970cd
...
...
@@ -8,10 +8,22 @@
<text
class=
"iconfont icon-31tishi"
@
click=
"getIntroduce('center')"
></text>
</view>
<!--搜索组件-->
<search
:isSearch=
"0"
:userId=
"userId"
></search>
<!--
<search
:isSearch=
"0"
:userId=
"userId"
></search>
-->
<search
ref=
"searchRef"
:isSearch=
"0"
:userId=
"userId"
:initialQuery
.
sync=
"searchQuery"
v-if=
"showSearch"
></search>
<!--轮播组件-->
<view
class=
"banner"
>
<view
class=
"uni-margin-wrap"
>
<carousel
:carouselList=
"cffpUserInfo.fileUploadItemList"
></carousel>
</view>
</view>
...
...
@@ -40,16 +52,17 @@
</view>
<view
class=
"course_content"
>
<view
class=
"tag"
>
<h4>
精品课程
</h4>
<h4>
推荐产品
</h4>
<view
@
click=
"goToCourselist()"
>
更多
<text
class=
"iconfont icon-youjiantou"
></text></view>
</view>
<!--
<courselist
:onlyShowList=
"0"
></courselist>
-->
<view
class=
"ulBox"
v-if=
"cffpCourseInfos.length>0"
>
<view
class=
"liBox"
v-for=
"item in cffpCourseInfos"
:key=
"item.fileId"
@
click=
"goDetail(item)"
>
<!-- :tagList="
{v1:item.fileLecturerRanks,v2:item.fileLecturerName}" -->
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}"
:tagList="{v1:item.fileLecturerRanks,v2:item.fileLecturerName}"
>
</course-item>
>
</course-item>
</view>
</view>
</view>
...
...
@@ -76,7 +89,8 @@
export
default
{
data
()
{
return
{
showSearch
:
true
,
searchQuery
:
''
,
companyFullName
:
companyInfo
.
companyFullName
,
cffpCourseInfos
:
[],
x
:
0
,
...
...
@@ -106,13 +120,13 @@
link
:
'/pages/application-process/basic-info'
,
isOpen
:
true
},
{
key
:
'03'
,
name
:
'学习认证'
,
icon
:
'learningCertify'
,
link
:
'/pages/learnCertify/learnCertify'
,
isOpen
:
true
},
//
{
//
key: '03',
//
name: '学习认证',
//
icon: 'learningCertify',
//
link: '/pages/learnCertify/learnCertify',
//
isOpen: true
//
},
{
key
:
'04'
,
name
:
'邀请加盟'
,
...
...
@@ -121,27 +135,27 @@
isOpen
:
true
,
isJoin
:
true
},
{
key
:
'05'
,
name
:
'我的分享'
,
icon
:
'share'
,
link
:
'/pages/myShare/myShare'
,
isOpen
:
true
},
{
key
:
'06'
,
name
:
'我的团队'
,
icon
:
'team'
,
link
:
'/pages/personalCenter/myTeam'
,
isOpen
:
true
},
{
key
:
'07'
,
name
:
'更多功能'
,
icon
:
'more'
,
link
:
'/pages/personalCenter/personalCenter'
,
isOpen
:
true
}
//
{
//
key: '05',
//
name: '我的分享',
//
icon: 'share',
//
link: '/pages/myShare/myShare',
//
isOpen: true
//
},
//
{
//
key: '06',
//
name: '我的团队',
//
icon: 'team',
//
link: '/pages/personalCenter/myTeam',
//
isOpen: true
//
},
//
{
//
key: '07',
//
name: '更多功能',
//
icon: 'more',
//
link: '/pages/personalCenter/personalCenter',
//
isOpen: true
//
}
],
cffpUserInfo
:
{
address
:
''
,
...
...
@@ -159,7 +173,7 @@
shareId
:
null
,
kefu
:
'../../static/kefu.png'
,
loginornot
:
true
,
queryName
:
''
queryName
:
''
,
}
},
components
:
{
...
...
@@ -172,8 +186,17 @@
onShow
()
{
this
.
init
();
this
.
showSearch
=
false
;
this
.
$nextTick
(()
=>
{
this
.
showSearch
=
true
;
this
.
searchQuery
=
''
;
});
},
onLoad
()
{
onLoad
(
options
)
{
if
(
options
.
clearFlag
){
uni
.
setStorageSync
(
'loginType'
,
'visitor'
);
}
//如果用户在其他的地方快捷登录,没有返回到首页,执行此监听方法
uni
.
$on
(
'loginUpdate'
,()
=>
{
this
.
queryAreaCenterInfo
();
...
...
@@ -184,8 +207,13 @@
this
.
courseList
();
}
},
beforeDestroy
()
{
// 清除事件监听
uni
.
$off
(
'loginUpdate'
,
this
.
queryAreaCenterInfo
);
},
methods
:
{
init
()
{
if
(
uni
.
getStorageSync
(
'isLogin'
))
{
let
loginType
=
uni
.
getStorageSync
(
'loginType'
)
...
...
@@ -254,8 +282,11 @@
icon
:
'none'
});
uni
.
clearStorageSync
();
uni
.
redirectTo
({
url
:
'/components/login/login'
// uni.redirectTo({
// url: '/components/login/login'
// })
uni
.
navigateTo
({
url
:
'/components/login/login?from=index'
})
return
false
}
...
...
@@ -375,6 +406,10 @@
.banner
{
border-radius
:
20
rpx
;
overflow
:
hidden
;
margin-bottom
:
30
rpx
;
.swiper{
height
:
250
rpx
;
}
}
}
...
...
@@ -463,6 +498,7 @@
.ulBox
{
flex-direction
:
column
;
width
:
100%
;
}
.liBox
{
...
...
@@ -470,6 +506,7 @@
border-radius
:
20
rpx
;
margin-bottom
:
10
rpx
;
padding
:
10
rpx
;
width
:
100%
;
}
.description
{
...
...
pages/invitationRegister/invitationRegister.vue
View file @
0e6970cd
...
...
@@ -63,7 +63,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100vh
;
background
:
url('../../static/app-plus/registerBg.png')
100%
100%
;
...
...
pages/invitationRegister/invitationlogin.vue
View file @
0e6970cd
...
...
@@ -160,7 +160,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
height
:
100vh
;
background
:
#20279B
;
...
...
pages/inviteJoin/inviteJoin.vue
View file @
0e6970cd
...
...
@@ -368,7 +368,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
position
:
relative
;
height
:
100vh
;
...
...
pages/learnCertify/learnCertify.vue
View file @
0e6970cd
...
...
@@ -161,7 +161,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.certify_content
{
background
:
#F1F6FF
;
border-radius
:
24
rpx
24
rpx
0
0
;
...
...
pages/learningStatistics/learningStatistics.vue
View file @
0e6970cd
...
...
@@ -230,7 +230,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.dataCountBox{
...
...
pages/myCertify/myCertify.vue
View file @
0e6970cd
...
...
@@ -150,7 +150,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
position
:
relative
;
height
:
100%
;
...
...
pages/myLearning/myLearning.vue
View file @
0e6970cd
...
...
@@ -94,7 +94,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
position
:
relative
;
height
:
100%
;
...
...
pages/myPoints/myPoints.vue
View file @
0e6970cd
...
...
@@ -50,7 +50,7 @@
<h4>
积分明细
</h4>
</view>
<view
class=
"point_content_list"
>
<view>
课程大类
</view>
<view>
产品名称
</view>
<view>
积分来源
</view>
<view>
获得积分
</view>
<view>
操作
</view>
...
...
@@ -78,7 +78,7 @@
maxDate
:
`
${
new
Date
().
getFullYear
()}
-
${
new
Date
().
getMonth
()
+
1
}
`
,
navList
:[{
name
:
'日积分'
,
timeFlag
:
'D'
},{
name
:
'月积分'
,
timeFlag
:
'M'
},{
name
:
'年积分'
,
timeFlag
:
'Y'
}],
timeFlag
:
'D'
,
pointList
:[{
name
:
'课程大类'
,
id
:
1
,
source
:
'销售收入'
,
classify
:
'家组信托'
,
score
:
100
}],
//
pointList:[{name:'课程大类',id:1,source:'销售收入',classify:'家组信托',score:100}],
sumCommissionAmount
:
''
,
//总积分
nowSumCommissionAmount
:
''
,
//当前(日月年)积分
prePercent
:
''
,
//比前日、上月,上年多或少的百分比数据
...
...
@@ -175,7 +175,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
.top{
background
:
linear-gradient
(
179deg
,
#F8B588
0%
,
rgba
(
255
,
239
,
216
,
0.2
)
100%
);
...
...
pages/myPoints/pointsDetail.vue
View file @
0e6970cd
...
...
@@ -174,7 +174,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
.top{
padding
:
30
rpx
;
...
...
pages/myShare/myShare.vue
View file @
0e6970cd
...
...
@@ -170,7 +170,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
...
...
pages/orderConfirm/orderConfirm.vue
View file @
0e6970cd
...
...
@@ -95,7 +95,7 @@
<h3>
{{popupTitle}}
</h3>
<i
class=
"iconfont icon-guanbi"
@
click=
"closePopup(1)"
></i>
</view>
<view
v-if=
"popupType===1"
><text>
1积分=1元,积分抵扣如同现金,所有
课程
均可使用.
</text></view>
<view
v-if=
"popupType===1"
><text>
1积分=1元,积分抵扣如同现金,所有
产品
均可使用.
</text></view>
<view
v-if=
"popupType===2"
>
<view
class=
"deductionInfoItem"
:class=
"{'actived':isDeduction == 'true'}"
@
click=
"selectDeduction(true)"
>
<view
style=
"display: flex;"
>
...
...
@@ -157,7 +157,7 @@
<view
class=
"tips"
>
<!-- <view class="text-center">请点击右上角菜单</view> -->
<view
style=
"line-height: 60rpx;"
>
戳这里,点击
<text
class=
"iconfont icon-liulanqi"
></text>
按钮,使用系统浏览器打开页面完成支付,完成后请返回微信,到【销售
课程
】下,查看购买订单。
</view>
按钮,使用系统浏览器打开页面完成支付,完成后请返回微信,到【销售
中心
】下,查看购买订单。
</view>
</view>
</view>
</view>
...
...
@@ -528,7 +528,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
position
:
relative
;
height
:
95vh
;
...
...
pages/orderDetail/orderDetail.vue
View file @
0e6970cd
...
...
@@ -28,6 +28,7 @@
<
script
>
import
api
from
"@/api/api"
;
import
common
from
"@/common/common"
;
import
dataHandling
from
"@/util/dataHandling"
;
export
default
{
data
()
{
return
{
...
...
@@ -74,14 +75,14 @@
alias
:
'userName'
,
pageArea
:
1
},
{
id
:
6
,
name
:
'商品讲师'
,
value
:
'/'
,
type
:
'string'
,
alias
:
'lecturerName'
,
pageArea
:
1
},
//
{
//
id: 6,
//
name: '商品讲师',
//
value: '/',
//
type: 'string',
//
alias: 'lecturerName',
//
pageArea: 1
//
},
{
id
:
7
,
name
:
'订单现价'
,
...
...
@@ -164,12 +165,20 @@
api
.
userCourseInfo
(
param
).
then
(
res
=>
{
if
(
res
[
'success'
])
{
const
data
=
this
.
orderDetail
=
res
[
'data'
][
'orderDetail'
];
if
(
this
.
orderDetail
.
effectiveEndDate
){
this
.
orderDetail
.
effectiveEndDate
=
dataHandling
.
dateFormat
(
this
.
orderDetail
.
effectiveEndDate
)
}
if
(
this
.
orderDetail
.
orderConfirmDate
){
this
.
orderDetail
.
orderConfirmDate
=
dataHandling
.
dateFormat
(
this
.
orderDetail
.
orderConfirmDate
)
}
this
.
fileId
=
data
.
fileId
;
Object
.
keys
(
data
).
map
((
key
,
item
)
=>
{
this
.
orderInfoList
.
forEach
(
val
=>
{
if
(
val
.
alias
==
key
)
{
val
.
value
=
data
[
key
];
}
})
})
}
...
...
@@ -206,7 +215,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
...
...
pages/orderStatus/orderStatus.vue
View file @
0e6970cd
...
...
@@ -18,13 +18,14 @@
<view
class=
"courlistBox"
>
<view
class=
"course_content"
>
<view
class=
"tag"
>
<h4>
精品课程
</h4>
<h4>
推荐产品
</h4>
<view
@
click=
"goToCourselist()"
>
更多
<text
class=
"iconfont icon-youjiantou"
></text></view>
<!--
<view
v-if=
"this.isRedirect == 1"
@
click=
"goToCourselist()"
>
更多
<text
class=
"iconfont icon-youjiantou"
></text></view>
-->
</view>
<view
class=
"ulBox"
v-if=
"cffpCourseInfos.length>0"
>
<view
class=
"liBox"
v-for=
"item in cffpCourseInfos"
:key=
"item.fileId"
@
click=
"goDetail(item)"
>
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" :tagList="{v1:item.fileLecturerRanks,v2:item.fileLecturerName}">
</course-item>
<!-- :tagList="
{v1:item.fileLecturerRanks,v2:item.fileLecturerName}" -->
<course-item
:thumbnailPath=
"item.displayImage"
:title=
"item.fileTitle"
:summaryBox=
"item.fileSynopsis"
:dataList=
"
{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" >
</course-item>
</view>
</view>
</view>
...
...
@@ -124,7 +125,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.ulBox
{
flex-direction
:
column
;
}
...
...
pages/personalCenter/accountoperation/aboutcffp.vue
View file @
0e6970cd
...
...
@@ -85,7 +85,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
width
:
100%
;
...
...
pages/personalCenter/accountoperation/confirmResetpassword.vue
View file @
0e6970cd
...
...
@@ -84,7 +84,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
display
:
flex
;
height
:
80
rpx
;
...
...
pages/personalCenter/accountoperation/phonebinding.vue
View file @
0e6970cd
...
...
@@ -22,5 +22,5 @@
}
</
script
>
<
style
>
<
style
lang=
"scss"
scoped
>
</
style
>
pages/personalCenter/myTeam.vue
View file @
0e6970cd
...
...
@@ -62,7 +62,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
background
:
#FFFFFF
;
...
...
pages/personalCenter/personalCenter.vue
View file @
0e6970cd
...
...
@@ -107,8 +107,8 @@
},
{
id
:
'02'
,
categoryName
:
'活动管理'
,
children
:[
{
title
:
'我的学习'
,
icon
:
'myLearning'
,
link
:
'/pages/myLearning/myLearning'
,
isOpen
:
true
,
isShow
:
true
},
{
title
:
'学习认证'
,
icon
:
'learningCertify'
,
link
:
'/pages/learnCertify/learnCertify'
,
isOpen
:
true
,
isShow
:
true
,
islogin
:
true
},
//
{title:'我的学习',icon:'myLearning',link:'/pages/myLearning/myLearning',isOpen:true,isShow:true},
//
{title:'学习认证',icon:'learningCertify',link:'/pages/learnCertify/learnCertify',isOpen:true,isShow:true,islogin:true},
{
title
:
'我的分享'
,
icon
:
'share'
,
link
:
'/pages/myShare/myShare'
,
isOpen
:
true
,
isShow
:
true
}
],
},
...
...
@@ -126,9 +126,9 @@
}
],
minorMenuLists
:[
{
title
:
'我的邀请码'
,
icon
:
'shareEcode'
,
link
:
''
,
isOpen
:
true
,
isShow
:
true
},
//
{title:'我的邀请码',icon:'shareEcode',link:'',isOpen:true,isShow:true},
{
title
:
'我的卡包'
,
icon
:
'card'
,
link
:
''
,
isOpen
:
true
,
isShow
:
false
},
{
title
:
'我的认证'
,
icon
:
'myCertify'
,
link
:
'/pages/myCertify/myCertify'
,
isOpen
:
true
,
isShow
:
true
},
//
{title:'我的认证',icon:'myCertify',link:'/pages/myCertify/myCertify',isOpen:true,isShow:true},
{
title
:
'申请修改公司周边'
,
icon
:
'setting'
,
link
:
''
,
isOpen
:
true
,
isShow
:
false
},
{
title
:
'我的消息'
,
icon
:
'message'
,
link
:
'/pages/systemMsg/system_msg'
,
isOpen
:
true
,
isShow
:
true
,
islogin
:
true
},
{
title
:
'系统设置'
,
icon
:
'setting'
,
link
:
'/pages/personalCenter/system/settings'
,
isOpen
:
true
,
isShow
:
true
}
...
...
@@ -180,8 +180,11 @@
duration
:
2000
,
icon
:
'none'
});
// uni.redirectTo({
// url:'/components/login/login?from=personalCenter'
// })
uni
.
redirectTo
({
url
:
'/components/login/login
'
url
:
'/components/login/login?from=personalCenter
'
})
try
{
uni
.
clearStorageSync
();
...
...
@@ -193,8 +196,12 @@
},
// 菜单跳转页面
goDetail
(
item
){
if
(
!
this
.
loginornot
&&
!
item
.
islogin
){
console
.
log
(
'详情方法'
,
item
);
this
.
isLogin
()
return
}
if
(
item
.
isShow
&&
item
.
isOpen
){
if
(
item
.
title
===
'我的邀请码'
){
...
...
@@ -219,6 +226,7 @@
url
:
`
${
item
.
link
}
?levelCode=`
+
this
.
customerBasicInfo
.
levelCode
});
}
else
{
item
.
link
=
`
${
item
.
link
}
?from=personalCenter`
uni
.
navigateTo
({
url
:
item
.
link
});
...
...
@@ -278,7 +286,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
//
padding-bottom
:
160
rpx
;
}
...
...
pages/personalCenter/system/accontsetting.vue
View file @
0e6970cd
...
...
@@ -60,6 +60,6 @@
}
</
script
>
<
style
scoped
>
<
style
lang=
"scss"
scoped
>
</
style
>
pages/personalCenter/system/cancellation.vue
View file @
0e6970cd
...
...
@@ -12,10 +12,10 @@
<text
style=
"font-size: 28rpx;"
>
注销账号后不可恢复,该账号绑定的所有权益、积分、记录等数据也将都被清空且无法恢复,包括:
</text>
</view>
<ul
class=
"tips"
>
<li>
所有积分权益不可使用
</li>
<li>
已购买的课程无法观看
</li>
<li>
已获得认证的证书无法查看
</li>
<li>
学习数据将被清除
</li>
<li>
所有积分权益不可使用
;
</li>
<li>
所有分享数据被清空;
</li>
<li>
所有订单数据被清空;
</li>
<li>
其他未列数据被清空且无法恢复
</li>
</ul>
<view
class=
"footer"
style=
""
>
<view
class=
"footer-submitbtn"
style=
""
@
click=
"sunmit()"
>
...
...
@@ -63,8 +63,10 @@
title
:
'操作成功'
,
icon
:
'none'
});
// 清空全部本地存储
uni
.
clearStorageSync
();
uni
.
redirectTo
({
url
:
'/components/login/login'
url
:
'/components/login/login
?from=index
'
})
}
})
...
...
@@ -73,7 +75,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
padding
:
0
20
rpx
;
}
...
...
pages/personalCenter/system/menulist.vue
View file @
0e6970cd
...
...
@@ -68,7 +68,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.personalInfo
{
background
:
#fff
;
width
:
95%
;
...
...
pages/personalCenter/teamMembers/jurisdiction.vue
View file @
0e6970cd
...
...
@@ -111,7 +111,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
height
:
100%
;
width
:
100vw
;
...
...
pages/personalCenter/teamMembers/members.vue
View file @
0e6970cd
...
...
@@ -71,7 +71,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
height
:
100%
;
width
:
100vw
;
...
...
pages/personalCenter/teamMembers/otherteam.vue
View file @
0e6970cd
...
...
@@ -71,7 +71,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
height
:
100%
;
width
:
100vw
;
...
...
pages/personalCenter/teamMembers/teamMembers.vue
View file @
0e6970cd
...
...
@@ -124,7 +124,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
position
:
relative
;
height
:
100%
;
...
...
pages/personalCenter/teamPerformance/teamPerformance.vue
View file @
0e6970cd
...
...
@@ -208,7 +208,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content
{
width
:
100vw
;
height
:
100%
;
...
...
pages/personalCenter/user-information.vue
View file @
0e6970cd
...
...
@@ -12,8 +12,19 @@
</view>
-->
<view
class=
"band"
>
<view
class=
"contentItem"
>
<!-- @keydown="handleKeyDown"
@compositionstart="isComposing = true"
@compositionend="handleCompositionEnd"
@input="handleInput" -->
<text>
真实名称
</text>
<input
class=
"user-input"
v-model=
"optionForm.realName"
type=
"text"
placeholder=
"请输入姓名"
/>
<input
class=
"user-input"
v-model=
"optionForm.realName"
type=
"text"
placeholder=
"请输入姓名"
maxlength=
"20"
/>
</view>
<view
class=
"contentItem"
>
<text>
昵称
</text>
...
...
@@ -43,6 +54,9 @@
export
default
{
data
()
{
return
{
isComposing
:
false
,
// 敏感词列表(可扩展)
bannedWords
:
[
"admin"
,
"test"
,
"root"
,
"password"
],
companyType
:
companyInfo
.
companyType
,
companyLogo
:
'../../static/myteam/logo.png'
,
dataForm
:
{
...
...
@@ -88,6 +102,55 @@
this
.
optionForm
=
JSON
.
parse
(
options
.
customerBasicInfo
)
},
methods
:
{
handleKeyDown
(
e
)
{
console
.
log
(
'this.isComposing'
,
this
.
isComposing
);
const
key
=
e
.
key
;
if
(
this
.
isComposing
||
[
"Backspace"
,
"Delete"
,
"ArrowLeft"
,
"ArrowRight"
].
includes
(
key
))
return
;
if
(
!
/^
[
a-zA-Z0-9
\u
4e00-
\u
9fa5
]
$/
.
test
(
key
))
{
e
.
preventDefault
();
uni
.
showToast
({
title
:
"请输入汉字"
,
icon
:
"none"
});
}
},
handleInput
(
e
)
{
if
(
this
.
isComposing
)
return
;
// 正在输入拼音,不处理
let
value
=
e
.
detail
.
value
;
// 1. 过滤特殊字符(仅允许英文、数字、汉字)
value
=
value
.
replace
(
/
[^
a-zA-Z0-9
\u
4e00-
\u
9fa5
]
/g
,
""
);
// 2. 检查敏感词
const
hasBannedWord
=
this
.
bannedWords
.
some
(
word
=>
value
.
toLowerCase
().
includes
(
word
.
toLowerCase
())
);
if
(
hasBannedWord
)
{
uni
.
showToast
({
title
:
"包含敏感词汇,请修改"
,
icon
:
"none"
});
value
=
value
.
replace
(
new
RegExp
(
this
.
bannedWords
.
join
(
"|"
),
"gi"
),
""
);
}
// 3. 限制长度(20字符)
if
(
value
.
length
>
20
)
{
value
=
value
.
slice
(
0
,
20
);
uni
.
showToast
({
title
:
"最多输入20个字符"
,
icon
:
"none"
});
}
// 4. 更新数据
this
.
optionForm
.
realName
=
value
;
this
.
$nextTick
(()
=>
this
.
optionForm
.
realName
=
value
);
// iOS 兼容
},
handleCompositionEnd
(
e
)
{
this
.
isComposing
=
false
;
this
.
handleInput
(
e
);
// 拼音输入结束,检查内容
},
goBack
()
{
let
back
=
getCurrentPages
();
if
(
back
&&
back
.
length
>
1
)
{
...
...
@@ -111,18 +174,20 @@
return
;
}
else
if
(
!
common
.
nameValid
(
this
.
optionForm
.
realName
))
{
let
that
=
this
;
uni
.
showModal
({
content
:
'真实姓名不合规,是否继续保存'
,
confirmText
:
'保存'
,
cancelText
:
'取消'
,
success
:
function
(
res
)
{
if
(
res
.
confirm
)
{
that
.
saveUserInfo
();
}
else
{
return
;
}
}
});
uni
.
showToast
({
title
:
'请填写真实姓名'
,
duration
:
2000
,
icon
:
'none'
});
this
.
optionForm
.
realName
=
''
// uni.showModal({
// content: '真实姓名不合规,是否继续保存',
// confirmText: '保存',
// cancelText: '取消',
// success: function (res) {
// if (res.confirm) {
// that.saveUserInfo();
// }else{
// return;
// }
// }
// });
}
else
{
this
.
saveUserInfo
();
}
...
...
@@ -150,6 +215,11 @@
</
script
>
<
style
scoped
>
.input-tip
{
color
:
#ff5a5f
;
font-size
:
12px
;
margin-left
:
10px
;
}
.content
{
width
:
100vw
;
}
...
...
pages/pointsExchange/pointsExchange.vue
View file @
0e6970cd
...
...
@@ -118,7 +118,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
.top{
width
:
100%
;
...
...
pages/pointsExchange/pointsStatus.vue
View file @
0e6970cd
...
...
@@ -94,7 +94,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
.top{
width
:
100%
;
...
...
pages/product/product.vue
View file @
0e6970cd
...
...
@@ -77,7 +77,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.header
{
display
:
flex
;
justify-content
:
center
;
...
...
pages/saleCourseLists/saleCourseLists.vue
View file @
0e6970cd
...
...
@@ -40,8 +40,8 @@
<!-- 分享明细 -->
<view
class=
"saleDetailContent"
>
<view
class=
"courseTab"
>
<text
:class=
"
{'actived':tabType===1}" @click="switchTab(1)">我的
课程
</text>
<text
:class=
"
{'actived':tabType===2}" @click="switchTab(2)">分享
课程
</text>
<text
:class=
"
{'actived':tabType===1}" @click="switchTab(1)">我的
订单
</text>
<text
:class=
"
{'actived':tabType===2}" @click="switchTab(2)">分享
订单
</text>
</view>
<view
class=
"totalCountBox"
>
合计(单):
<text>
{{
userCourseCountNum
}}
</text></view>
<h4
class=
"noListTip"
v-if=
"!userCourses || userCourses.length
<
=
0
&&
tabType=
==1"
>
暂无购买记录!
</h4>
...
...
@@ -62,9 +62,9 @@
</view>
</
template
>
<
template
v-if=
"userCourses && tabType===2"
>
<view
class=
"orderItemDetailBox"
v-for=
"item in userShareCourseOrders"
>
<view
class=
"orderItemDetailBox"
v-for=
"item in userShareCourseOrders"
:key=
"index"
>
<view><text>
订单编号
</text><text>
{{
item
.
orderNo
}}
</text></view>
<view><text>
课程
名称
</text><text>
{{
item
.
fileTitle
}}
</text></view>
<view><text>
产品
名称
</text><text>
{{
item
.
fileTitle
}}
</text></view>
<view><text>
购买人
</text><text>
{{
item
.
userName
}}
</text></view>
<view
class=
"orderDetailLine"
>
<text></text>
...
...
@@ -182,7 +182,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.top{
...
...
pages/shareFriend/shareFriend.vue
View file @
0e6970cd
...
...
@@ -14,6 +14,6 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
</
style
>
pages/systemMsg/system_msg.vue
View file @
0e6970cd
...
...
@@ -99,7 +99,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
display
:
flex
;
height
:
100
rpx
;
...
...
pages/systemMsg/system_msg_detail.vue
View file @
0e6970cd
...
...
@@ -53,7 +53,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
display
:
flex
;
height
:
80
rpx
;
...
...
pages/taxRules/taxRules.vue
View file @
0e6970cd
...
...
@@ -61,7 +61,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.content_wrapper
{
padding
:
30
rpx
;
h4{
...
...
pages/withdrawal/withdrawal.vue
View file @
0e6970cd
...
...
@@ -320,7 +320,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.top
{
width
:
100%
;
text-align
:
center
;
...
...
pages/withdrawal/withdrawalDetail.vue
View file @
0e6970cd
...
...
@@ -90,7 +90,7 @@
}
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.container
{
height
:
100%
;
.top{
...
...
sfp/childEdu/childEdu.vue
View file @
0e6970cd
...
...
@@ -525,7 +525,7 @@
}
</
script
>
<
style
>
<
style
scoped
>
@import
'../sfpCommon.css'
;
@import
url("childEdu.css")
;
</
style
>
util/dataHandling.ts
View file @
0e6970cd
...
...
@@ -34,6 +34,7 @@ export default{
},
// 日期格式化
dateFormat
(
val
:
number
,
format
=
'yyyy-MM-dd hh:mm:ss'
){
console
.
log
(
'val'
,
val
);
if
(
val
){
const
date
=
new
Date
(
val
);
const
year
=
date
.
getFullYear
();
...
...
util/fiveshare.ts
View file @
0e6970cd
...
...
@@ -35,6 +35,7 @@ export function initJssdkShare(callback, url) {
}
// data是穿的参数 url是当前页面的链接
export
function
hshare
(
data
,
url
){
console
.
log
(
'data,url'
,
data
,
url
);
// initJssdkShare(data, url)
initJssdkShare
(
function
(){
jWeixin
.
ready
(
function
(){
...
...
util/router.js
View file @
0e6970cd
...
...
@@ -7,31 +7,36 @@ const whiteList = [
'/pages/orderDetail/orderDetail'
,
'/pages/courseDetail/courseDetail'
,
'/pages/courselist/courselist'
,
'/pages/index/index'
,
'/pages/index/index'
]
export
default
function
initApp
(){
uni
.
addInterceptor
(
'navigateTo'
,
{
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke
(
e
)
{
let
whiteArr
=
[
'index'
,
'personalCenter'
,
'courselist'
,
'product'
]
// 1. 解析 URL 中的 from 参数
const
getQueryParam
=
(
url
,
key
)
=>
{
const
queryString
=
url
.
split
(
'?'
)[
1
];
if
(
!
queryString
)
return
null
;
const
params
=
new
URLSearchParams
(
queryString
);
return
params
.
get
(
key
);
};
const
fromParam
=
getQueryParam
(
e
.
url
,
'from'
);
if
(
!
hasPermission
(
e
.
url
)){
uni
.
redirectTo
({
url
:
'/components/login/login'
})
return
false
}
return
true
},
success
(
e
)
{
}
})
uni
.
addInterceptor
(
'switchTab'
,
{
// tabbar页面跳转前进行拦截
invoke
(
e
)
{
if
(
!
hasPermission
(
e
.
url
)){
uni
.
redirectTo
({
url
:
'/components/login/login'
})
// 如果 from 参数在 whiteArr 中,说明是tabbar页带着tabbar的标志参数跳转到登录页,以便未登录状态下回到对应的tabbar页
if
(
fromParam
&&
whiteArr
.
includes
(
fromParam
))
{
uni
.
redirectTo
({
url
:
`/components/login/login?from=
${
fromParam
}
`
})
}
else
{
uni
.
redirectTo
({
url
:
'/components/login/login'
})
}
return
false
}
return
true
...
...
@@ -39,11 +44,28 @@ export default function initApp(){
success
(
e
)
{
}
})
//最新 修改 tabbar页面跳转前不进行拦截
// uni.addInterceptor('switchTab', {
//
// invoke (e) {
// console.log('!hasPermission(e.url)',e.url);
// if(!hasPermission(e.url)){
// uni.redirectTo({
// url: '/components/login/login'
// })
// return false
// }
// return true
// },
// success (e) {
// }
// })
}
function
hasPermission
(
url
)
{
let
islogin
=
uni
.
getStorageSync
(
"isLogin"
);
//在这可以使用token、vuex
// islogin = Boolean(Number(islogin));//返回布尔值
// 在白名单中或有登录判断条件可以直接跳转
console
.
log
(
whiteList
.
indexOf
(
url
.
slice
(
0
,
url
.
indexOf
(
'?'
)))
!==
-
1
);
if
(
whiteList
.
indexOf
(
url
.
slice
(
0
,
url
.
indexOf
(
'?'
)))
!==
-
1
||
islogin
)
{
return
true
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment