Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
self-support
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李俊赕
self-support
Commits
a029c047
Commit
a029c047
authored
Apr 16, 2021
by
李俊赕
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.banshouhui.com/lijundan/self-support
parents
85794c00
5d47a90d
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
924 additions
and
369 deletions
+924
-369
.gitignore
.gitignore
+1
-0
App.vue
src/App.vue
+104
-4
settled.js
src/common/api/settled.js
+9
-1
index.scss
src/common/index.scss
+16
-3
index.js
src/config/index.js
+16
-0
pages.json
src/pages.json
+85
-69
index.vue
src/pages/index/index.vue
+239
-211
course-detail.vue
src/pages/learn/course-detail.vue
+105
-0
exam.vue
src/pages/learn/exam.vue
+130
-0
index.vue
src/pages/login/index.vue
+24
-11
base.vue
src/pages/settle/base.vue
+24
-24
file.vue
src/pages/settle/file.vue
+161
-36
prompt.vue
src/pages/settle/prompt.vue
+9
-9
tishi@3x.png
src/static/settle/tishi@3x.png
+0
-0
analysys_paas.js
src/utils/analysys_paas.js
+1
-1
No files found.
.gitignore
View file @
a029c047
...
...
@@ -21,3 +21,4 @@ yarn-error.log*
*.njsproj
*.sln
*.sw*
.history/
src/App.vue
View file @
a029c047
<
script
>
import
'./../.env.js'
import
{
AnalysysAgent
}
from
'@/utils/analysys_paas.js'
import
util
from
'@/utils/util.js'
export
default
{
globalData
:{
// 开发环境
uniEnv
:
process
.
uniEnv
,
token
:
''
,
//lyf的token:RTOKENf7d46ea33a7923515abfa779e04eccba77f98604
//RTOKEN45f41a3053238cb72b3b72fe14df8d7040c9f502
// 授权用户信息
// 登录凭证
token
:
''
,
//授权提示 图标
icon_auth_notice
:
'https://qn-static.banshouhui.com/auth_notice.png'
,
//授权提示新 图标
icon_auth_notice_new
:
'https://qn-static.banshouhui.com/auth_notice_new.png'
,
// 服务规范教程视频
service_standard
:
{
"Course1"
:
{
url
:
"https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4"
,
title
:
"第一节 接单服务标准"
,
desc
:
"1.不同车企品牌结算价格不一,675元-1890元不等;"
,
},
"Course2"
:
{
url
:
"https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4"
,
title
:
"第二节 完工服务标准"
,
desc
:
"2.结算价格为包工包料价,安装材料根据车企品牌规格自行采购(电缆、空开、漏保);"
,
},
"Course3"
:
{
url
:
"https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4"
,
title
:
"第二节 结算服务标准"
,
desc
:
"3.需具备一定的作业工具:如液压压线钳、冲击钻、电锤、登高安全带、电锤、绝缘电阻仪(摇表)、交流充电模拟器等;"
,
},
},
// 授权用户信息
authUserInfo
:
''
,
},
onLaunch
:
function
()
{
// 应用初始化(全局只触发一次)
let
that
=
this
that
.
globalData
.
token
=
util
.
getToken
()
AnalysysAgent
.
registerSuperProperty
(
"platform"
,
"self-support"
);
},
onShow
:
function
()
{
// 应用启动,或从后台进入前台显示
...
...
@@ -96,6 +125,76 @@
util
.
setToken
(
''
)
}
},
/* ------------------------- 数据埋点begin ------------------------------ */
track
(
event
,
properties
)
{
if
(
AnalysysAgent
)
{
// 易观添加事件
let
AnalysysAgent
=
wx
.
AnalysysAgent
;
AnalysysAgent
.
track
(
"take_order_"
+
event
,
properties
);
}
},
identify
(
userInfo
,
openid
,
unionid
=
null
)
{
// 设备身份表示
if
(
AnalysysAgent
)
{
let
setProfile
=
{
'openid'
:
openid
,
'unionid'
:
unionid
,
}
setProfile
=
Object
.
assign
(
setProfile
,
userInfo
)
AnalysysAgent
.
profileSet
(
setProfile
);
}
},
setUserId
(
userId
)
{
// 用户id设置
if
(
AnalysysAgent
)
{
AnalysysAgent
.
alias
(
userId
+
''
)
}
},
setUser
(
user
)
{
// 用户附加属性
if
(
AnalysysAgent
)
{
let
userInfo
=
{
'mobile'
:
user
.
mobile
,
'userfrom_id'
:
user
.
uid
,
'userfrom'
:
'家维广场'
,
'avatar'
:
user
.
avatar
,
'nickname'
:
user
.
nickname
,
'username'
:
user
.
username
,
'wxhuid'
:
user
.
wxhuid
,
'id'
:
user
.
id
,
'money'
:
user
.
money
,
'score'
:
user
.
score
};
Object
.
keys
(
userInfo
).
map
(
key
=>
{
if
(
key
&&
userInfo
[
key
])
{
AnalysysAgent
.
profileAppend
(
key
,
userInfo
[
key
])
}
})
}
},
share
(
toShareProperties
,
trackProperties
)
{
if
(
AnalysysAgent
)
{
AnalysysAgent
.
share
(
toShareProperties
,
trackProperties
);
}
},
trackPage
(
pageName
,
properties
)
{
if
(
AnalysysAgent
)
{
AnalysysAgent
.
pageView
(
pageName
,
properties
);
}
},
initShare
(
option
)
{
console
.
log
(
option
,
'option-initShare'
)
option
=
option
||
{}
if
(
AnalysysAgent
&&
option
.
user_id
)
{
let
shareUserInfo
=
{
'share_from_id'
:
option
.
user_id
||
''
,
'share_from_nickname'
:
option
.
user_name
||
''
,
}
AnalysysAgent
.
registerSuperProperties
(
shareUserInfo
);
}
},
/* ------------------------- 数据埋点end ------------------------------ */
}
}
</
script
>
...
...
@@ -106,4 +205,5 @@
<
style
lang=
"scss"
>
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
@import
"uview-ui/index.scss"
;
@import
'@/common/index.scss'
;
</
style
>
\ No newline at end of file
src/common/api/settled.js
View file @
a029c047
...
...
@@ -32,6 +32,12 @@ let settledApiFun = function(vm){
/* 提交认证资料 */
let
checkSettleSignInfo
=
async
(
params
=
{})
=>
await
vm
.
$u
.
post
(
ucenterApiUrl
+
'/v1/settled/check-sign-info'
,
params
,{
'content-type'
:
'application/x-www-form-urlencoded'
});
/* 获取接单教程列表 */
let
listOrderingTutorials
=
async
(
params
=
{})
=>
await
vm
.
$u
.
get
(
ucenterApiUrl
+
'/v1/settled/get-course-rate'
,
params
);
/* 更新接单教程状态 */
let
saveCourseRate
=
async
(
params
=
{})
=>
await
vm
.
$u
.
get
(
ucenterApiUrl
+
'/v1/settled/save-course-rate'
,
params
);
const
settledApi
=
{
getSettleBaseInfo
,
getSettleArea
,
...
...
@@ -43,7 +49,9 @@ let settledApiFun = function(vm){
getSettleDepositResult
,
// checkSettleBank,
// checkSettleAlipay,
checkSettleSignInfo
checkSettleSignInfo
,
listOrderingTutorials
,
saveCourseRate
,
}
return
settledApi
}
...
...
src/common/index.scss
View file @
a029c047
page
{
background-color
:
#
FAFAFA
;
page
{
background-color
:
#
fafafa
;
}
.btn-share
{
background-color
:
transparent
;
...
...
@@ -13,4 +13,17 @@ page{
width
:
48rpx
;
height
:
39rpx
;
}
}
\ No newline at end of file
}
.bottom-fix-btn
{
position
:
fixed
;
z-index
:
2
;
bottom
:
0rpx
;
padding-bottom
:
40rpx
;
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
.btn-block
{
width
:
460rpx
;
}
}
src/config/index.js
0 → 100644
View file @
a029c047
//易观方舟
let
argo
=
{
appkey
:
"5f2ac5996f36c714"
,
open
:
true
,
/*
0 关闭调试模式(默认)。类型:Number。
1 开启调试模式,数据不入库。类型:Number。
2 开启调试模式,数据入库。类型:Number。
*/
debugMode
:
0
,
autoTrack
:
true
,
uploadURL
:
'https://argo.banshouhui.com/'
}
export
{
argo
,
}
\ No newline at end of file
src/pages.json
View file @
a029c047
...
...
@@ -14,16 +14,11 @@
"style"
:
{
"navigationBarTitleText"
:
"订单"
}
},{
"path"
:
"pages/order/complete"
,
"style"
:
{
"navigationBarTitleText"
:
"订单-完工配置"
}
},
{
"path"
:
"pages/
study/index
"
,
"path"
:
"pages/
order/complete
"
,
"style"
:
{
"navigationBarTitleText"
:
"
学习
"
"navigationBarTitleText"
:
"
订单-完工配置
"
}
},
{
...
...
@@ -35,7 +30,7 @@
{
"path"
:
"pages/login/index"
,
"style"
:
{
"navigationBarTitleText"
:
"
我的
"
"navigationBarTitleText"
:
"
授权登录
"
}
},
{
...
...
@@ -57,60 +52,57 @@
{
"path"
:
"pages/learn/index"
,
"style"
:
{
"navigationBarTitleText"
:
"
uni-xue
"
"navigationBarTitleText"
:
"
学习
"
}
},
{
"path"
:
"pages/learn/assessment"
,
"path"
:
"pages/learn/assessment"
,
"style"
:
{
"navigationBarTitleText"
:
"认证介绍"
"navigationBarTitleText"
:
"认证介绍"
}
},
{
"path"
:
"pages/learn/answer"
,
"path"
:
"pages/learn/answer"
,
"style"
:
{
"navigationBarTitleText"
:
"考试答题"
"navigationBarTitleText"
:
"考试答题"
}
},
{
"path"
:
"pages/learn/result"
,
"style"
:{
"navigationBarTitleText"
:
"考试结果页"
"path"
:
"pages/learn/result"
,
"style"
:
{
"navigationBarTitleText"
:
"考试结果页"
}
},
{
"path"
:
"pages/learn/news-details"
,
"style"
:{
"navigationBarTitleText"
:
""
"path"
:
"pages/learn/news-details"
,
"style"
:
{
"navigationBarTitleText"
:
""
}
},
{
"path"
:
"pages/learn/curriculum"
,
"style"
:{
"navigationBarTitleText"
:
""
"path"
:
"pages/learn/curriculum"
,
"style"
:
{
"navigationBarTitleText"
:
""
}
},
{
"path"
:
"pages/settle/select"
,
"style"
:
{
"navigationBarTitleText"
:
"选择可服务的城市"
,
"navigationBarBackgroundColor"
:
"#FFFFFF"
"navigationBarBackgroundColor"
:
"#FFFFFF"
}
},
{
"path"
:
"pages/settle/file-upload"
,
"style"
:
{
"navigationBarTitleText"
:
"图片上传"
}
},
{
"path"
:
"pages/settle/pay-ensure"
,
"style"
:
{
"navigationBarTitleText"
:
"缴纳设备押金"
}
},
{
"path"
:
"pages/settle/prompt"
,
...
...
@@ -119,20 +111,18 @@
"navigationStyle"
:
"custom"
,
"disableScroll"
:
true
}
},
{
},
{
"path"
:
"pages/settle/web"
,
"style"
:
{
"navigationBarTitleText"
:
"签约页面"
}
},
{
"path"
:
"pages/settle/sign-contract"
,
"style"
:
{
"navigationBarTitleText"
:
"签约页面"
}
},
{
"path"
:
"pages/settle/file"
,
...
...
@@ -141,20 +131,36 @@
"navigationStyle"
:
"custom"
,
"disableScroll"
:
true
}
},{
},
{
"path"
:
"pages/exam/start"
,
"style"
:
{
"navigationBarTitleText"
:
"考试"
}
},
{
},
{
"path"
:
"pages/exam/index"
,
"style"
:
{
"navigationBarTitleText"
:
"入驻考试"
}
},
{
"path"
:
"pages/learn/exam"
,
"style"
:
{
"navigationBarTitleText"
:
"在线考试"
,
"enablePullDownRefresh"
:
false
,
"navigationStyle"
:
"custom"
,
//
隐藏系统导航栏
"disableScroll"
:
true
}
},
{
"path"
:
"pages/learn/course-detail"
,
"style"
:
{
"navigationBarTitleText"
:
"培训视频"
,
"enablePullDownRefresh"
:
false
}
}
],
],
"globalStyle"
:
{
"navigationBarTextStyle"
:
"black"
,
"navigationBarTitleText"
:
"uni-app"
,
...
...
@@ -166,7 +172,8 @@
"selectedColor"
:
"#007AFF"
,
"borderStyle"
:
"black"
,
"backgroundColor"
:
"#F8F8F8"
,
"list"
:
[{
"list"
:
[
{
"pagePath"
:
"pages/index/index"
,
"iconPath"
:
"static/logo.png"
,
"selectedIconPath"
:
"static/logo.png"
,
...
...
@@ -177,12 +184,14 @@
"iconPath"
:
"static/logo.png"
,
"selectedIconPath"
:
"static/logo.png"
,
"text"
:
"订单"
},
{
},
{
"pagePath"
:
"pages/learn/index"
,
"iconPath"
:
"static/logo.png"
,
"selectedIconPath"
:
"static/logo.png"
,
"text"
:
"学习"
},
{
},
{
"pagePath"
:
"pages/mine/index"
,
"iconPath"
:
"static/logo.png"
,
"selectedIconPath"
:
"static/logo.png"
,
...
...
@@ -192,35 +201,42 @@
},
"condition"
:
{
//模式配置,仅开发期间生效
"current"
:
0
,
//当前激活的模式(list
的索引项)
"list"
:
[{
"name"
:
"自营平台"
,
//模式名称
"path"
:
"pages/index/index"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},{
"name"
:
"入驻首页"
,
"path"
:
"pages/settle/index"
,
"query"
:
""
},{
"name"
:
"基本信息"
,
//模式名称
"path"
:
"pages/settle/base"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},{
"name"
:
"入驻提示"
,
//模式名称
"path"
:
"pages/settle/prompt"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},{
"name"
:
"资料信息"
,
//模式名称
"path"
:
"pages/settle/file"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},{
"name"
:
"缴纳保证金"
,
//模式名称
"path"
:
"pages/settle/pay-ensure"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},{
"name"
:
"订单 - 完工配置"
,
//模式名称
"path"
:
"pages/order/complete"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
}]
"list"
:
[
{
"name"
:
"自营平台"
,
//模式名称
"path"
:
"pages/index/index"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},
{
"name"
:
"入驻首页"
,
"path"
:
"pages/settle/index"
,
"query"
:
""
},
{
"name"
:
"基本信息"
,
//模式名称
"path"
:
"pages/settle/base"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},
{
"name"
:
"入驻提示"
,
//模式名称
"path"
:
"pages/settle/prompt"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},
{
"name"
:
"资料信息"
,
//模式名称
"path"
:
"pages/settle/file"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},
{
"name"
:
"缴纳保证金"
,
//模式名称
"path"
:
"pages/settle/pay-ensure"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
},
{
"name"
:
"订单 - 完工配置"
,
//模式名称
"path"
:
"pages/order/complete"
,
//启动页面,必选
"query"
:
""
//启动参数,在页面的onLoad函数里面得到
}
]
}
}
}
\ No newline at end of file
src/pages/index/index.vue
View file @
a029c047
This diff is collapsed.
Click to expand it.
src/pages/learn/course-detail.vue
0 → 100644
View file @
a029c047
<
template
>
<view>
<view
class=
"uni-padding-wrap uni-common-mt"
>
<view><video
object-fit=
"cover"
class=
"course-video"
id=
"courseVideo"
:src=
"courseSrc"
@
error=
"videoErrorCallback"
controls
></video></view>
<uni-group>
<view
class=
"course-title"
>
{{
courseTitle
}}
</view>
<view
class=
"course-desc"
>
{{
courseDesc
}}
</view>
</uni-group>
</view>
</view>
</
template
>
<
script
>
let
app
=
getApp
();
export
default
{
data
()
{
return
{
courseId
:
''
,
courseStatus
:
0
,
courseSrc
:
''
,
courseTitle
:
''
,
courseDesc
:
''
,
};
},
onLoad
(
e
)
{
if
(
e
)
{
if
(
e
.
courseId
)
{
this
.
courseId
=
e
.
courseId
;
}
if
(
e
.
id
)
{
this
.
courseId
=
e
.
courseId
;
this
.
courseSrc
=
app
.
globalData
.
service_standard
[
e
.
id
].
url
;
this
.
courseTitle
=
app
.
globalData
.
service_standard
[
e
.
id
].
title
;
this
.
courseDesc
=
app
.
globalData
.
service_standard
[
e
.
id
].
desc
;
this
.
changeCourseStatus
();
}
if
(
e
.
status
)
{
this
.
courseStatus
=
e
.
status
;
}
}
},
onReady
:
function
(
res
)
{
// #ifndef MP-ALIPAY
this
.
videoContext
=
uni
.
createVideoContext
(
'courseVideo'
);
// #endif
},
methods
:
{
videoErrorCallback
:
function
(
e
)
{
uni
.
showModal
({
content
:
e
.
target
.
errMsg
,
showCancel
:
false
});
},
getRandomColor
:
function
()
{
const
rgb
=
[];
for
(
let
i
=
0
;
i
<
3
;
++
i
)
{
let
color
=
Math
.
floor
(
Math
.
random
()
*
256
).
toString
(
16
);
color
=
color
.
length
==
1
?
'0'
+
color
:
color
;
rgb
.
push
(
color
);
}
return
'#'
+
rgb
.
join
(
''
);
},
changeCourseStatus
()
{
let
that
=
this
if
(
that
.
courseId
)
{
that
.
$u
.
api
.
saveCourseRate
({
courseId
:
that
.
courseId
}).
then
(
res
=>
{
debugger
if
(
res
.
code
==
200
)
{
// uni.navigateBack({delta: 1})
uni
.
navigateTo
({
url
:
"/pages/learn/exam"
})
}
else
{
uni
.
showToast
({
icon
:
"none"
,
title
:
"更新课程状态失败"
})
}
}).
catch
(
e
=>
{
})
}
else
{
uni
.
showToast
({
title
:
"课程ID为空,请重新选择课程"
})
}
},
}
};
</
script
>
<
style
lang=
"scss"
>
.course-video
{
width
:
750rpx
;
}
.course-title
{
font-size
:
36rpx
;
font-weight
:
700
;
padding
:
80rpx
60rpx
40rpx
60rpx
;
}
.course-desc
{
margin-left
:
60rpx
;
}
</
style
>
src/pages/learn/exam.vue
0 → 100644
View file @
a029c047
<
template
>
<view
class=
"exam-wrap"
>
<Settle
:index=
"3"
>
<view
class=
"exam-tips"
><u-alert-tips
:show-icon=
"true"
class=
"exam-tips"
type=
"warning"
:title=
"tipsTitle"
:description=
"tipsDescription"
></u-alert-tips></view>
<view
class=
"exam-course"
>
<u-card
margin=
"20rpx 0rpx 30rpx 0rpx"
:border=
"false"
:border-radius=
"cardRadius"
>
<view
class=
"exam-head"
slot=
"head"
>
师傅接单教程
</view>
<view
class=
"exam-body"
slot=
"body"
>
<u-cell-group
:border=
"false"
>
<u-cell-item
v-for=
"(item, key) in tutorials"
:key=
"key"
icon=
"play-circle"
:border-bottom=
"false"
:title=
"item.title"
:value=
"item.value"
:value-style=
"item.courseActive"
@
click=
"viewCourse(item)"
></u-cell-item>
</u-cell-group>
</view>
</u-card>
</view>
<view
class=
"exam-course"
>
<u-card
margin=
"0rpx"
:border=
"false"
:border-radius=
"cardRadius"
>
<view
class=
"exam-head"
slot=
"head"
>
师傅接单考试
</view>
<uni-group
slot=
"body"
>
<view>
总共20题,每题5分,答题时间不超过40分钟
</view>
<view>
请认真对待,预祝顺利通过考试!
</view>
</uni-group>
</u-card>
</view>
<view
class=
"content-gap"
></view>
</Settle>
<view
class=
"bottom-fix-btn"
>
<view
class=
"btn-block"
><u-button
type=
"primary"
shape=
"circle"
>
去考试
</u-button></view>
</view>
</view>
</
template
>
<
script
>
import
Settle
from
'@/components/settle/index.vue'
;
let
app
=
getApp
()
export
default
{
components
:
{
Settle
},
data
()
{
return
{
cardRadius
:
12
,
tipsTitle
:
'提示:'
,
// 简单使用固定培训视频
tutorials
:
[
{
id
:
'Course1'
,
courseId
:
1
,
title
:
''
,
value
:
'已查看'
,
courseActive
:
{},
status
:
1
,
url
:
''
},
{
id
:
'Course2'
,
courseId
:
2
,
title
:
''
,
value
:
'未查看'
,
courseActive
:
{},
status
:
0
,
url
:
''
},
{
id
:
'Course3'
,
courseId
:
3
,
title
:
''
,
value
:
'未查看'
,
courseActive
:
{},
status
:
0
,
url
:
''
}
],
tipsDescription
:
'接单考核可让您快速了解如何使用小程序,建议先查看学习教程'
};
},
computed
:
{
},
onLoad
()
{
this
.
tutorials
.
map
((
item
,
key
)
=>
{
item
[
'url'
]
=
app
.
globalData
.
service_standard
[
item
.
id
].
url
item
[
'title'
]
=
app
.
globalData
.
service_standard
[
item
.
id
].
title
item
[
'value'
]
=
item
[
'status'
]
?
'已查看'
:
'未查看'
;
item
[
'courseActive'
]
=
item
[
'status'
]
?
{
"color"
:
"#2979ff"
}
:
{
"color"
:
"#ff0000"
}
})
this
.
loadLearnData
();
},
methods
:
{
loadLearnData
()
{
let
that
=
this
;
that
.
$u
.
api
.
listOrderingTutorials
()
.
then
(
res
=>
{
const
results
=
res
.
data
;
if
(
res
.
status
==
200
&&
results
&&
results
.
length
>
0
)
{
that
.
tutorials
.
forEach
((
data
,
i
)
=>
{
if
(
results
.
hasOwnProperty
(
data
.
id
))
{
data
.
status
=
results
[
data
.
id
];
data
.
value
=
data
.
status
?
'已查看'
:
'未查看'
;
data
.
courseActive
=
data
.
status
?
{
"color"
:
"#2979ff"
}
:
{
"color"
:
"red"
}
that
.
tutorials
[
i
]
=
data
;
}
});
}
})
.
catch
(
e
=>
{
debugger
;
console
.
log
(
e
,
'loadLearnData'
);
});
},
viewCourse
(
e
)
{
let
that
=
this
;
let
params
=
`id=
${
e
.
id
}
&courseId=
${
e
.
courseId
}
&status=
${
e
.
status
}
`
uni
.
navigateTo
({
url
:
`/pages/learn/course-detail?
${
params
}
`
})
},
}
};
</
script
>
<
style
lang=
"scss"
>
.exam-tips
.u-alert-tips
{
border-radius
:
12rpx
!
important
;
border
:
none
!
important
;
.u-alert-title
{
font-size
:
28rpx
!
important
;
font-weight
:
bold
;
}
}
.exam-wrap
{
background
:
#f4f5f7
;
}
.exam-head
{
font-size
:
36rpx
;
font-weight
:
bold
;
}
.content-gap
{
height
:
1rpx
;
margin-bottom
:
200rpx
;
}
</
style
>
src/pages/login/index.vue
View file @
a029c047
...
...
@@ -5,7 +5,8 @@
<image
class=
"noticeImage"
:src=
"icon_auth_notice_new"
mode=
""
></image>
</view>
<view
class=
"noticeTitleView"
>
<text
class=
"noticeTitle"
>
{{
noticeTitle
}}
</text>
<text
class=
"noticeTitle"
v-if=
"needAuth"
>
{{
authNoticeTitle
}}
</text>
<text
class=
"noticeTitle"
v-else
>
{{
suginNoticeTitle
}}
</text>
</view>
<button
class=
"loginBtn"
v-if=
"needAuth"
lang=
"zh_CN"
@
tap=
"getUserProfile"
>
<text
class=
"u-font-32 white"
>
立即登录
</text>
...
...
@@ -35,13 +36,14 @@ export default {
icon_notice
:
''
,
TimeID
:
-
1
,
icon_auth_notice_new
:
''
,
noticeTitle
:
'申请获得您的公开信息(昵称,头像等)以便于为您提供更好的服务'
,
authNoticeTitle
:
'申请获得您的公开信息(昵称,头像等)以便于为您提供更好的服务'
,
suginNoticeTitle
:
'申请获得您的公开信息(昵称,头像等)以便于为您提供更好的服务'
,
}
},
onLoad
()
{
// getApp()
.trackPage('授权登录页')
// this.icon_notice = getApp()
.globalData.icon_auth_notice
// this.icon_auth_notice_new = getApp()
.globalData.icon_auth_notice_new
app
.
trackPage
(
'授权登录页'
)
this
.
icon_notice
=
app
.
globalData
.
icon_auth_notice
this
.
icon_auth_notice_new
=
app
.
globalData
.
icon_auth_notice_new
},
onShow
()
{
app
.
globalData
.
jumpLoginStatus
=
true
...
...
@@ -101,6 +103,10 @@ export default {
signupLogin
(
e
)
{
var
that
=
this
debugger
console
.
log
(
e
.
detail
.
errMsg
)
console
.
log
(
e
.
detail
.
iv
)
console
.
log
(
e
.
detail
.
encryptedData
)
if
(
!
e
||
!
e
.
detail
||
e
.
detail
.
errMsg
.
indexOf
(
'user deny'
)
>
-
1
)
{
wx
.
showModal
({
title
:
'提示'
,
...
...
@@ -143,13 +149,20 @@ export default {
goBackPage
()
{
let
pages
=
getCurrentPages
();
if
(
pages
.
length
)
{
let
prevPage
=
pages
[
pages
.
length
-
1
];
//上一个页面
if
(
prevPage
&&
prevPage
.
$vm
)
{
prevPage
.
$vm
.
isRefresh
=
true
;
let
index
=
pages
.
length
-
1
;
if
(
index
)
{
let
prevPage
=
pages
[
pages
.
length
-
1
];
//上一个页面
if
(
prevPage
&&
prevPage
.
$vm
)
{
prevPage
.
$vm
.
isRefresh
=
true
;
}
uni
.
navigateBack
({
delta
:
1
})
}
else
{
uni
.
navigateTo
({
url
:
'pages/index/index'
})
}
uni
.
navigateBack
({
delta
:
1
})
}
else
{
uni
.
navigateTo
({
url
:
"pages/mine/index"
...
...
src/pages/settle/base.vue
View file @
a029c047
<
template
>
<view
class=
"back_view"
>
<Settle
:index=
"2"
>
<view
class=
"base-list"
>
<view
class=
"tip-text"
>
<image
class=
"tip-image"
mode=
"widthFix"
src=
"../../static/settle/anquan@3x.png"
></image>
<text>
身份证照片、电工证照片、行驶证/驾驶证照片及车辆照片仅用于申请入驻。
</text>
<view
class=
"base-list"
>
<view
class=
"tip-text"
>
<image
class=
"tip-image"
mode=
"widthFix"
src=
"../../static/settle/anquan@3x.png"
></image>
<text>
身份证照片、电工证照片、行驶证/驾驶证照片及车辆照片仅用于申请入驻。
</text>
</view>
<view
class=
"base-item"
>
<view
class=
"item item-select"
@
click=
"gopage('/pages/settle/select?selectType=area')"
>
...
...
@@ -51,7 +51,7 @@
<text
class=
"itemTitle"
>
详细地址
</text>
</view>
<view
class=
"flex-center"
>
<image
class=
"item-image"
src=
"../../static/settle/dizhi@3x.png"
></image>
<image
class=
"item-image
-l
"
src=
"../../static/settle/dizhi@3x.png"
></image>
<text
class=
"right-label blueColor"
>
自动定位
</text>
</view>
</view>
...
...
@@ -426,7 +426,7 @@
margin-right
:
10rpx
;
}
.item-image
{
.item-image
-l
{
width
:
26rpx
;
height
:
30rpx
;
margin-right
:
6rpx
;
...
...
@@ -672,23 +672,23 @@
.address-textarea
{
font-size
:
26rpx
;
}
.tip-text
{
background-color
:
#FFFFFF
;
border-radius
:
12rpx
;
padding
:
38rpx
30rpx
30rpx
30rpx
;
height
:
140rpx
;
margin-bottom
:
20rpx
;
font-size
:
24rpx
;
color
:
#000000
;
display
:
flex
;
align-items
:
flex-start
;
}
.tip-image
{
width
:
34rpx
;
margin-right
:
8rpx
;
margin-top
:
2rpx
;
}
.tip-text
{
background-color
:
#FFFFFF
;
border-radius
:
12rpx
;
padding
:
38rpx
30rpx
30rpx
30rpx
;
height
:
140rpx
;
margin-bottom
:
20rpx
;
font-size
:
24rpx
;
color
:
#000000
;
display
:
flex
;
align-items
:
flex-start
;
}
.tip-image
{
width
:
34rpx
;
margin-right
:
8rpx
;
margin-top
:
2rpx
;
}
</
style
>
src/pages/settle/file.vue
View file @
a029c047
...
...
@@ -4,19 +4,47 @@
<view
class=
"tip-text"
>
<image
class=
"tip-image"
mode=
"widthFix"
src=
"../../static/settle/anquan@3x.png"
></image>
<text>
身份证照片、电工证照片、行驶证/驾驶证照片及车辆照片仅用于申请入驻。
</text>
</view>
<view
class=
"info-view"
>
<view
v-for=
"(fileItem, index) in formShowList"
class=
"title-view"
:key=
"index"
>
<view>
<image
class=
"title-image"
src=
"../../static/settle/mixing@3x.png"
></image>
<text>
{{
fileItem
.
label
}}
</text>
</view>
<view
class=
"info-tip-text"
>
{{
fileItem
.
tips
}}
</view>
<view
class=
"image-view"
>
<image
class=
"info-image"
mode=
"aspectFill"
v-for=
"(src, key) in fileItem.placeholderImages"
:src=
"fileItem.imgs.length > key ? fileItem.imgs[key] : src"
:key=
"src + key"
@
click=
"handleClick(fileItem, index, key)"
></image>
</view>
<view
v-if=
"index == 0"
class=
"bottom-tip-view"
>
<image
class=
"bottom-tip-image"
mode=
"widthFix"
src=
"../../static/settle/tishi@3x.png"
></image>
<text>
所上传的身份证信息必须与银行卡开户绑定身份证信息一致,否则将导致订单报酬无法交付
</text>
</view>
<view
class=
"card-info-view"
v-if=
"index == 0 && (fileInfo.id_card_name || fileInfo.id_card_number || fileInfo.id_card_date)"
>
<view
class=
"card-list-view"
v-for=
"(value, cardkey) in cardTitle"
:key=
"cardkey"
>
<view
class=
"card-list-item"
>
<text>
{{
value
}}
</text>
<text
class=
"card-item-text"
>
{{
fileInfo
[
cardkey
]
}}
</text>
</view>
<view
class=
"line-view"
></view>
<view
class=
"card-item-error"
v-if=
"fileInfo[cardkey] && (cardkey == 'id_card_date' ? fileInfo.id_card_back : fileInfo.id_card_front)"
>
识别失败,请重新上传
</view>
</view>
</view>
</view>
</view>
<template
v-slot:bottom
>
<view
class=
"btn-wrap flex-xc"
>
<button
class=
"btn-submit"
:disabled=
"!submitBtnStatus"
@
click=
"$u.debounce(submitFileInfo, 500)"
>
{{
!
submitBtnStatus
?
"完成必填项,可提交资料"
:
"提交"
}}
{{
!
submitBtnStatus
?
"完成必填项,可提交资料"
:
"提交"
}}
</button>
</view>
</
template
>
<view
class=
"base-list"
>
<
template
v-for=
"(fileItem, index) in formShowList"
>
...
...
@@ -74,7 +102,8 @@
fileInfo
:
{
id
:
""
,
id_card_name
:
""
,
id_card_number
:
""
,
id_card_number
:
""
,
id_card_date
:
''
,
id_card_front
:
""
,
id_card_back
:
""
,
electrician_certificate
:
""
,
...
...
@@ -92,41 +121,47 @@
formShowList
:
[{
filedName
:
"id_card_front"
,
required
:
true
,
maxImgs
:
1
,
label
:
"
身份证人像面
"
,
tips
:
"
(必选项)拍身份证人像面,证件需清晰可见
"
,
maxImgs
:
2
,
label
:
"
实名认证
"
,
tips
:
"
上传二代身份证照片,图片大小不大于3M
"
,
imgs
:
[],
placeholderImages
:
[
'../../static/settle/renxiang@3x.png'
,
'../../static/settle/guohui@3x.png'
]
},
// {
// filedName: "id_card_back",
// required: true,
// label: "身份证国徽面",
// maxImgs: 1,
// tips: "上传二代身份证照片,图片大小不大于3M",
// imgs: [],
// },
{
filedName
:
"id_card_back"
,
filedName
:
"electrician_certificate"
,
label
:
"电工证照"
,
required
:
true
,
label
:
"身份证国徽面"
,
maxImgs
:
1
,
tips
:
"
(必选项)拍身份证国徽面,证件需清晰可见
"
,
tips
:
"
上传电工证证照片,图片大小不大于3M
"
,
imgs
:
[],
placeholderImages
:
[
'../../static/settle/diangong@3x.png'
]
},
{
filedName
:
"electrician_certificate"
,
label
:
"电工证照"
,
required
:
true
,
maxImgs
:
1
,
tips
:
"(必选项)拍电工证照,证件需清晰可见"
,
filedName
:
"other_certificates"
,
label
:
"驾驶证/行驶证照片"
,
imgs
:
[],
maxImgs
:
999
,
tips
:
"两证单张照片需包含两页内容,图片大小不大于3M"
,
placeholderImages
:
[
'../../static/settle/jiashi@3x.png'
,
'../../static/settle/jiashi@3x.png'
]
},
{
filedName
:
"vehicle_photos"
,
label
:
"车辆照"
,
maxImgs
:
1
,
tips
:
"(可选项)45度拍摄车辆照片,车牌清晰可见"
,
imgs
:
[],
},
{
filedName
:
"other_certificates"
,
label
:
"其他工作证件"
,
tips
:
"两证单张照片需包含两页内容,图片大小不大于3M"
,
imgs
:
[],
maxImgs
:
999
,
tips
:
"(可选项)可拍多张"
,
placeholderImages
:
[
'../../static/settle/zhengmian@3x.png'
,
'../../static/settle/cemian@3x.png'
]
},
],
submitSuccess
:
false
,
saving
:
false
,
...
...
@@ -159,12 +194,36 @@
const
fileInfo
=
this
.
fileInfo
const
flag
=
fileInfo
.
id_card_front
&&
fileInfo
.
id_card_back
&&
fileInfo
.
electrician_certificate
return
flag
&&
!
this
.
saving
;
},
},
cardTitle
()
{
return
{
'id_card_name'
:
'姓名'
,
'id_card_number'
:
'身份证号'
,
'id_card_date'
:
'有效期'
}
}
},
components
:
{
},
methods
:
{
methods
:
{
// item: formShowList的元素
// index、key: 选中的是formShowList的第index里面的第key个图片选择器
handleClick
(
item
,
index
,
key
)
{
switch
(
index
)
{
case
0
:
// 身份证
// 上传图片
// 成功之后更新 fileInfo、 item里的imgs
break
;
default
:
//其他
// 上传图片
// 成功之后更新 item里的imgs
break
;
}
},
updateImgs
()
{
const
uploadType
=
this
.
uploadType
const
uploadImgs
=
this
.
imgObj
[
uploadType
]
...
...
@@ -494,6 +553,21 @@
margin-top
:
2rpx
;
}
.bottom-tip-view
{
color
:
#999999
;
font-size
:
20rpx
;
display
:
flex
;
align-items
:
flex-start
;
margin-top
:
30rpx
;
}
.bottom-tip-image
{
width
:
24rpx
;
height
:
24rpx
;
margin-right
:
8rpx
;
margin-top
:
4rpx
;
}
.seat
{
padding-bottom
:
144rpx
;
}
...
...
@@ -516,16 +590,67 @@
color
:
#FFFFFF
;
}
}
}
}
.card-info-view
{
margin-top
:
30rpx
;
.card-list-view
{
.card-list-item
{
display
:
flex
;
justify-content
:
space-between
;
font-size
:
28rpx
;
margin-top
:
20rpx
;
margin-bottom
:
20rpx
;
color
:
#333333
;
.card-item-text
{
color
:
#666666
;
width
:
60%
;
}
}
.line-view
{
background-color
:
#F4F5F7
;
height
:
2rpx
;
width
:
100%
;
}
.card-item-error
{
color
:
red
;
font-size
:
20rpx
;
}
}
}
.info-view
{
margin-bottom
:
188rpx
;
.title-view
{
background-color
:
#FFFFFF
;
border-radius
:
12rpx
;
padding
:
38rpx
30rpx
30rpx
30rpx
;
margin-bottom
:
20rpx
;
font-size
:
32rpx
;
color
:
#333333
;
/* .back_view{
background-color: #FFFFFF;
position: absolute;
top: 0;
left: 0;
width: 100%;
display: flex;
flex-direction: column;
.title-image
{
width
:
24rpx
;
height
:
24rpx
;
margin-right
:
10rpx
;
}
}
.info-tip-text
{
font-size
:
24rpx
;
color
:
#666666
;
margin-top
:
10rpx
;
}
.image-view
{
margin-top
:
30rpx
;
display
:
flex
;
justify-content
:
space-between
;
.info-image
{
width
:
300rpx
;
height
:
226rpx
;
}
}
}
*/
</
style
>
src/pages/settle/prompt.vue
View file @
a029c047
...
...
@@ -163,11 +163,11 @@
width
:
750rpx
;
// height:500rpx;
display
:
flex
;
flex-direction
:
column
;
background-color
:
#F4F5F7
;
flex-direction
:
column
;
background-color
:
#F4F5F7
;
height
:
100%
;
position
:
absolute
;
position
:
absolute
;
.icon
{
margin-top
:
68rpx
;
width
:
334rpx
;
...
...
@@ -182,11 +182,11 @@
.content-view
{
background-color
:
#FFFFFF
;
margin-bottom
:
188rpx
;
border-radius
:
12rpx
;
border-radius
:
12rpx
;
padding
:
30rpx
;
}
.txt-box
{
.txt-box
{
padding-bottom
:
50rpx
;
}
...
...
@@ -200,9 +200,9 @@
color
:
#2272FF
;
&
.active
{
color
:
#666666
;
font-size
:
24rpx
;
font-weight
:
300rpx
;
color
:
#666666
;
font-size
:
24rpx
;
font-weight
:
300rpx
;
margin-top
:
26rpx
;
}
}
...
...
src/static/settle/tishi@3x.png
0 → 100644
View file @
a029c047
2.05 KB
src/utils/analysys_paas.js
View file @
a029c047
...
...
@@ -11,7 +11,7 @@ if (AnalysysAgent) {
// AnalysysAgent.autoShare = true
AnalysysAgent
.
allowTimeCheck
=
true
AnalysysAgent
.
autoTrack
=
true
AnalysysAgent
.
registerSuperProperty
(
"platform"
,
"
take-order
"
);
AnalysysAgent
.
registerSuperProperty
(
"platform"
,
"
self-support
"
);
}
// #endif
export
{
...
...
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