Commit c701448c authored by Facius's avatar Facius
parents 2547ffbd 36601a7b
...@@ -18,19 +18,24 @@ ...@@ -18,19 +18,24 @@
// 服务规范教程视频 // 服务规范教程视频
service_standard: { service_standard: {
"Course1": { "Course1": {
url: "https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4", url: "https://qn-static.banshouhui.com/self-support/videoen.mp4",
title: "第一节 接单服务标准", title: "第一节 师傅考核规则",
desc: "1.不同车企品牌结算价格不一,675元-1890元不等;", desc: "接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。",
}, },
"Course2": { "Course2": {
url: "https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4", url: "https://qn-static.banshouhui.com/self-support/videoen.mp4",
title: "第二节 完工服务标准", title: "第二节 安装材料及工具",
desc: "2.结算价格为包工包料价,安装材料根据车企品牌规格自行采购(电缆、空开、漏保);", desc: "接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。",
}, },
"Course3": { "Course3": {
url: "https://xy-hybrid.kakalili.com/web/vivaVideo/home/static/img/videoen.mp4", url: "https://qn-static.banshouhui.com/self-support/videoen.mp4",
title: "第二节 结算服务标准", title: "第二节 安装施工规范",
desc: "3.需具备一定的作业工具:如液压压线钳、冲击钻、电锤、登高安全带、电锤、绝缘电阻仪(摇表)、交流充电模拟器等;", desc: "接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。",
},
"Course4": {
url: "https://qn-static.banshouhui.com/self-support/videoen.mp4",
title: "第二节 录单上传要求",
desc: "接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。",
}, },
}, },
...@@ -46,10 +51,12 @@ ...@@ -46,10 +51,12 @@
that.globalData.token = util.getToken() that.globalData.token = util.getToken()
AnalysysAgent.registerSuperProperty("platform", "self-support"); AnalysysAgent.registerSuperProperty("platform", "self-support");
// 应用启动,或从后台进入前台显示
this.autoLogin()
}, },
onShow: function() { onShow: function() {
// 应用启动,或从后台进入前台显示 // 应用启动,或从后台进入前台显示
this.autoLogin() // this.autoLogin()
}, },
onHide: function() { onHide: function() {
// 应用从前台进入后台 // 应用从前台进入后台
...@@ -73,7 +80,9 @@ ...@@ -73,7 +80,9 @@
if (!res.data) { if (!res.data) {
return return
} }
if(typeof callBack == 'function') {
callBack(vm, res.data) callBack(vm, res.data)
}
uni.hideLoading() uni.hideLoading()
return res.data return res.data
...@@ -95,6 +104,7 @@ ...@@ -95,6 +104,7 @@
if (result) { if (result) {
if (result.code == 200 && result.data) { if (result.code == 200 && result.data) {
that.setUserData(result.data) that.setUserData(result.data)
that.getBaseInfo(that)
} }
} else { } else {
uni.showModal({ uni.showModal({
......
...@@ -8,16 +8,19 @@ import { ...@@ -8,16 +8,19 @@ import {
settledApiFun settledApiFun
} from '@/common/api/settled.js'; } from '@/common/api/settled.js';
import { learnApiFun } from "@/common/api/learn.js"; import { learnApiFun } from "@/common/api/learn.js";
import { orderApiFun } from "@/common/api/order.js";
let apiFun = function(vm) { let apiFun = function(vm) {
let commonApi = commonApiFun(vm); let commonApi = commonApiFun(vm);
let settledApi = settledApiFun(vm) let settledApi = settledApiFun(vm)
let cloudApi = cloudRulesApiFun(vm) let cloudApi = cloudRulesApiFun(vm)
let learnApi=learnApiFun(vm) let learnApi=learnApiFun(vm)
let orderApi=orderApiFun(vm)
let apiUrl = { let apiUrl = {
...commonApi, ...commonApi,
...settledApi, ...settledApi,
...cloudApi, ...cloudApi,
...learnApi ...learnApi,
...orderApi,
} }
return apiUrl return apiUrl
} }
......
let orderApiFun = function(vm){
let listByRecommendOrder = async (params = {}) => await vm.$u.get('/wxh-worker-rest/rest/recommend/order', params);
const orderApi = {
listByRecommendOrder,
}
return orderApi
}
module.exports = {
orderApiFun
}
\ No newline at end of file
...@@ -36,7 +36,10 @@ let settledApiFun = function(vm){ ...@@ -36,7 +36,10 @@ let settledApiFun = function(vm){
let listOrderingTutorials = async (params = {}) => await vm.$u.get(ucenterApiUrl+'/v1/settled/get-course-rate', params); 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); let saveCourseRate = async (params = {}) => await vm.$u.post(ucenterApiUrl+'/v1/settled/save-course-rate', params);
/* 获取消息内容列表 */
let listByNotice = async (params = {}) => await vm.$u.get(ucenterApiUrl+'/v1/notice/list', params);
const settledApi = { const settledApi = {
getSettleBaseInfo, getSettleBaseInfo,
...@@ -52,6 +55,7 @@ let settledApiFun = function(vm){ ...@@ -52,6 +55,7 @@ let settledApiFun = function(vm){
checkSettleSignInfo, checkSettleSignInfo,
listOrderingTutorials, listOrderingTutorials,
saveCourseRate, saveCourseRate,
listByNotice,
} }
return settledApi return settledApi
} }
......
...@@ -254,11 +254,6 @@ ...@@ -254,11 +254,6 @@
"path": "pages/settle/sign-contract", //启动页面,必选 "path": "pages/settle/sign-contract", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到 "query": "" //启动参数,在页面的onLoad函数里面得到
}, },
{
"name": "订单列表", //模式名称
"path": "pages/order/index", //启动页面,必选
"query": "" //启动参数,在页面的onLoad函数里面得到
},
{ {
"name": "订单 - 完工配置", //模式名称 "name": "订单 - 完工配置", //模式名称
"path": "pages/order/complete", //启动页面,必选 "path": "pages/order/complete", //启动页面,必选
......
This diff is collapsed.
<template> <template>
<view class="learn-vedio"> <view class="learn-vedio">
<view class="uni-padding-wrap uni-common-mt"> <view class="uni-padding-wrap uni-common-mt">
<view><video object-fit="cover" class="course-video" id="courseVideo" :src="courseSrc" <view
@error="videoErrorCallback" controls></video></view> ><video
object-fit="cover"
class="course-video"
id="courseVideo"
:src="courseSrc"
@error="videoErrorCallback"
controls
></video
></view>
<view class="title-content"> <view class="title-content">
<view class="item-content"> <view class="item-content">
<view class="item-st"> <view class="item-st">
<image style="width: 80rpx;height: 36rpx;" :src="kcImage"></image> <image style="width: 80rpx; height: 36rpx" :src="kcImage"></image>
<text class="item-st-text">{{courseTitle.split(' ') ? courseTitle.split(' ')[0] : ''}}</text> <text class="item-st-text">{{
courseTitle.split(" ") ? courseTitle.split(" ")[0] : ""
}}</text>
</view> </view>
<view class="item-title">{{courseTitle.split(' ') ? courseTitle.split(' ')[1] : ''}}</view> <view class="item-title">{{
courseTitle.split(" ") ? courseTitle.split(" ")[1] : ""
}}</view>
</view> </view>
<view>接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。</view> <view
>接单操作须知有助你快速了解充电桩安装业务,提高接单效率,请认真查看及学习。</view
>
</view> </view>
<view class="learn-view" v-if="currentIndex >= 0"> <view class="learn-view" v-if="courseId >= 0">
<view class="learn-view-title">视频内容介绍</view> <view class="learn-view-title">视频内容介绍</view>
<view class="learn-list" v-for="(item, key) in courseOutlines[currentIndex]" :key="key"> <view
<view class="learn-list-item">{{item}}</view> class="learn-list"
v-for="(item, key) in courseOutlines[courseId]"
:key="key"
>
<view class="learn-list-item">{{ item }}</view>
</view> </view>
</view> </view>
</view> </view>
...@@ -24,50 +42,47 @@ ...@@ -24,50 +42,47 @@
</template> </template>
<script> <script>
let app = getApp(); let app = getApp();
export default { export default {
data() { data() {
return { return {
courseId: '', courseId: "",
courseStatus: 0, courseStatus: 0,
courseSrc: '', courseSrc: "",
courseTitle: '', courseTitle: "",
courseDesc: '', courseDesc: "",
currentIndex: -1 // 第几个视频 currentIndex: -1, // 第几个视频
}; };
}, },
computed: { computed: {
courseOutlines() { // 视频内容介绍 courseOutlines() {
return [[ // 视频内容介绍
'1、考核规则:接单及时率', return {
'2、考核规则:上门及时率', 1: [
'3、考核规则:安装完工率', "1、考核规则:接单及时率",
'4、考核规则:资料提交及时率', "2、考核规则:上门及时率",
'5、考核规则:安装完工率', "3、考核规则:安装完工率",
'6、考核规则:客户满意度' "4、考核规则:资料提交及时率",
], "5、考核规则:安装完工率",
[ "6、考核规则:客户满意度",
'1、必备材料4大类',
'2、施工工具准备'
], ],
[ 2: ["1、必备材料4大类", "2、施工工具准备"],
'1、接线安装工艺标准', 3: [
'2、PVC、镀锌管电缆管明敷', "1、接线安装工艺标准",
'3、电缆敷设的防火要求', "2、PVC、镀锌管电缆管明敷",
'4、电源点标识', "3、电缆敷设的防火要求",
'5、配电箱接线及安装', "4、电源点标识",
'6、管线敷设接头处理', "5、配电箱接线及安装",
'7、充电桩内部接线', "6、管线敷设接头处理",
'8、配电箱安装' "7、充电桩内部接线",
"8、配电箱安装",
], ],
[ 4: ["1、勘测环节录单要求", "2、安装环节录单要求"],
'1、勘测环节录单要求', };
'2、安装环节录单要求'
]]
}, },
kcImage() { kcImage() {
return qn_base_url + 'kc.png' return qn_base_url + "kc.png";
} },
}, },
onLoad(e) { onLoad(e) {
if (e) { if (e) {
...@@ -87,60 +102,55 @@ ...@@ -87,60 +102,55 @@
} }
} }
}, },
onReady: function(res) { onReady: function (res) {
// #ifndef MP-ALIPAY // #ifndef MP-ALIPAY
this.videoContext = uni.createVideoContext('courseVideo'); this.videoContext = uni.createVideoContext("courseVideo");
// #endif // #endif
}, },
methods: { methods: {
videoErrorCallback: function(e) { videoErrorCallback: function (e) {
uni.showModal({ uni.showModal({
content: e.target.errMsg, content: e.target.errMsg,
showCancel: false showCancel: false,
}); });
}, },
getRandomColor: function() { getRandomColor: function () {
const rgb = []; const rgb = [];
for (let i = 0; i < 3; ++i) { for (let i = 0; i < 3; ++i) {
let color = Math.floor(Math.random() * 256).toString(16); let color = Math.floor(Math.random() * 256).toString(16);
color = color.length == 1 ? '0' + color : color; color = color.length == 1 ? "0" + color : color;
rgb.push(color); rgb.push(color);
} }
return '#' + rgb.join(''); return "#" + rgb.join("");
}, },
changeCourseStatus() { changeCourseStatus() {
let that = this let that = this;
if (that.courseId) { if (that.courseId) {
that.$u.api.saveCourseRate({ that.$u.api
courseId: that.courseId .saveCourseRate({
}).then(res => { courseId: that.courseId,
if (res.code == 200) {
// uni.navigateBack({delta: 1})
uni.navigateTo({
url: "/pages/learn/exam"
}) })
} else { .then((res) => {
if (res.code !== 200) {
uni.showToast({ uni.showToast({
icon: "none", icon: "none",
title: "更新课程状态失败" title: "更新课程状态失败",
}) });
} }
}).catch(e => { });
})
} else { } else {
uni.showToast({ uni.showToast({
title: "课程ID为空,请重新选择课程" title: "课程ID为空,请重新选择课程",
}) });
} }
}, },
} },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.learn-vedio { .learn-vedio {
background-color: #F4F5F7; background-color: #f4f5f7;
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
...@@ -148,26 +158,26 @@ ...@@ -148,26 +158,26 @@
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
} }
.course-video { .course-video {
width: 100%; width: 100%;
} }
.course-title { .course-title {
font-size: 36rpx; font-size: 36rpx;
font-weight: 700; font-weight: 700;
padding: 80rpx 60rpx 40rpx 60rpx; padding: 80rpx 60rpx 40rpx 60rpx;
} }
.course-desc { .course-desc {
margin-left: 60rpx; margin-left: 60rpx;
} }
.title-content { .title-content {
padding: 40rpx 30rpx; padding: 40rpx 30rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
background-color: #FFFFFF; background-color: #ffffff;
color: #999999; color: #999999;
font-size: 24rpx; font-size: 24rpx;
...@@ -185,7 +195,7 @@ ...@@ -185,7 +195,7 @@
line-height: 24rpx; line-height: 24rpx;
position: relative; position: relative;
.item-st-text { .item-st-text {
color: #FFFFFF; color: #ffffff;
position: absolute; position: absolute;
font-size: 16rpx; font-size: 16rpx;
left: 20rpx; left: 20rpx;
...@@ -199,35 +209,32 @@ ...@@ -199,35 +209,32 @@
font-size: 44rpx; font-size: 44rpx;
font-weight: bold; font-weight: bold;
} }
}
} .item-content {
.item-content {
display: flex; display: flex;
padding-bottom: 30rpx; padding-bottom: 30rpx;
} }
.item-title { .item-title {
color: #333333; color: #333333;
font-size: 28rpx; font-size: 28rpx;
} }
.learn-view { .learn-view {
background-color: #FFFFFF; background-color: #ffffff;
border-radius: 12rpx; border-radius: 12rpx;
padding: 38rpx 30rpx 30rpx 30rpx; padding: 38rpx 30rpx 30rpx 30rpx;
margin-bottom: 20rpx; margin-bottom: 20rpx;
font-size: 32rpx; font-size: 32rpx;
color: #333333; color: #333333;
.learn-view-title { .learn-view-title {
font-size: 32rpx; font-size: 32rpx;
font-weight: bold; font-weight: bold;
margin-bottom: 10rpx; margin-bottom: 10rpx;
} }
.learn-list { .learn-list {
.learn-list-item { .learn-list-item {
font: 24rpx; font: 24rpx;
margin-top: 30rpx; margin-top: 30rpx;
...@@ -235,10 +242,10 @@ ...@@ -235,10 +242,10 @@
} }
.line-view { .line-view {
background-color: #F4F5F7; background-color: #f4f5f7;
height: 2rpx; height: 2rpx;
width: 100%; width: 100%;
} }
} }
} }
</style> </style>
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
id: 'Course1', id: 'Course1',
courseId: 1, courseId: 1,
title: '', title: '',
value: '已学习', value: '去学习',
courseActive: {}, courseActive: {},
status: 1, status: 1,
url: '' url: ''
...@@ -104,6 +104,15 @@ ...@@ -104,6 +104,15 @@
courseActive: {}, courseActive: {},
status: 0, status: 0,
url: '' url: ''
},
{
id: 'Course4',
courseId: 4,
title: '',
value: '去学习',
courseActive: {},
status: 0,
url: ''
} }
], ],
tipsDescription: '接单考核可让您快速了解如何使用小程序,建议先查看学习教程' tipsDescription: '接单考核可让您快速了解如何使用小程序,建议先查看学习教程'
...@@ -160,8 +169,9 @@ ...@@ -160,8 +169,9 @@
that.$u.api that.$u.api
.listOrderingTutorials() .listOrderingTutorials()
.then(res => { .then(res => {
debugger
const results = res.data; const results = res.data;
if (res.status == 200 && results && results.length > 0) { if (res.code == 200 && results && results.length > 0) {
that.tutorials.forEach((data, i) => { that.tutorials.forEach((data, i) => {
if (results.hasOwnProperty(data.id)) { if (results.hasOwnProperty(data.id)) {
data.status = results[data.id]; data.status = results[data.id];
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
</image> </image>
</view> </view>
<view class="txt-box"> <view class="txt-box">
<text :class="['title', {failed: status == 4} ,index ? 'active' : '']" v-for="(txt,index) in info.txtArr">{{txt}}</text> <text :class="['title', {failed: status == 4} ,index ? 'active' : '']" v-for="(txt,index) in info.txtArr" :key="index">{{txt}}</text>
</view> </view>
<view class="tips-box" v-if="info.tipsArr"> <view class="tips-box" v-if="info.tipsArr">
<text :class="['tips',info.tipsArr.length>1 && index===0 ? 'red' : '']" <text :class="['tips',info.tipsArr.length>1 && index===0 ? 'red' : '']"
v-for="(txt,index) in info.tipsArr">{{txt}}</text> v-for="(txt,index) in info.tipsArr" :key="index">{{txt}}</text>
</view> </view>
<view class="services-view"> <view class="services-view">
<image class="service-info-image" :src="erweimaImage"></image> <image class="service-info-image" :src="erweimaImage"></image>
......
...@@ -33,6 +33,7 @@ function authorization(data) { ...@@ -33,6 +33,7 @@ function authorization(data) {
if (res) { if (res) {
if (res.code == 200 && res.data) { if (res.code == 200 && res.data) {
app.setUserData(res.data) app.setUserData(res.data)
app.getBaseInfo(app.$vm)
resolve(res); resolve(res);
} else { } else {
reject(res); reject(res);
...@@ -53,6 +54,7 @@ function signup(data) { ...@@ -53,6 +54,7 @@ function signup(data) {
if (res) { if (res) {
if (res.code == 200 && res.data) { if (res.code == 200 && res.data) {
app.setUserData(res.data) app.setUserData(res.data)
app.getBaseInfo(app.$vm)
resolve(res); resolve(res);
} else { } else {
uni.showModal({ uni.showModal({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment