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
7bf48276
Commit
7bf48276
authored
Apr 16, 2021
by
Morson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、登录页接入易观埋点
2、入驻-在线考试页面搭建 3、入驻-培训视频页面搭建 4、入驻-培训视频接口对接
parent
0487b6ba
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
418 additions
and
32 deletions
+418
-32
.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
index.vue
src/pages/index/index.vue
+12
-12
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
analysys_paas.js
src/utils/analysys_paas.js
+1
-1
No files found.
.gitignore
View file @
7bf48276
...
...
@@ -21,3 +21,4 @@ yarn-error.log*
*.njsproj
*.sln
*.sw*
.history/
src/App.vue
View file @
7bf48276
<
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 @
7bf48276
...
...
@@ -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 @
7bf48276
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 @
7bf48276
//易观方舟
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/index/index.vue
View file @
7bf48276
...
...
@@ -26,7 +26,7 @@
</OrderCell>
</view>
<u-loadmore
:status=
"currentLoadStatus"
bgColor=
"#f2f2f2"
></u-loadmore>
</view>
</view>
<!-- 入驻成功之后无推荐订单 -->
<view
v-else-if=
"status == 7 && orderList.length
<
=
0
"
>
暂无订单
...
...
@@ -115,18 +115,18 @@
},
onShow
()
{
// 每次进入页面都刷新入驻状态
if
(
app
.
globalData
.
token
)
{
if
(
app
.
globalData
.
token
)
{
// 获取是否显示入驻按钮
this
.
initSettleInfo
()
}
},
methods
:
{
async
initSettleInfo
()
{
if
(
this
.
status
==
7
)
return
async
initSettleInfo
()
{
if
(
this
.
status
==
7
)
return
const
callBack
=
(
vm
,
result
)
=>
{
// 后台自动判断入驻流程是否完成,前台通过status确定状态
if
(
result
&&
result
.
record
)
{
// vm.status = result.record.status
// vm.status = result.record.status
vm
.
status
=
0
}
}
...
...
@@ -137,9 +137,9 @@
this
.
_freshing
=
true
;
// 获取入驻状态
this
.
initSettleInfo
()
// 获取推荐订单及数量
// ....
this
.
initSettleInfo
()
// 获取推荐订单及数量
// ....
setTimeout
(()
=>
{
// 数据加载完成更新入驻状态和推荐列表
...
...
@@ -178,9 +178,9 @@
console
.
log
(
'-----scroll-------'
)
},
immediatelyIn
()
{
if
(
util
.
getToken
())
{
uni
.
navigateTo
({
url
:
this
.
status
>
0
?
'/pages/settle/prompt'
:
'/pages/settle/index'
if
(
util
.
getToken
())
{
uni
.
navigateTo
({
url
:
this
.
status
>
0
?
'/pages/settle/prompt'
:
'/pages/settle/index'
})
}
else
{
uni
.
navigateTo
({
...
...
@@ -224,4 +224,4 @@
.order-view
{
text-align
:
center
;
}
</
style
>
</
style
>
src/pages/learn/course-detail.vue
0 → 100644
View file @
7bf48276
<
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 @
7bf48276
<
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 @
7bf48276
...
...
@@ -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/utils/analysys_paas.js
View file @
7bf48276
...
...
@@ -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