diff --git a/common/js/data.js b/common/js/data.js
index bb00a78..38ef22f 100644
--- a/common/js/data.js
+++ b/common/js/data.js
@@ -86,15 +86,11 @@ const myTeamInfo = {
}
const masterRules = [
- '0规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '1规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '2规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '3规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '4规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '5规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '6规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '7规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容',
- '8规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容规则内容'
+ '接单:属于您的订单请30分钟内接单。',
+ '预约:接单后立即预约,超时30分钟会提示,超1小时你有责;',
+ '排单:按约排单,30分钟未排单提示超时,超1小时你有责;',
+ '上门:按约准时上门,超时上门或被投诉未上门,你有责;',
+ '退单:当天订单不得私自退单,遇事可提前3小时与客户沟通妥善。紧急问题且沟通不畅的,请联系你上级或平台客服。上门时间3小时范围内退单的,产生责任由你承担。',
]
// type: 0=升降序,1=功能按钮;order: 0=升序,1=降序;
@@ -322,7 +318,12 @@ const timeRangeList = [
'18:00-18:30',
'18:30-19:00',
'19:00-19:30',
- '19:30-20:00'
+ '19:30-20:00',
+ '19:00-20:00',
+ '20:00-21:00',
+ '21:00-22:00',
+ '22:00-23:00',
+ '23:00-24:00',
]
const servDetail = {
diff --git a/common/js/dateUtil.js b/common/js/dateUtil.js
index 418493e..fc6f5a1 100644
--- a/common/js/dateUtil.js
+++ b/common/js/dateUtil.js
@@ -27,6 +27,12 @@ export default {
}
return this.countDownDiffCache;
},
+ addDays(dateStr, dayAmount) {
+ let date = new Date(dateStr);
+ // 使用时间戳计算,避免时区问题
+ const timestamp = date.getTime() + (dayAmount * 24 * 60 * 60 * 1000);
+ return new Date(timestamp);
+ },
addHours(dateStr, hourAmount) {
let date = new Date(dateStr);
date.setHours(date.getHours() + hourAmount);
diff --git a/common/js/request.js b/common/js/request.js
index 3020eb1..3b522f7 100644
--- a/common/js/request.js
+++ b/common/js/request.js
@@ -1,53 +1,77 @@
import globalData from '@/common/js/globalData.js';
-export default {
- // address: 'https://www.opsoul.com:8881',
- address: 'https://gmhl.opsoul.com',
+export default {
+ address: 'https://gmhl.gmjlb.com',
+ // address: 'https://gmhl.opsoul.com',
// 异步接口拦截
- addInterceptor() {
+ addInterceptor() {
let _this = this;
uni.addInterceptor('request', {
invoke(args) {
- uni.showLoading({
- mask: true,
- title: '加载中'
- })
- let userInfo = _this.getCurUserInfo();
+ if(!args.hideLoading) {
+ uni.showLoading({
+ mask: true,
+ title: '加载中'
+ })
+ }
+
+ let userInfo = _this.getCurUserInfo();
+
+ // if(userInfo.loginStatus == 1) {
+ // // 禁止登录,退出登录
+ // uni.clearStorageSync('userProfile');
+ // uni.showToast({
+ // icon: 'none',
+ // title: '您已被禁止登录',
+ // duration: 3000,
+ // success() {
+ // setTimeout(() => {
+ // uni.hideLoading();
+ // uni.reLaunch({
+ // url: '/pages/login/login'
+ // })
+ // }, 3000)
+ // }
+ // })
+ // return
+ // }
// request 触发前拼接 url
// args.url = 'https://www.opsoul.com:8881' + args.url;
- // args.url = 'http://127.0.0.1:80' + args.url;
- args.url = 'https://gmhl.opsoul.com' + args.url;
-
- if (!args.data) {
- args.data = {}
- }
- if (args.data instanceof Object) {
- args.data.deptId = globalData.deptId;
- args.data.from = globalData.from;
- if (args.data.workerId === undefined && userInfo && userInfo.workerId) {
- args.data.workerId = userInfo.workerId;
- }
- }
-
- if (!args.header) {
- args.header = {}
- }
- args.header.deptId = globalData.deptId;
+ // args.url = 'http://127.0.0.1:80' + args.url;
+ // args.url = 'https://gmhl.opsoul.com' + args.url;
+ args.url = 'https://gmhl.gmjlb.com' + args.url;
+
+ if (!args.data) {
+ args.data = {}
+ }
+ if (args.data instanceof Object) {
+ args.data.deptId = globalData.deptId;
+ args.data.from = globalData.from;
+ if (args.data.workerId === undefined && userInfo && userInfo.workerId) {
+ args.data.workerId = userInfo.workerId;
+ }
+ }
+
+ if (!args.header) {
+ args.header = {}
+ }
+ args.header.deptId = globalData.deptId;
args.header.from = globalData.from;
// console.log("停止触发");
- // return false;
+ // return false;
},
- success(res) {
+ success(res) {
uni.hideLoading();
if (!res || !res.data || res.data.code !== 0) {
uni.showToast({
- title: '系统错误',
+ title: res.data.msg || '系统错误',
icon: 'error'
})
- }
+ }
+ // _this.getAndSetWorkerInfo()
},
- fail(err) {
- console.log(err);
+ fail(err) {
+ console.log(err);
uni.hideLoading();
uni.showToast({
title: '请求失败',
@@ -86,218 +110,246 @@ export default {
}
})
},
- async login() {
- let userInfo = await wx.getUserProfile({
- desc: '用于小程序登录'
- });
- // console.log("从微信获取基本用户信息:" + userInfo);
- // 获取微信登录凭证
- const wxLoginRes = await wx.login();
- // console.log(wxLoginRes)
- // 获取openid
- const wxAuthRes = await uni.request({
- url: '/wx/auth',
- header: {
- code: wxLoginRes.code
- }
- })
- // console.log(wxAuthRes)
- const openId = wxAuthRes[1].data.data.openid;
- // 第一次从服务端获取用户信息
- let wxGetUserRes = await this.qryUserInfo(openId);
- // 获取失败则获取微信信息再调用注册接口
- if (!wxGetUserRes.data) {
- // 注册完成后再次从服务端获取用户信息
- let registerRes = await this.registerUser({
- openId: openId,
- name: userInfo.userInfo.nickName,
- workerLogoUrl: userInfo.userInfo.avatarUrl
- });
- if (registerRes.code === 0) {
- wxGetUserRes = await this.qryUserInfo(openId);
- }
- }
- if (!wxGetUserRes.data) {
- userInfo = null;
- } else {
- userInfo = {
- ...wxGetUserRes.data,
- wxLoginCode: wxLoginRes.code
- }
- }
- // console.log("通过后台服务获取用户信息:" + userInfo);
- if (!userInfo || userInfo.workerId == null || userInfo.workerId == undefined) {
- uni.showToast({
- icon: 'none',
- title: '微信用户信息获取失败,请退出小程序重试'
- })
- return false;
- }
- // 页面存储用户登录有效信息,以便其他页面调用
- uni.setStorageSync('userProfile', userInfo);
+ async login() {
+ let userInfo = await wx.getUserProfile({
+ desc: '用于小程序登录'
+ });
+ // console.log("从微信获取基本用户信息:" + userInfo);
+ // 获取微信登录凭证
+ const wxLoginRes = await wx.login();
+ // console.log(wxLoginRes)
+ // 获取openid
+ const wxAuthRes = await uni.request({
+ url: '/wx/auth',
+ header: {
+ code: wxLoginRes.code
+ }
+ })
+ // console.log(wxAuthRes)
+ const openId = wxAuthRes[1].data.data.openid;
+ // 第一次从服务端获取用户信息
+ let wxGetUserRes = await this.qryUserInfo(openId);
+ // 获取失败则获取微信信息再调用注册接口
+ if (!wxGetUserRes.data) {
+ // 注册完成后再次从服务端获取用户信息
+ let registerRes = await this.registerUser({
+ openId: openId,
+ name: userInfo.userInfo.nickName,
+ workerLogoUrl: userInfo.userInfo.avatarUrl
+ });
+ if (registerRes.code === 0) {
+ wxGetUserRes = await this.qryUserInfo(openId);
+ }
+ }
+ if (!wxGetUserRes.data) {
+ userInfo = null;
+ } else {
+ userInfo = {
+ ...wxGetUserRes.data,
+ wxLoginCode: wxLoginRes.code
+ }
+ }
+ // console.log("通过后台服务获取用户信息:" + userInfo);
+ if (!userInfo || userInfo.workerId == null || userInfo.workerId == undefined) {
+ uni.showToast({
+ icon: 'none',
+ title: '微信用户信息获取失败,请退出小程序重试'
+ })
+ return false;
+ }
+ // 页面存储用户登录有效信息,以便其他页面调用
+ uni.setStorageSync('userProfile', userInfo);
return true;
+ },
+ async getWxUserInfo() {
+ // 获取微信登录凭证
+ const wxLoginRes = await wx.login();
+ // 获取openid
+ const wxAuthRes = await uni.request({
+ url: '/wx/auth',
+ header: {
+ code: wxLoginRes.code
+ }
+ })
+ const openId = wxAuthRes[1].data.data.openid;
+ // 从服务端获取用户信息
+ let wxGetUserRes = await this.qryUserInfo(openId);
+ let userInfo = null;
+ if (wxGetUserRes.data) {
+ userInfo = {
+ ...wxGetUserRes.data,
+ wxLoginCode: wxLoginRes.code
+ }
+ }
+ return userInfo;
+ },
+ async storageExistUser() {
+ // 获取微信登录凭证
+ const wxLoginRes = await wx.login();
+ // 获取openid
+ const wxAuthRes = await uni.request({
+ url: '/wx/auth',
+ header: {
+ code: wxLoginRes.code
+ }
+ })
+ const openId = wxAuthRes[1].data.data.openid;
+ // 从服务端获取用户信息
+ let wxGetUserRes = await this.qryUserInfo(openId);
+ let userInfo = null;
+ if (wxGetUserRes.data) {
+ userInfo = {
+ ...wxGetUserRes.data,
+ wxLoginCode: wxLoginRes.code
+ }
+ }
+ uni.clearStorageSync('userProfile');
+ uni.setStorageSync('userProfile', userInfo);
},
- async getWxUserInfo() {
- // 获取微信登录凭证
- const wxLoginRes = await wx.login();
- // 获取openid
- const wxAuthRes = await uni.request({
- url: '/wx/auth',
- header: {
- code: wxLoginRes.code
- }
- })
- const openId = wxAuthRes[1].data.data.openid;
- // 从服务端获取用户信息
- let wxGetUserRes = await this.qryUserInfo(openId);
- let userInfo = null;
- if (wxGetUserRes.data) {
- userInfo = {
- ...wxGetUserRes.data,
- wxLoginCode: wxLoginRes.code
- }
+ async GetCurrentLocation() {
+ let res = await this.wxGetLocation()
+ console.log(res);
+ if (!res || !res.latitude) {
+ return;
}
- return userInfo;
- },
- async storageExistUser() {
- // 获取微信登录凭证
- const wxLoginRes = await wx.login();
- // 获取openid
- const wxAuthRes = await uni.request({
- url: '/wx/auth',
- header: {
- code: wxLoginRes.code
- }
- })
- const openId = wxAuthRes[1].data.data.openid;
- // 从服务端获取用户信息
- let wxGetUserRes = await this.qryUserInfo(openId);
- let userInfo = null;
- if (wxGetUserRes.data) {
- userInfo = {
- ...wxGetUserRes.data,
- wxLoginCode: wxLoginRes.code
- }
- }
- uni.clearStorageSync('userProfile');
- uni.setStorageSync('userProfile', userInfo);
- },
- async registerUser(params = {}) {
- let res = await uni.request({
- url: '/wx/addWorker',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async noticeMsg(params = {}) {
- let res = await uni.request({
- url: '/wx/noticeMsg',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async sendVertifyCode(params = {}) {
- let res = await uni.request({
- url: '/tool/sms/send',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async realRegisterUser(params = {}) {
- let res = await uni.request({
- url: '/worker/register',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async appLogin(params = {}) {
- let res = await uni.request({
- url: '/worker/login',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryUserInfo(openId, phone) {
- let res = await uni.request({
- url: '/wx/getWorkerInfo',
+ let res1 = await uni.request({
+ url: '/tool/baidu/getLocation',
method: 'POST',
data: {
- openId: openId,
- phone: phone
+ location: res.latitude + ',' + res.longitude
}
})
- return res[1].data;
+ let areaRes = res1[1].data
+ return areaRes.data;
},
- async qryUserPhone(code) {
- let res = await uni.request({
- url: '/wx/auth/phone',
- method: 'GET',
- header: {
- code: code
- }
- })
- return res[1].data;
- },
- async updateUserPhone(params = {}) {
- let res = await uni.request({
- url: '/worker/update',
+ async TransformLocation(params) {
+ let res1 = await uni.request({
+ url: '/tool/baidu/getLocation',
method: 'POST',
- data: params
+ data: {
+ location: params.latitude + ',' + params.longitude
+ }
})
- // 更新用户信息的方法顺便更新本地缓存
- if (res[1].data.code === 0) {
- let userInfo = this.getCurUserInfo();
- userInfo.phone = params.phone;
- userInfo.account = params.account;
- uni.setStorageSync('userProfile', userInfo);
- }
- return res[1].data;
- },
- async storagePhoneIntoUserInfo(code) {
- let phoneRes = await this.qryUserPhone(code)
- if (phoneRes && phoneRes.data) {
- let userInfo = this.getCurUserInfo();
- await this.updateUserPhone({
- workerId: userInfo.workerId,
- account: phoneRes.data,
- phone: phoneRes.data
- })
- return true;
- }
+ let areaRes = res1[1].data
+ return areaRes.data;
+ },
+ async registerUser(params = {}) {
+ let res = await uni.request({
+ url: '/wx/addWorker',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async noticeMsg(params = {}) {
+ let res = await uni.request({
+ url: '/wx/noticeMsg',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async sendVertifyCode(params = {}) {
+ let res = await uni.request({
+ url: '/tool/sms/send',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async realRegisterUser(params = {}) {
+ let res = await uni.request({
+ url: '/worker/register',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async appLogin(params = {}) {
+ let res = await uni.request({
+ url: '/worker/login',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryUserInfo(openId, phone) {
+ let res = await uni.request({
+ url: '/wx/getWorkerInfo',
+ method: 'POST',
+ data: {
+ openId: openId,
+ phone: phone
+ }
+ })
+ return res[1].data;
+ },
+ async qryUserPhone(code) {
+ let res = await uni.request({
+ url: '/wx/auth/phone',
+ method: 'GET',
+ header: {
+ code: code
+ }
+ })
+ return res[1].data;
+ },
+ async updateUserPhone(params = {}) {
+ let res = await uni.request({
+ url: '/worker/update',
+ method: 'POST',
+ data: params
+ })
+ // 更新用户信息的方法顺便更新本地缓存
+ if (res[1].data.code === 0) {
+ let userInfo = this.getCurUserInfo();
+ userInfo.phone = params.phone;
+ userInfo.account = params.account;
+ uni.setStorageSync('userProfile', userInfo);
+ }
+ return res[1].data;
+ },
+ async storagePhoneIntoUserInfo(code) {
+ let phoneRes = await this.qryUserPhone(code)
+ if (phoneRes && phoneRes.data) {
+ let userInfo = this.getCurUserInfo();
+ await this.updateUserPhone({
+ workerId: userInfo.workerId,
+ account: phoneRes.data,
+ phone: phoneRes.data
+ })
+ return true;
+ }
},
getCurUserInfo() {
- let userProfile = uni.getStorageSync('userProfile');
+ let userProfile = uni.getStorageSync('userProfile');
+
return userProfile;
- },
- async refreshCurUserCache() {
- let newUserInfo = await this.getCurUserNoCache();
- uni.setStorageSync('userProfile', newUserInfo);
- },
- updateCache(cacheKey, cacheVal) {
- uni.setStorageSync(cacheKey, cacheVal);
- },
- async getCurUserNoCache() {
- let userInfo = this.getCurUserInfo();
- let wxGetUserRes = await this.qryUserInfo(userInfo.openId);
- if (!wxGetUserRes.data) {
- userInfo = null;
- } else {
- userInfo = {
- ...wxGetUserRes.data,
- wxLoginCode: userInfo.wxLoginCode
- }
- }
- return userInfo;
- },
- async updateCurUserCache() {
- let curUserInfo = await this.getCurUserNoCache();
- uni.setStorageSync('userProfile', curUserInfo);
- return true;
+ },
+ async refreshCurUserCache() {
+ let newUserInfo = await this.getCurUserNoCache();
+ uni.setStorageSync('userProfile', newUserInfo);
+ },
+ updateCache(cacheKey, cacheVal) {
+ uni.setStorageSync(cacheKey, cacheVal);
+ },
+ async getCurUserNoCache() {
+ let userInfo = this.getCurUserInfo();
+ let wxGetUserRes = await this.qryUserInfo(userInfo.openId);
+ if (!wxGetUserRes.data) {
+ userInfo = null;
+ } else {
+ userInfo = {
+ ...wxGetUserRes.data,
+ wxLoginCode: userInfo.wxLoginCode
+ }
+ }
+ return userInfo;
+ },
+ async updateCurUserCache() {
+ let curUserInfo = await this.getCurUserNoCache();
+ uni.setStorageSync('userProfile', curUserInfo);
+ return true;
},
async uploadFile(filePath) {
let res = await uni.uploadFile({
@@ -305,427 +357,724 @@ export default {
filePath: filePath,
name: 'uploadFile'
})
- let resStr = res[1].data;
- let resObj = null;
- if (resStr != null && resStr.length > 0) {
- try {
- resObj = JSON.parse(resStr);
- } catch(e) {
- console.log(e)
- }
- }
- if (!resObj || resObj.code !== 0) {
- uni.showToast({
- icon: 'error',
- title: '上传失败'
- })
- return '';
- }
+ let resStr = res[1].data;
+ let resObj = null;
+ if (resStr != null && resStr.length > 0) {
+ try {
+ resObj = JSON.parse(resStr);
+ } catch (e) {
+ console.log(e)
+ }
+ }
+ if (!resObj || resObj.code !== 0) {
+ uni.showToast({
+ icon: 'error',
+ title: '上传失败'
+ })
+ return '';
+ }
return resObj.url;
+ },
+ async qrySpecialSkillList(params = {
+ goodsCategoryId: null
+ }) {
+ let res = await uni.request({
+ url: '/special/skill/list',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async listByStep(params = {
+ goodsCategoryId: null
+ }) {
+ let res = await uni.request({
+ url: '/goods/deptcategory/listByStep',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async areaListByStep(params = {
+ parentCode: null
+ }) {
+ let res = await uni.request({
+ url: '/system/area/app/list',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async bindBankCard(params) {
+ let res = await uni.request({
+ url: '/worker/bank/bind',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getBindBankCardByWorkerId(params) {
+ let res = await uni.request({
+ url: '/worker/bank/getByWorkerId',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async insuranceUserList(params) {
+ let res = await uni.request({
+ url: '/insurance/user/app/list',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async insuranceUserAdd(params) {
+ let res = await uni.request({
+ url: '/insurance/user/add',
+ method: 'POST',
+ data: params,
+ hideLoading: true
+ })
+ return res[1].data;
+ },
+ async addGoods(params) {
+ let res = await uni.request({
+ url: '/goods/goods/addGoods',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async addTeam(params = {}) {
+ let res = await uni.request({
+ url: '/worker/team/addTeam',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getTeamPage(params = {}) {
+ let res = await uni.request({
+ url: '/worker/team/getTeamList',
+ method: 'POST',
+ data: params,
+ header: {
+ pageNum: params.pageNum,
+ pageSize: params.pageSize
+ }
+ })
+ return res[1].data;
+ },
+ async updateWorker(params = {}) {
+ let res = await uni.request({
+ url: '/worker/update',
+ method: 'POST',
+ data: params
+ })
+ // 更新用户信息的方法顺便更新本地缓存
+ if (res[1].data.code === 0) {
+ let userInfo = this.getCurUserInfo();
+ let qryUserInfoRes = await this.qryUserInfo(userInfo.openId);
+ let newUserInfo = {
+ ...qryUserInfoRes.data,
+ wxLoginCode: userInfo.wxLoginCode
+ };
+ uni.setStorageSync('userProfile', newUserInfo);
+ }
+ return res[1].data;
+ },
+ async updateWorkerTeam(params = {}) {
+ let res = await uni.request({
+ url: '/worker/team/updateTeam',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryFinancialCount(params = {}) {
+ let res = await uni.request({
+ url: '/financial/detail/count',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryFinancialDetail(params = {}) {
+ let res = await uni.request({
+ url: '/financial/detail/app/list',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryMasterOrderPage(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/app/list',
+ method: 'POST',
+ data: params,
+ header: {
+ pageNum: params.pageNum,
+ pageSize: params.pageSize,
+ orderByColumn: params.orderByColumn ? params.orderByColumn : "",
+ isAsc: params.isAsc ? params.isAsc : ""
+ }
+ })
+ return res[1].data;
+ },
+ async getOrderMasterDetail(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/app/detail',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryMixOrderList(params = {}) {
+ let res = await uni.request({
+ url: '/order/app/mix/order/list',
+ method: 'POST',
+ data: params,
+ header: {
+ orderByColumn: params.orderByColumn ? params.orderByColumn : "",
+ isAsc: params.isAsc ? params.isAsc : ""
+ }
+ })
+ return res[1].data;
+ },
+ async qryMixAfterList(params = {}) {
+ let res = await uni.request({
+ url: '/order/app/mix/after/list',
+ method: 'POST',
+ data: params,
+ header: {
+ orderByColumn: params.orderByColumn ? params.orderByColumn : "",
+ isAsc: params.isAsc ? params.isAsc : ""
+ }
+ })
+ return res[1].data;
+ },
+ async updateOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/editOrderMaster',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getCanAssignList(params = {}) {
+ let res = await uni.request({
+ url: '/order/can/assign',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async assign(params = {}) {
+ let res = await uni.request({
+ url: '/order/assign',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
},
- async qrySpecialSkillList(params = {goodsCategoryId : null}) {
- let res = await uni.request({
- url: '/special/skill/list',
- method: 'POST',
- data: params
- })
+ async checkOrderInsurance(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/orderInsurance?orderCode='+params.orderCode,
+ method: 'POST',
+ data: params
+ })
return res[1].data;
+ },
+ async qryDetailOrderPage(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/list',
+ method: 'POST',
+ data: params,
+ header: {
+ pageNum: params.pageNum,
+ pageSize: params.pageSize,
+ orderByColumn: params.orderByColumn ? params.orderByColumn : "",
+ isAsc: params.isAsc ? params.isAsc : ""
+ }
+ })
+ return res[1].data;
+ },
+ async updateDetailOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/edit',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async applyFinishOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/applyFinishOrder',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getOrderDetail(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/detail',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async workerSettled(params = {}) {
+ let res = await uni.request({
+ url: '/worker/settled',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryProductPage(params = {}) {
+ let res = await uni.request({
+ url: '/goods/goods/app/list',
+ method: 'POST',
+ data: params,
+ header: {
+ pageNum: params.pageNum,
+ pageSize: params.pageSize
+ }
+ })
+ return res[1].data;
+ },
+ async editGoods(params = {}) {
+ let res = await uni.request({
+ url: '/goods/goods/app/edit',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qryProductDetail(params = {}) {
+ let res = await uni.request({
+ url: '/goods/goods/app/detail',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async updateGoodsStatus(params = {}) {
+ let res = await uni.request({
+ url: '/goods/goods/app/updateStatus',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getWorkerArea(params = {}) {
+ let res = await uni.request({
+ url: '/worker/area/worker',
+ method: 'GET',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getWorkerGoodsCategory(params = {}) {
+ let res = await uni.request({
+ url: '/worker/goods/category/worker',
+ method: 'GET',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getWorkerSpecialSkill(params = {}) {
+ let res = await uni.request({
+ url: '/worker/special/skill/' + params.workerId,
+ method: 'POST'
+ })
+ return res[1].data;
+ },
+ async getWorkerAreaEdit(params = {}) {
+ let res = await uni.request({
+ url: '/worker/area/worker/edit',
+ method: 'GET',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getWorkerGoodsCategoryEdit(params = {}) {
+ let res = await uni.request({
+ url: '/worker/goods/category/worker/edit',
+ method: 'GET',
+ data: params
+ })
+ return res[1].data;
+ },
+ async qrPay(params = {}) {
+ let res = await uni.request({
+ url: '/pay/ali/qr',
+ method: 'POST',
+ data: params.orderMasterId
+ })
+ return res[1].data;
+ },
+ async priceAddedQrPay(params = {}) {
+ let res = await uni.request({
+ url: '/pay/ali/addQr',
+ method: 'POST',
+ data: params.orderDetailId
+ })
+ return res[1].data;
+ },
+ async updateMasterOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/editOrderMaster',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async addWorkerCertify(params = {}) {
+ let res = await uni.request({
+ url: '/worker/certification/app/add',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getWorkerCertify(params = {}) {
+ let res = await uni.request({
+ url: '/worker/certification/app/getByWorkerId',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async orderStatistics(params = {}) {
+ let res = await uni.request({
+ url: '/order/app/statistics',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async rejectDetailOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/order/reject',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async rejectMasterOrderWhenAccepted(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/console/cancel',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
},
- async listByStep(params = {goodsCategoryId : null}) {
+ async goodsOrderRefund(params = {}) {
let res = await uni.request({
- url: '/goods/deptcategory/listByStep',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async areaListByStep(params = { parentCode: null }) {
- let res = await uni.request({
- url: '/system/area/app/list',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async bindBankCard(params) {
- let res = await uni.request({
- url: '/worker/bank/bind',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async getBindBankCardByWorkerId(params) {
- let res = await uni.request({
- url: '/worker/bank/getByWorkerId',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async addGoods(params) {
- let res = await uni.request({
- url: '/goods/goods/addGoods',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async addTeam(params = {}) {
- let res = await uni.request({
- url: '/worker/team/addTeam',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async getTeamPage(params = {}) {
- let res = await uni.request({
- url: '/worker/team/getTeamList',
+ url: '/order/master/goodsOrderRefund',
method: 'POST',
data: params,
header: {
- pageNum: params.pageNum,
- pageSize: params.pageSize
+ 'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
- async updateWorker(params = {}) {
+ async deleteAttachPrice(params = {}) {
let res = await uni.request({
- url: '/worker/update',
- method: 'POST',
- data: params
- })
- // 更新用户信息的方法顺便更新本地缓存
- if (res[1].data.code === 0) {
- let userInfo = this.getCurUserInfo();
- let qryUserInfoRes = await this.qryUserInfo(userInfo.openId);
- let newUserInfo = {
- ...qryUserInfoRes.data,
- wxLoginCode: userInfo.wxLoginCode
- };
- uni.setStorageSync('userProfile', newUserInfo);
- }
- return res[1].data;
- },
- async updateWorkerTeam(params = {}) {
- let res = await uni.request({
- url: '/worker/team/updateTeam',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryFinancialCount(params = {}) {
- let res = await uni.request({
- url: '/financial/detail/count',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryFinancialDetail(params = {}) {
- let res = await uni.request({
- url: '/financial/detail/app/list',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryMasterOrderPage(params = {}) {
- let res = await uni.request({
- url: '/order/master/app/list',
+ url: '/order/attach/deleteByDetailId',
method: 'POST',
data: params,
header: {
- pageNum: params.pageNum,
- pageSize: params.pageSize,
- orderByColumn: params.orderByColumn ? params.orderByColumn : "",
- isAsc: params.isAsc ? params.isAsc : ""
+ 'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
+ },
+ async changeOrderPrice(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/change/price',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getChangeOrderPrice(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/getChangePrice',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async getAfterList() {
+ let res = await uni.request({
+ url: '/order/detail/after/list',
+ method: 'POST',
+ data: {}
+ })
+ return res[1].data;
+ },
+ async editOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/edit',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async editAfterServiceRecord(params = {}) {
+ let res = await uni.request({
+ url: '/worker/record/edit',
+ method: 'POST',
+ data: params,
+ header: {
+ pageNum: params.pageNum,
+ pageSize: params.pageSize
+ }
+ })
+ return res[1].data;
},
- async getOrderMasterDetail(params = {}) {
+ async allocateServiceMoney(params) {
let res = await uni.request({
- url: '/order/master/app/detail',
+ url: '/order/generate/service/order',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async checkAuth(authScope, callbackName, callbackSuccessKey) {
+ let _this = this;
+ // 通过 wx.getSetting 先查询一下用户是否授权了authScope
+ let res1 = await wx.getSetting();
+ if (res1) {
+ if (!res1.authSetting[authScope]) {
+ let res = await _this[callbackName]();
+ if (res && res[callbackSuccessKey]) {
+ return res;
+ }
+ // 用户授权
+ uni.showToast({
+ title: '请先授权',
+ icon: 'none',
+ duration: 1500
+ })
+ return 'rejected';
+ } else {
+ return await _this[callbackName]();
+ }
+ }
+ },
+ async openAndAuthSetting(authScope) {
+ wx.openSetting({
+ success(res) {
+ if (res[authScope]) {
+ return true;
+ }
+ }
+ })
+ uni.showToast({
+ icon: 'error',
+ duration: 1500,
+ title: '授权失败'
+ })
+ return false;
+ },
+ async wxGetLocation() {
+ let errCode = null;
+ return new Promise((resolve, reject) => {
+ wx.getLocation({
+ type: 'gcj02',
+ fail: async (result) => {
+ if (result.errCode === 2) {
+ uni.showToast({
+ title: '定位获取失败,请确认是否开启定位',
+ icon: 'none',
+ duration: 2500
+ })
+ }
+ reject(null)
+ },
+ success: async (result) => {
+ console.log("success", result);
+ resolve(result)
+ }
+ })
+ })
+
+ },
+
+ async callCustomer(params = {}) {
+ let res = await uni.request({
+ url: '/order/master/callCustomer',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+
+ async callDetailCustomer(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/callCustomer',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+
+ async addOrderAttach(params = {}) {
+ let res = await uni.request({
+ url: '/order/attach/appAdd',
+ method: 'POST',
+ data: params,
+ header: {
+ 'content-type': 'application/x-www-form-urlencoded'
+ }
+ })
+ return res[1].data;
+ },
+ // 操作流程节点
+ async addOrderOperate(params = {}) {
+ let res = await uni.request({
+ url: '/order/operate/app/add',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+
+ async returnOrder(params = {}) {
+ let res = await uni.request({
+ url: '/order/detail/app/return',
method: 'POST',
data: params
})
return res[1].data;
},
- async qryMixOrderList(params = {}) {
- let res = await uni.request({
- url: '/order/app/mix/order/list',
- method: 'POST',
- data: params,
- header: {
- orderByColumn: params.orderByColumn ? params.orderByColumn : "",
- isAsc: params.isAsc ? params.isAsc : ""
- }
- })
- return res[1].data;
+
+ // 获取操作流程节点列表
+ async getOrderOperate(params = {}) {
+ let res = await uni.request({
+ url: '/order/operate/app/list',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
},
- async qryMixAfterList(params = {}) {
+ // 验证接单用户保险信息
+ async certNoTwoElementVerification(params) {
let res = await uni.request({
- url: '/order/app/mix/after/list',
- method: 'POST',
- data: params,
- header: {
- orderByColumn: params.orderByColumn ? params.orderByColumn : "",
- isAsc: params.isAsc ? params.isAsc : ""
- }
- })
- return res[1].data;
- },
- async updateOrder(params = {}) {
- let res = await uni.request({
- url: '/order/master/editOrderMaster',
+ url: '/tool/ali/certNoTwoElementVerification',
method: 'POST',
data: params
- })
+ })
return res[1].data;
},
- async getCanAssignList(params = {}) {
+ async getShopAddressList(params = {}) {
let res = await uni.request({
- url: '/order/can/assign',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async assign(params = {}) {
- let res = await uni.request({
- url: '/order/assign',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryDetailOrderPage(params = {}) {
- let res = await uni.request({
- url: '/order/detail/app/list',
- method: 'POST',
- data: params,
- header: {
- pageNum: params.pageNum,
- pageSize: params.pageSize,
- orderByColumn: params.orderByColumn ? params.orderByColumn : "",
- isAsc: params.isAsc ? params.isAsc : ""
- }
- })
- return res[1].data;
- },
- async updateDetailOrder(params = {}) {
- let res = await uni.request({
- url: '/order/detail/app/edit',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async applyFinishOrder(params = {}) {
- let res = await uni.request({
- url: '/order/detail/app/applyFinishOrder',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async getOrderDetail(params = {}) {
- let res = await uni.request({
- url: '/order/detail/app/detail',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async workerSettled(params = {}) {
- let res = await uni.request({
- url: '/worker/settled',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryProductPage(params = {}) {
- let res = await uni.request({
- url: '/goods/goods/app/list',
- method: 'POST',
- data: params,
- header: {
- pageNum: params.pageNum,
- pageSize: params.pageSize
- }
- })
- return res[1].data;
- },
- async editGoods(params = {}) {
- let res = await uni.request({
- url: '/goods/goods/app/edit',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async qryProductDetail(params = {}) {
- let res = await uni.request({
- url: '/goods/goods/app/detail',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async updateGoodsStatus(params = {}) {
- let res = await uni.request({
- url: '/goods/goods/app/updateStatus',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async getWorkerArea(params = {}) {
- let res = await uni.request({
- url: '/worker/area/worker',
+ url: '/shop/list',
method: 'GET',
data: params
})
return res[1].data;
},
- async getWorkerGoodsCategory(params = {}) {
+ async getMasterShopAddressList(workerId) {
let res = await uni.request({
- url: '/worker/goods/category/worker',
- method: 'GET',
+ url: '/shop/worker/'+workerId,
+ method: 'GET'
+ })
+ return res[1].data;
+ },
+ async addShopAddressList(params = {}) {
+ let res = await uni.request({
+ url: '/shop/add',
+ method: 'POST',
data: params
})
return res[1].data;
},
- async getWorkerSpecialSkill(params = {}) {
+ async editShopAddressList(params = {}) {
let res = await uni.request({
- url: '/worker/special/skill/' + params.workerId,
+ url: '/shop/update',
+ method: 'POST',
+ data: params
+ })
+ return res[1].data;
+ },
+ async delShopAddressList(customerAddressId) {
+ let res = await uni.request({
+ url: '/shop/delete/'+customerAddressId,
method: 'POST'
})
return res[1].data;
},
- async getWorkerAreaEdit(params = {}) {
+ async changeInvoiceStatus(params = {}) {
let res = await uni.request({
- url: '/worker/area/worker/edit',
- method: 'GET',
- data: params
- })
- return res[1].data;
- },
- async getWorkerGoodsCategoryEdit(params = {}) {
- let res = await uni.request({
- url: '/worker/goods/category/worker/edit',
- method: 'GET',
- data: params
- })
- return res[1].data;
- },
- async qrPay(params = {}) {
- let res = await uni.request({
- url: '/pay/ali/qr',
- method: 'POST',
- data: params.orderMasterId
- })
- return res[1].data;
- },
- async priceAddedQrPay(params = {}) {
- let res = await uni.request({
- url: '/pay/ali/addQr',
- method: 'POST',
- data: params.orderDetailId
- })
- return res[1].data;
- },
- async updateMasterOrder(params = {}) {
- let res = await uni.request({
- url: '/order/master/editOrderMaster',
+ url: '/order/master/changeInvoiceStatus',
method: 'POST',
data: params
})
return res[1].data;
},
- async addWorkerCertify(params = {}) {
+ async transferOrder(params = {}) {
let res = await uni.request({
- url: '/worker/certification/app/add',
+ url: '/order/master/transferOrder',
method: 'POST',
data: params
})
return res[1].data;
},
- async getWorkerCertify(params = {}) {
+ async getByCustomerAddressId(customerAddressId) {
let res = await uni.request({
- url: '/worker/certification/app/getByWorkerId',
+ url: '/customer/address/getByCustomerAddressId',
method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async orderStatistics(params = {}) {
- let res = await uni.request({
- url: '/order/app/statistics',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async rejectDetailOrder(params = {}) {
- let res = await uni.request({
- url: '/order/detail/app/order/reject',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
- async rejectMasterOrderWhenAccepted(params = {}) {
- let res = await uni.request({
- url: '/order/master/console/cancel',
- method: 'POST',
- data: params,
+ data: {
+ customerAddressId: customerAddressId
+ },
header: {
'content-type': 'application/x-www-form-urlencoded'
}
})
return res[1].data;
},
- async changeOrderPrice(params = {}) {
+ async getShopDetailWithDistance(params = {}) {
let res = await uni.request({
- url: '/order/detail/app/change/price',
+ url: '/shop/getShopDetailWithDistance',
method: 'POST',
data: params
})
return res[1].data;
},
- async getChangeOrderPrice(params = {}) {
+ async getShopsByGoodsId(params = {}) {
let res = await uni.request({
- url: '/order/detail/app/getChangePrice',
+ url: '/goods/goods/getShopsByGoodsId',
method: 'POST',
data: params
})
return res[1].data;
},
- async getAfterList() {
+ async getDeliveryFlow(trackingNumber) {
+ // "trackingNumber": "YT8774104632324",
let res = await uni.request({
- url: '/order/detail/after/list',
- method: 'POST',
+ url: '/order/logistics/query/'+trackingNumber,
+ method: 'GET',
data: {}
})
return res[1].data;
},
- async editOrder(params = {}) {
+ async workerResendPlan(params = {}) {
let res = await uni.request({
- url: '/order/detail/app/edit',
+ url: '/worker/record/workerResendPlan',
method: 'POST',
data: params
})
return res[1].data;
},
- async editAfterServiceRecord(params = {}) {
+ async editAfterServiceGoodsRecord(params = {}) {
let res = await uni.request({
- url: '/worker/record/edit',
+ url: '/worker/record/editGoods',
method: 'POST',
data: params,
header: {
@@ -735,112 +1084,29 @@ export default {
})
return res[1].data;
},
- async checkAuth(authScope, callbackName, callbackSuccessKey) {
- let _this = this;
- // 通过 wx.getSetting 先查询一下用户是否授权了authScope
- let res1 = await wx.getSetting();
- if (res1) {
- if (!res1.authSetting[authScope]) {
- let res = await _this[callbackName]();
- if (res && res[callbackSuccessKey]) {
- return res;
- }
- // 用户授权
- uni.showToast({
- title: '请先授权',
- icon: 'none',
- duration: 1500
- })
- return 'rejected';
- } else {
- return await _this[callbackName]();
- }
- }
- },
- async openAndAuthSetting(authScope) {
- wx.openSetting({
- success(res) {
- if (res[authScope]) {
- return true;
- }
- }
- })
- uni.showToast({
- icon: 'error',
- duration: 1500,
- title: '授权失败'
- })
- return false;
- },
- async wxGetLocation() {
- let errCode = null;
- let res = await wx.getLocation({
- type: 'gcj02',
- fail: async (result) => {
- if (result.errCode === 2) {
- uni.showToast({
- title: '定位获取失败,请确认是否开启定位',
- icon: 'none',
- duration: 2500
- })
- }
- },
- success: async (result) => {
- console.log("success");
- return result;
- }
- })
- // res.latitude, res.longitude
- console.log(res)
- return res;
- },
-
- async callCustomer(params = {}) {
+ async saveMasterWorkerRemark(params = {}) {
let res = await uni.request({
- url: '/order/master/callCustomer',
+ url: '/order/master/saveMasterWorkerRemark',
method: 'POST',
data: params
})
return res[1].data;
},
-
- async callDetailCustomer(params = {}) {
+ async getAndSetWorkerInfo(workerId) {
let res = await uni.request({
- url: '/order/detail/callCustomer',
+ url: '/worker/detail/'+ workerId,
+ method: 'GET'
+ })
+ let curUserInfo = res[1].data.data;
+ uni.setStorageSync('userProfile', curUserInfo);
+ return res[1].data;
+ },
+ async workerConfirmReceive(params = {}) {
+ let res = await uni.request({
+ url: '/worker/record/workerConfirmReceive',
method: 'POST',
data: params
})
return res[1].data;
- },
-
- async addOrderAttach(params = {}) {
- let res = await uni.request({
- url: '/order/attach/appAdd',
- method: 'POST',
- data: params,
- header: {
- 'content-type': 'application/x-www-form-urlencoded'
- }
- })
- return res[1].data;
- },
- // 操作流程节点
- async addOrderOperate(params = {}) {
- let res = await uni.request({
- url: '/order/operate/app/add',
- method: 'POST',
- data: params
- })
- return res[1].data;
- },
-
- // 获取操作流程节点列表
- async getOrderOperate(params = {}) {
- let res = await uni.request({
- url: '/order/operate/app/list',
- method: 'POST',
- data: params
- })
- return res[1].data;
- }
-}
+ },
+}
\ No newline at end of file
diff --git a/common/js/validate.js b/common/js/validate.js
index 68423e4..e9d22ac 100644
--- a/common/js/validate.js
+++ b/common/js/validate.js
@@ -15,6 +15,9 @@ export default {
}
return true;
},
+ validPhone: function(email) {
+ return contactNumRegex.test(email);
+ },
validIdCard: function(idCardNum) {
return idCardRegex.test(idCardNum);
diff --git a/components/goods-card/horizontal-goods-card.vue b/components/goods-card/horizontal-goods-card.vue
index 917e69f..1ca081d 100644
--- a/components/goods-card/horizontal-goods-card.vue
+++ b/components/goods-card/horizontal-goods-card.vue
@@ -7,7 +7,24 @@
{{product.totalName}}
{{product.remark}}
-
+
+
+ {{getInstallServiceName(product.goods.installService)}}
+
+
+ {{getDeliveryName(product.goods.deliveryService)}}
+
+
+
+ 到店服务
+
+
+ 到店+配送(服务)
+
+
+ 到店+上门(服务)
+
+
diff --git a/pages/demand-center/accept-demand-center.vue b/pages/demand-center/accept-demand-center.vue
index e8ce336..d4644aa 100644
--- a/pages/demand-center/accept-demand-center.vue
+++ b/pages/demand-center/accept-demand-center.vue
@@ -81,11 +81,23 @@
有待付款
款已付清
+
+
+
+
+
+ 姓名:{{task.customerName}}
+
+
+ 保险要求
+ 详情...
+
+
- {{task.address}}
+ {{task.provinceName + task.cityName + task.countryName + task.streetName + task.address}}
@@ -96,7 +108,10 @@
{{task.customerName}}
{{task.customerPhone.substring(0, 3) + "****" + task.customerPhone.substring(7)}}
-
+
+
@@ -200,20 +215,24 @@
-
+
+
+
+
diff --git a/pages/my/master-occupancy-parts.vue b/pages/my/master-occupancy-parts.vue
new file mode 100644
index 0000000..dfdda24
--- /dev/null
+++ b/pages/my/master-occupancy-parts.vue
@@ -0,0 +1,741 @@
+
+
+
+
+ 返回
+ 师傅入驻信息填写
+
+
+
+
+
+ {{stepName}}
+
+
+
+
+
+
+
+
+
+
+ 发货区域{{index + 1}}(将按服务范围派单)
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item0.areaName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 货品类别{{index + 1}}(将按服务技能派单)
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+ {{item0.goodsCategoryName}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 特殊技能{{index + 1}}(特殊工种如空调安装等请上传)
+
+
+ 删除
+
+
+
+
+ 特殊技能:
+
+
+
+
+
+
+
+
+
+
+
+ 技能证书:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保险证明:
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保险日期:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/my/master-occupancy.vue b/pages/my/master-occupancy.vue
index 5471f8b..5f898af 100644
--- a/pages/my/master-occupancy.vue
+++ b/pages/my/master-occupancy.vue
@@ -270,7 +270,8 @@
},
async loadServAreas() {
let res = await this.$request.getWorkerAreaEdit({
- workerId: this.curUserInfo.workerId
+ workerId: this.curUserInfo.workerId,
+ type: 1
});
let servArea = [];
for(let i = 0; i < res.data.length; i++) {
@@ -294,7 +295,8 @@
},
async loadServSkills() {
let res = await this.$request.getWorkerGoodsCategoryEdit({
- workerId: this.curUserInfo.workerId
+ workerId: this.curUserInfo.workerId,
+ type: 1
});
let servSkill = [];
for(let i = 0; i < res.data.length; i++) {
@@ -592,12 +594,13 @@
this.curStep = this.curStep === 0 ? 0 : --this.curStep;
},
validData(data) {
+ console.log(data);
let errMsg = null;
if (!data.workerAreas || !data.workerAreas.length) {
errMsg = '请至少添加一个服务区域(需要勾选到服务街道)';
}
if (this.curStep > 0) {
- if (!data.goodsCategories || !data.goodsCategories.length) {
+ if (!(data.serviceCategoryIds && data.serviceCategoryIds.length)) {
errMsg = '请至少添加一个服务技能(需要勾选到三级类目)';
}
}
@@ -631,10 +634,11 @@
// 服务品类参数
this.servSkill.forEach((item) => {
item.subSubTypeIds.forEach((goodsCategoryId) => {
- goodsCategories.push({
- workerId: workerId,
- goodsCategoryId: goodsCategoryId
- });
+ // goodsCategories.push({
+ // workerId: workerId,
+ // goodsCategoryId: goodsCategoryId
+ // });
+ goodsCategories.push(goodsCategoryId)
});
});
// 特殊技能参数
@@ -652,7 +656,7 @@
let params = {
workerId: workerId,
workerAreas: workerAreas,
- goodsCategories: goodsCategories,
+ serviceCategoryIds: goodsCategories,
// specialSkills: specialSkills
}
diff --git a/pages/my/master-settled-info.vue b/pages/my/master-settled-info.vue
index 3281ac9..9360551 100644
--- a/pages/my/master-settled-info.vue
+++ b/pages/my/master-settled-info.vue
@@ -8,14 +8,14 @@
服务区域:
-
+
{{strReplace(item.mergerName, "-", ",")}}
服务技能:
-
+
{{item.mergeName}}
@@ -60,12 +60,15 @@
curUserInfo: {},
servAreas: [],
servSkills: [],
- servSpecialSkills: []
+ servSpecialSkills: [],
+ serviceType: null
}
},
- // onLoad() {
- // this.loadData();
- // },
+ onLoad(options) {
+ if(options.type) {
+ this.serviceType = options.type
+ }
+ },
onShow() {
this.loadData();
},
@@ -74,23 +77,26 @@
this.curUserInfo = await this.$request.getCurUserNoCache();
this.loadServAreas();
this.loadServSkills();
- this.loadSpecialSkills();
+ // this.loadSpecialSkills();
},
async loadServAreas() {
let res = await this.$request.getWorkerArea({
- workerId: this.curUserInfo.workerId
+ workerId: this.curUserInfo.workerId,
+ serviceType: this.serviceType
});
this.servAreas = res.data;
},
async loadServSkills() {
let res = await this.$request.getWorkerGoodsCategory({
- workerId: this.curUserInfo.workerId
+ workerId: this.curUserInfo.workerId,
+ serviceType: this.serviceType
});
this.servSkills = res.data;
},
async loadSpecialSkills() {
let res = await this.$request.getWorkerSpecialSkill({
- workerId: this.curUserInfo.workerId
+ workerId: this.curUserInfo.workerId,
+ serviceType: this.serviceType
});
this.servSpecialSkills = res.data;
},
@@ -100,10 +106,16 @@
current: e.currentTarget.dataset.url
});
},
- navigate2ApplySettled() {
- uni.navigateTo({
- url: '/pages/my/master-occupancy'
- })
+ navigate2ApplySettled() {
+ if(this.serviceType == 1) {
+ uni.navigateTo({
+ url: '/pages/my/master-occupancy'
+ })
+ } else {
+ uni.navigateTo({
+ url: '/pages/my/master-occupancy-parts'
+ })
+ }
},
strReplace(wholeStr, newStr, oldStr) {
if (wholeStr && wholeStr.length > 0) {
diff --git a/pages/my/new-serv-parts.vue b/pages/my/new-serv-parts.vue
new file mode 100644
index 0000000..7a52d2e
--- /dev/null
+++ b/pages/my/new-serv-parts.vue
@@ -0,0 +1,1301 @@
+
+
+
+
+ 返回
+ 货品上架
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/my/new-serv.vue b/pages/my/new-serv.vue
index a3a1fec..5580d93 100644
--- a/pages/my/new-serv.vue
+++ b/pages/my/new-serv.vue
@@ -28,54 +28,62 @@
:value="formData.categoryConcatName" placeholder="请选择类目" :class="goodsId ? 'bg-gray' : ''"/>
-
-
-
-
-
-
- {{item.goodsCategoryName}}
- `
-
-
-
-
-
-
- *
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- *
-
-
-
-
-
+
+
+
+
+
+
+
+ {{item.goodsCategoryName}}
+
+
+
+
+
+
+
+ *
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -134,6 +142,24 @@
+
+
+ 到店服务
+
+
+
+
+ 服务店铺*
+
+
+
+ 无匹配项,
+ 点击增加
+
+
+
@@ -197,7 +223,8 @@
区域描述*
-
+
+
@@ -326,7 +353,8 @@
},
data() {
return {
- goodsId: null,
+ goodsId: null,
+ type: 1,
formData: {
servName: '',
servDesc: '',
@@ -342,7 +370,10 @@
detailDesc: '',
descImgList: [],
coverImgList: [],
- videoList: []
+ videoList: [],
+ shopId: '',
+ shopName: '',
+ storeService: ''
},
servArea: [],
sysInfo: null,
@@ -404,22 +435,40 @@
}],
warrantyPeriodList: [{
code: 1,
- name: '15天'
+ name: '即时验收'
}, {
code: 2,
- name: '30天'
+ name: '验收后离店'
}, {
code: 3,
- name: '45天'
+ name: '完工24小时'
}, {
code: 4,
- name: '3个月'
+ name: '3天'
}, {
code: 5,
- name: '6个月'
+ name: '7天'
}, {
code: 6,
+ name: '15天'
+ }, {
+ code: 7,
+ name: '30天'
+ }, {
+ code: 8,
+ name: '45天'
+ }, {
+ code: 9,
+ name: '3个月'
+ }, {
+ code: 10,
+ name: '6个月'
+ }, {
+ code: 11,
name: '12个月'
+ }, {
+ code: 12,
+ name: '24个月'
}],
expectDurationList: [{
name: '12点前下单,预计当天下午上门/服务'
@@ -429,17 +478,40 @@
name: '现时下单,预计次日上门/服务'
}, {
name: '现时下单,预计后日上门/服务'
- }],
+ }, {
+ name: '到店服务,按预约服务',
+ }, {
+ name: '到店服务,到达即服务'
+ }],
+ storeServiceList: [
+ {
+ code: 1,
+ name: '到店服务'
+ }, {
+ code: 2,
+ name: '到店+配送(服务)'
+ }, {
+ code: 3,
+ name: '到店+上门(服务)'
+ }
+ ],
curUserInfo: {},
bankCard: null,
- certifyInfo: null
+ certifyInfo: null,
+ myShopList: []
}
},
onLoad(options) {
if (options && options.goodId) {
this.goodsId = options.goodId;
+ }
+ if(options && options.type) {
+ this.type = options.type
}
this.loadData(this.goodsId);
+ },
+ onShow() {
+ this.loadShopList();
},
methods: {
async loadData(goodId) {
@@ -450,10 +522,19 @@
}
this.checkBankAndCertify();
this.loadCategoryList();
- this.loadRegionList();
+ this.loadRegionList();
// TODO 如果存在goodId说明是修改,需要查询good信息进行回显
// this.categoryList = await this.$api.data('categoryList');
// this.regionList = await this.$api.data('regionList');
+ },
+ async loadShopList() {
+ let res = await this.$request.getMasterShopAddressList(this.$request.getCurUserInfo().workerId);
+ this.myShopList = res.data.map(item => {return {name: item.shopName, code: item.shopId}});
+ },
+ goToShopList() {
+ uni.navigateTo({
+ url: '/pages/my/shop-list'
+ })
},
async getCurGoodsInfo(goodsId) {
let res1 = await this.$request.qryProductDetail({
@@ -468,7 +549,7 @@
});
// 查询选中的第三级类目下的所有规格
let res2 = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: goods.deptGoodsCategoryId
});
let specsList = res2.data;
@@ -501,7 +582,12 @@
}
newAreaList.push(o);
});
- console.log(newAreaList)
+ console.log(newAreaList)
+
+ let stopService = null
+ if(goods.storeService) {
+ stopService = this.storeServiceList.find(i => i.code == goods.storeService)
+ }
this.formData = {
servName: goods.goodsName,
@@ -529,7 +615,9 @@
imgList: goods.lbUrl,
descImgList: goods.detailUrl,
videoList: goods.goodsVideoUrl ? [goods.goodsVideoUrl] : [],
- // status: 0,
+ // status: 0,
+ shopId: goods.shopId ? {code: goods.shopId, name: goods.shopName} : null,
+ storeService: goods.storeService ? stopService : null
}
},
async checkBankAndCertify() {
@@ -552,24 +640,24 @@
},
async loadCategoryList(idArr) {
let typeList = await this.$request.listByStep({
- type: 1
+ type: this.type
});
typeList = typeList.data;
let col1Id = idArr ? idArr[0] : typeList[0].goodsCategoryId;
let subTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: col1Id
});
subTypeList = subTypeList.data;
let col2Id = idArr ? idArr[1] : subTypeList[0].goodsCategoryId;
let subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: col2Id
});
subSubTypeList = subSubTypeList.data;
let col3Id = idArr ? idArr[2] : subSubTypeList[0].goodsCategoryId;
let thirdTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: col3Id
});
thirdTypeList = thirdTypeList.data;
@@ -603,7 +691,7 @@
// 查询最后一级品类
let res = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: chosenCategory[chosenCategory.length - 1].goodsCategoryId
});
this.formData.specsList = res.data;
@@ -613,14 +701,14 @@
if (colObj.column == 0) {
// 通过一级查询二级,通过二级查三级
let subTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: this.categoryList[0][colObj.value].goodsCategoryId
});
subTypeList = subTypeList.data;
let subSubTypeList = [];
if (subTypeList && subTypeList.length) {
subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: subTypeList[0].goodsCategoryId
});
subSubTypeList = subSubTypeList.data;
@@ -633,7 +721,7 @@
} else if (colObj.column == 1) {
// 通过二级查三级
let subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.type,
goodsCategoryId: this.categoryList[1][colObj.value].goodsCategoryId
});
subSubTypeList = subSubTypeList.data;
@@ -763,7 +851,15 @@
mask: true
});
this.$request.uploadFile(ev.path).then((url) => {
- this.formData[this.curImgListField].push(url);
+ if(this.curImgListField.indexOf('specsList') > -1) {
+ // 规格上传图片
+ const specsListIndex = this.curImgListField.split(':')[1]
+ const temp = this.formData.specsList[specsListIndex]
+ temp.imageUrl = url
+ this.$set(this.formData.specsList, specsListIndex, temp)
+ } else {
+ this.formData[this.curImgListField].push(url);
+ }
uni.hideLoading();
});
// url设置为空,隐藏控件
@@ -858,6 +954,8 @@
errMsg = '服务活动不能为空';
} else if (!data.expectDuration) {
errMsg = '服务时效不能为空';
+ } else if(data.storeService && !data.shopId) {
+ errMsg = '到店店铺不能为空';
} else if (!data.goodsAreaList || !data.goodsAreaList.length) {
errMsg = '上架区域填写不完整';
} else if (!data.areaDesc) {
@@ -1004,8 +1102,15 @@
goodsVideoUrl: goodsVideoUrl,
status: 0,
remark: this.formData.detailDesc,
- areaDesc: this.formData.areaDesc
- }
+ areaDesc: this.formData.areaDesc,
+ type: this.type,
+ shopId: this.formData.shopId ? this.formData.shopId.code : '',
+ shopName: this.formData.shopId ? this.formData.shopId.name : '',
+ storeService: this.formData.storeService ? this.formData.storeService.code : ''
+ }
+
+ // console.log(params);
+ // return
let res = null;
if (this.goodsId) {
@@ -1073,7 +1178,8 @@
.certern-height {
max-height: 520rpx;
- overflow: hidden;
+ overflow: hidden;
+ position: relative;
}
.long-btn {
diff --git a/pages/my/personal-info.vue b/pages/my/personal-info.vue
index 5f294f9..b7a1f3f 100644
--- a/pages/my/personal-info.vue
+++ b/pages/my/personal-info.vue
@@ -28,6 +28,11 @@
电子邮箱
+
+ 店铺管理
+
+
+
@@ -68,6 +73,11 @@
url: '/pages/my/account-security'
})
},
+ showShopList() {
+ uni.navigateTo({
+ url: '/pages/my/shop-list'
+ })
+ },
async submit() {
let res = await this.$request.updateWorker({
workerId: this.curUserInfo.workerId,
diff --git a/pages/my/shop-list.vue b/pages/my/shop-list.vue
new file mode 100644
index 0000000..18144eb
--- /dev/null
+++ b/pages/my/shop-list.vue
@@ -0,0 +1,130 @@
+
+
+
+
+ 返回
+ 店铺管理
+
+
+
+
+
+
+
+
+ {{item.provinceName}}
+ {{item.cityName}}
+ {{item.countryName}}
+ {{item.streetName || ''}}
+
+ {{item.address}}
+
+ 门店名称:
+ {{item.shopName}}
+
+
+ 门店电话:
+ {{item.phone}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/cancel-order.vue b/pages/order-manage/cancel-order.vue
index 571dae0..9896d41 100644
--- a/pages/order-manage/cancel-order.vue
+++ b/pages/order-manage/cancel-order.vue
@@ -5,7 +5,7 @@
返回
申请退单
-
+
申请原因
- {{formData.reasonObj.reasonId ? formData.reasonObj.reasonName : '请选择' }}
+ {{formData.returnReason ? formData.returnReason : '请选择' }}
- 具体原因
-
+ 具体原因(请填写退单退货的原因)
+
上传凭证(选填)
@@ -45,7 +46,7 @@
-
+
@@ -54,48 +55,50 @@
export default {
data() {
return {
- good: {},
+ // good: {},
formData: {
imgList: [],
- reasonObj: {}
+ returnReason: '',
+ returnReasonDetail: ''
},
- cancelReasonList: [{
- reasonId: 1,
- reasonName: '客户的时间我无法配合'
- }, {
- reasonId: 2,
- reasonName: '客户多次爽约'
- }, {
- reasonId: 3,
- reasonName: '客户不能确定时间'
- }, {
- reasonId: 4,
- reasonName: '客户多天未能联系上'
- }, {
- reasonId: 5,
- reasonName: '客户说无此服务'
- }, {
- reasonId: 6,
- reasonName: '客户要求已超出服务范围'
- }, {
- reasonId: 7,
- reasonName: '环境问题无法施工'
- }, {
- reasonId: 8,
- reasonName: '技能原因无法完成'
- }, {
- reasonId: 9,
- reasonName: '分岐未能谈妥'
- }, {
- reasonId: 10,
- reasonName: '不愿支付费用'
- }]
+ cancelReasonList: [],
+ orderId: null,
+ orderType: null,
+ detailPlaceholder: '',
+ isDetailOrder: null,
+ isSelfAcceptOrder: false
}
},
onLoad(options) {
- if (options && options.params) {
- this.good = JSON.parse(decodeURIComponent(options.params)).orderInfo;
+ // if (options && options.params) {
+ // this.good = JSON.parse(decodeURIComponent(options.params)).orderInfo;
+ // }
+
+ if (options && options.orderId) {
+ this.orderId = options.orderId
}
+ if(options && options.orderType) {
+ let reasonList
+ if(options.orderType === '1') {
+ reasonList = ['商家原因,没时间备货!', '商家原因,缺货了!', '商家原因,发货时间迟了!', '商家原因,物流原因,长时间滞留路途!', '客户原因,无法接受质量!', '客户原因,商品无法满足期望!']
+ } else {
+ reasonList = ['师傅原因,时间排不上!', '师傅原因,技术不能解决问题!', '师傅原因,迟到了无法服务!', '客户原因,约好时间没遵守!', '客户原因,要求无法达成,无法沟通。']
+ }
+ this.cancelReasonList = reasonList.map((i , index)=> {
+ return {
+ reasonId: index + 1,
+ reasonName: i
+ }
+ })
+ this.orderType = options.orderType
+ }
+ if(options && options.isDetailOrder) {
+ this.isDetailOrder = options.isDetailOrder
+ }
+ if(options && options.isSelfAcceptOrder) {
+ this.isSelfAcceptOrder = options.isSelfAcceptOrder
+ }
+
},
methods: {
chooseImgList(e) {
@@ -105,15 +108,18 @@
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: (res) => {
- let tempFilePaths = [];
- res.tempFiles.forEach((fileObj) => {
- tempFilePaths.push(fileObj.tempFilePath)
- })
- if (this.formData.imgList.length != 0) {
- this.formData.imgList = this.formData.imgList.concat(tempFilePaths)
- } else {
- this.formData.imgList = tempFilePaths
- }
+ uni.showLoading({
+ title: '上传中',
+ mask: true
+ });
+ res.tempFiles.forEach((fileObj, index) => {
+ this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
+ this.formData.imgList.push(url);
+ if (index === res.tempFiles.length - 1) {
+ uni.hideLoading();
+ }
+ });
+ });
}
});
},
@@ -137,7 +143,71 @@
})
},
reasonChange(e) {
- this.formData.reasonObj = this.cancelReasonList[e.detail.value]
+ this.formData.returnReason = this.cancelReasonList[e.detail.value].reasonName
+ },
+ submitCancelOrder() {
+ if(!this.formData.returnReason) {
+ uni.showToast({
+ title: '请选择申请原因',
+ icon: 'none'
+ })
+ return
+ }
+ if(!this.formData.returnReasonDetail) {
+ uni.showToast({
+ title: '请填写具体原因',
+ icon: 'none'
+ })
+ return
+ }
+
+ // if(this.isDetailOrder == 1 && this.isSelfAcceptOrder) {
+ // uni.showModal({
+ // title: '提示',
+ // content: this.orderType == 1 ? '确认后订单回到你拣货/发货栏,你可重新派单或操作彻底退单' : '确认后订单回到你未约/未排栏,你可重新派单或操作彻底退单',
+ // success: (res) => {
+ // if(res.confirm) {
+ // this.cancelSend()
+ // }
+ // },
+ // })
+ // } else {
+ this.cancelSend()
+ // }
+ },
+ async cancelSend() {
+ const params = {
+ id: this.orderId,
+ returnImages: this.formData.imgList.length ? this.formData.imgList.toString() : '',
+ returnReason: this.formData.returnReason,
+ returnReasonDetail: this.formData.returnReasonDetail
+ }
+ let funcName = 'rejectMasterOrderWhenAccepted'
+ if(this.isDetailOrder == 1) {
+ funcName = 'rejectDetailOrder'
+ }
+ let res = await this.$request[funcName](params);
+ if (res && res.code === 0) {
+ uni.showToast({
+ icon: 'none',
+ title: '退单成功',
+ duration: 1000
+ })
+ await this.$request.addOrderOperate({
+ orderId: this.orderId,
+ orderType: '01',
+ content: '师傅退单'
+ })
+ uni.navigateBack({
+ delta: -1
+ })
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: res.msg,
+ duration: 2000
+ })
+ }
}
},
}
diff --git a/pages/order-manage/choose-shop.vue b/pages/order-manage/choose-shop.vue
new file mode 100644
index 0000000..8cb56d2
--- /dev/null
+++ b/pages/order-manage/choose-shop.vue
@@ -0,0 +1,163 @@
+
+
+
+
+ 选择门店
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.shopName}}
+
+ {{item.provinceName + item.cityName + item.countryName + item.streetName + item.address}}
+
+ 距离客户
+ {{item.distance}}
+
+
+
+
+ 您购买的商品的店铺所属服务点(距离近可优先选择)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/components/afterServiceRecord.vue b/pages/order-manage/components/afterServiceRecord.vue
new file mode 100644
index 0000000..a7e9188
--- /dev/null
+++ b/pages/order-manage/components/afterServiceRecord.vue
@@ -0,0 +1,261 @@
+
+
+
+ 售后发起中
+ 您需快速操作反馈,24小时内不操作将自动同意!
+
+
+ 退款申请:
+
+
+
+
+ 退款金额:
+ {{afterServiceRecord.refund}}
+ {{order.payMoney}}
+
+
+ 退款原因:
+ 上门/服务不守时
+ 态度不友好,无法继续
+ 服务效果差,未达到合格
+ 技能水平问题,未妥善完成
+ 要求加费用,费用不合理
+ 订单拖太久了
+ 超了些服务内容,师傅不接受
+ 客户/我时间不方便了
+ 客户/我已让别的师傅服务了
+
+
+ 具体原因:
+ {{afterServiceRecord.customerReason}}
+
+
+
+
+
+
+
+ 警报:退单金额大于该师傅接单金额,但客户发起的退款金额有效,您需介入处理,如让接单师傅系统上操作同意退款,系统最大按该单派单额退回客户,其余需人工处理!如属于师傅责任引起的退单,建议重做,重做后让客户撤消退单!
+
+
+
+
+ 待处理售后:
+
+
+
+
+ 售后原因:
+ 上门/服务不守时
+ 态度不友好,无法继续
+ 服务效果差,未达到合格
+ 技能水平问题,未妥善完成
+ 要求加费用,费用不合理
+ 订单拖太久了
+ 超了些服务内容,师傅不接受
+ 客户/我时间不方便了
+ 客户/我已让别的师傅服务了
+
+
+ 具体原因:
+ {{afterServiceRecord.customerReason}}
+
+
+ 完成操作:点击“操作处理”提交由客服回访!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 师傅反馈
+
+
+ 师傅反馈结果:
+ 拒绝
+ 同意
+ 上门重做/补做
+
+
+ 同意退款金额:
+ {{afterServiceRecord.agreedRefund ? afterServiceRecord.agreedRefund : afterServiceRecord.refund}}
+
+
+ 客户同意则本次退款金额为0元
+ 客户同意的需马上处理并重新提交
+
+ 客户同意方案
+
+
+
+
+ 师傅反馈:
+ 客户原因
+ 师傅原因
+ 其他
+
+ ,
+ {{afterServiceRecord.workerFeedbackReason}}
+
+
+
+
+
+
+
+
+
+
+ 师傅重做/补做提交:
+
+
+
+
+
+
+
+ {{afterServiceRecord.redoCompleteRemark}}
+
+
+
+
+
+ 待客户验收或审核,36小时未操作将自动取消本次售后
+
+ 工单时限:
+
+
+
+
+
+
+
+
+
+
+
+
+ 客户最终确认
+
+ {{afterServiceRecord.customerFinalCheck === 1 ? '同意' : '不同意'}}
+ (超时系统自动同意)
+
+
+
+
+
+
+
+
+ 不同意理由:{{afterServiceRecord.customerDisagreeReason}}
+
+ 订单交由平台协商处理
+ 系统提示您,如能协商尽可能与客户协商一致(能重新协商则按双方认可方案重新发起)!可让客户撤单最佳。
+
+
+
+
+
+ 本单退款,系统已发起按客户支付的帐户原路退回
+ {{afterServiceRecord.originalRefund || afterServiceRecord.agreedRefund}}
+ 元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。
+
+ 退款支付到账:{{afterServiceRecord.refundApplyTime}}
+
+
+ 本次售后已重新补做并验收完成(退款额为0)。
+ 本单已退款{{afterServiceRecord.originalRefund || afterServiceRecord.agreedRefund}}元,因未实际支付,实退为0元。未退部分继续完成订单及正常支付!
+
+
+
+ 本次售后已操作完毕,售后申请已结束!
+
+
+
+
+ 客户最终确认
+
+ {{order.afterPlatformServiceStatus === 2 ? '同意' : '取消售后'}}
+ (平台操作)
+
+
+ 平台意见:{{afterServiceRecord.platformHandleReason}}
+
+
+ 本次售后已操作完毕,售后申请已结束!
+
+
+
+
+ 本单退款,系统已发起按客户支付的帐户原路退回
+ {{afterServiceRecord.platformRefund || afterServiceRecord.agreedRefund}}
+ 元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。
+
+ 退款支付到账:{{afterServiceRecord.refundApplyTime}}
+
+
+ 本单已退款{{afterServiceRecord.platformRefund || afterServiceRecord.agreedRefund || 0}}元,因未实际支付,实退为0元。未退部分继续完成订单及正常支付!
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/components/afterServiceRecordGoods.vue b/pages/order-manage/components/afterServiceRecordGoods.vue
new file mode 100644
index 0000000..294b0c9
--- /dev/null
+++ b/pages/order-manage/components/afterServiceRecordGoods.vue
@@ -0,0 +1,394 @@
+
+
+
+ 售后发起中
+ 您需快速操作反馈,24小时内不操作将自动同意!
+
+
+ {{afterServiceRecord.operType === 1 ? '退款申请:' : '待处理售后:'}}
+
+
+
+
+ 退款金额:
+ {{afterServiceRecord.refund}}
+ {{order.payMoney}}
+
+
+ 售后类型:
+ 未收到货,我要退单退款!
+ 未收到货(发货在途),我要退款!
+ 已收到货,我要退款退货!
+
+
+ 申请原因:
+ 不想要了
+ 买错型号尺寸了
+ 材质与商品描述不符
+ 大小尺寸与商品描述不符
+ 颜色、款式、型号与描述不符
+ 出现质量问题
+ 收到商品少件(少配件)
+ 商家发错货
+ 商品破损或污渍
+ 未按承诺时间发货
+ 未见快递/物流有信息
+ 其它原因
+
+
+ 具体原因:
+ {{afterServiceRecord.customerReason}}
+
+
+ 完成操作:点击“操作处理”提交由客服回访!
+
+
+
+
+
+
+
+ 警报:退单金额大于该师傅接单金额,但客户发起的退款金额有效,您需介入处理,如让接单师傅系统上操作同意退款,系统最大按该单派单额退回客户,其余需人工处理!如属于师傅责任引起的退单,建议重做,重做后让客户撤消退单!
+
+
+
+
+
+
+
+
+
+
+
+ 商家反馈
+
+
+ 商家反馈结果:
+ 拒绝
+ 同意
+ {{order.orderType == 1 ? '重发/补发商品' : '上门重做/补做'}}
+
+
+
+ 同意退款金额:
+ {{afterServiceRecord.agreedRefund ? afterServiceRecord.agreedRefund : afterServiceRecord.refund}}
+
+
+ 收货状态:
+ 未发货
+ 已发货在途
+ 已收货
+ 售后保障期
+
+
+ 同意选项:
+ 同意即时退单退款
+ 同意货物拦截后退单退款
+ 同意快递返回货物后退单退款
+ 同意您退回货物后退单退款
+
+
+
+
+
+ 重发/补发,您无需退货
+ 重发/补发前,您需先退货
+ 请您退回商品,给你换货
+ 请退回商品,为您售后换货
+
+ 客户同意则本次退款金额为0元
+ 客户同意的需马上处理并重新提交
+
+
+ 商家反馈:
+ 客户原因
+ 商家原因
+ 其他
+
+ ,
+ {{afterServiceRecord.workerFeedbackReason}}
+
+
+
+
+
+
+
+
+
+
+
+ 客户反馈未收货,货在途
+ 客户同意方案
+
+
+
+
+ 客户已退货:
+
+
+ 发货方式:{{afterServiceRecord.returnType == 1 ? '发快递/物流': (afterServiceRecord.returnType == 2 ? '送货上门' : '客户自提')}}
+ {{afterServiceRecord.returnTrackingNumber}}查询
+
+
+
+
+
+
+
+ 发货备注:{{afterServiceRecord.returnRemark}}
+
+
+
+
+
+ 商家重发/补发提交:
+
+
+ 发货方式:{{afterServiceRecord.workerResendType == 1 ? '发快递/物流': (afterServiceRecord.workerResendType == 2 ? '送货上门' : '客户自提')}}
+ {{afterServiceRecord.workerResendTrackingNumber}}
+
+
+
+
+
+
+
+ 发货备注:{{afterServiceRecord.workerResendRemark}}
+
+
+
+
+
+
+
+ 待客户验收或审核,4天内未操作将自动完成本次售后!
+
+ 操作时限:
+
+
+
+
+
+ 待客户验收或审核,24小时未操作将自动同意本售后!
+
+ 操作时限:
+
+
+
+
+
+
+
+
+ 您需跟踪客户退货或物流返货,收到后第一时间操作“结单”键退款!
+
+ 工单时限:
+
+
+
+
+
+ 待客户验收或审核,36小时未操作将自动取消本次售后
+
+ 工单时限:
+
+
+
+
+
+ 待客户验收或审核,36小时未操作将自动取消本次售后
+
+ 工单时限:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{afterServiceRecord.workerReceiveConfirm === 1 ? '商家确认' : '客户最终确认'}}
+
+ 已收货,结单
+ 本单已退货并结束售后!
+
+
+
+ 取消
+ (超时系统自动取消)
+
+
+ {{afterServiceRecord.customerFinalCheck === 1 ? '同意' : '不同意'}}
+ (超时系统自动同意)
+
+
+
+
+
+
+
+
+
+ 不同意理由:{{afterServiceRecord.customerDisagreeReason}}
+
+ 订单交由平台协商处理
+
+ 系统提示您,如能协商尽可能与客户协商一致(能重新协商则按双方认可方案重新发起)!可让客户撤单最佳(售后内已重新发货的则客户无法操作撤单)!
+
+
+
+
+
+
+ 本单退款,系统已发起按客户支付的帐户原路退回
+ {{afterServiceRecord.originalRefund || afterServiceRecord.agreedRefund}}
+ 元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。
+
+ 退款支付到账:{{afterServiceRecord.refundApplyTime}}
+
+
+ {{order.orderType == 1 ? '本次售后已重发/补发并验收完成(退款为0)' : '本次售后已重新补做并验收完成(退款额为0)。'}}
+ 本单已退款{{afterServiceRecord.originalRefund || afterServiceRecord.agreedRefund || 0}}元,因未实际支付,实退为0元。未退部分继续完成订单及正常支付!
+
+
+
+ 本次售后已操作完毕,售后申请已结束!
+
+
+
+
+ 客户最终确认
+
+ {{order.afterPlatformServiceStatus === 2 ? '同意' : '取消售后'}}
+ (平台操作)
+
+
+ 平台意见:{{afterServiceRecord.platformHandleReason}}
+
+
+ 本次售后已操作完毕,售后申请已结束!
+
+
+
+
+ 本单退款,系统已发起按客户支付的帐户原路退回
+ {{afterServiceRecord.platformRefund || afterServiceRecord.agreedRefund}}
+ 元,银行按工作日退款,节假日顺延到帐。遇客户问询,请其耐心等待,到账时会在客户端”客户最终确认“处有到账时间。
+
+ 退款支付到账:{{afterServiceRecord.refundApplyTime}}
+
+
+ 本单已退款{{afterServiceRecord.platformRefund || afterServiceRecord.agreedRefund || 0}}元,因未实际支付,实退为0元。未退部分继续完成订单及正常支付!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/dispatch-order.vue b/pages/order-manage/dispatch-order.vue
index b7867cf..c190779 100644
--- a/pages/order-manage/dispatch-order.vue
+++ b/pages/order-manage/dispatch-order.vue
@@ -12,7 +12,8 @@
{{item.goodsName}}
{{item.goodsNum}}
-
+ {{item.goodsNum}}
+
@@ -24,7 +25,7 @@
派单价格
-
+
@@ -35,6 +36,18 @@
+
+
+
+
+ 转入大厅
+
+
+
+
+
+
+
@@ -115,6 +128,10 @@
orderNow: {
type: Boolean,
default: false
+ },
+ orderMode: {
+ type: String,
+ default: ''
}
},
data() {
@@ -171,7 +188,36 @@
});
this.searchedMembers = res.rows;
},
+ assignTransfer(member) {
+ let goodsToAssign = [];
+ this.pickedList.forEach((item) => {
+ goodsToAssign.push({
+ goodsStandardId: item.goodsStandardId,
+ num: item.goodsNum
+ })
+ });
+ if (this.dispatchTotalPrice) {
+ let params = {
+ goodsList: goodsToAssign,
+ workerId: member ? member.workerId : null,
+ totalPay: this.dispatchTotalPrice,
+ orderMasterId: this.curOrder.orderMasterId,
+ isAll: 1,
+ workerName: member ? member.workerName : null
+ }
+ this.$emit('assignWork', params);
+ } else {
+ uni.showToast({
+ title: '请填写派单价格',
+ icon: 'none'
+ })
+ }
+ },
assignWork(member) {
+ if(this.orderMode === 'transferOrder') {
+ this.assignTransfer(member)
+ return
+ }
let goodsToAssign = [];
// 标识是否派完所有goods,1为派完,0为未派完
let isAll = 1;
diff --git a/pages/order-manage/modal/accept-order-notice.vue b/pages/order-manage/modal/accept-order-notice.vue
index 109e72e..4682f4c 100644
--- a/pages/order-manage/modal/accept-order-notice.vue
+++ b/pages/order-manage/modal/accept-order-notice.vue
@@ -6,8 +6,15 @@
接单成功
- 请在30分钟内联系客户,预约好上门时间,并在订单中操作排单时间,超时6倍将受平台处罚管理;该订单款项在任务流程结束后由银联自动结算至您帐户!
- 该单需上门收款。请在30分钟内联系客户,并告知客户属上门收款单(金额以客户端弹出的金额为准或上门后师傅端弹出的二维码内金额支付)预约好上门时间,并在订单中操作排单时间,超时6倍将受平台处罚管理;该订单款项在任务流程结束后由银联自动结算至您帐户!
+
+ 接单成功,请在30分钟内发货或排发货时间,超时3倍未排可能被平台处罚,该订单款项在流程结束后将由银联自动结算至你帐户。
+ 接单成功,货到付款单,交货时按单内二维码收款或客户在其帐户端支付。接单后请在请在30分钟内发货或排发货时间,超时3倍未排可能被平台处罚,该订单款项在流程结束后将由银联自动结算至你帐户。
+
+
+ 请在30分钟内联系客户,预约好上门时间,并在订单中操作排单时间,超时6倍将受平台处罚管理;该订单款项在任务流程结束后由银联自动结算至您帐户!
+ 该单需上门收款。请在30分钟内联系客户,并告知客户属上门收款单(金额以客户端弹出的金额为准或上门后师傅端弹出的二维码内金额支付)预约好上门时间,并在订单中操作排单时间,超时6倍将受平台处罚管理;该订单款项在任务流程结束后由银联自动结算至您帐户!
+
+
+
+
+
+ 同意售后
+
+
+
+
+
+
+ 退款金额:
+ {{data.afterServiceRecordList[0].refund ? data.afterServiceRecordList[0].refund : data.payMoney}}
+
+
+ 警报:该单关联其它订单,客户申请的退款金额有效,有疑问可先沟通派单公司(详情处电话),如确认同意,最大退款额以本单接单额原路退回,其余需退的或你仍有收益则由派单公司处理,如更改退单额,需先协商一致,余额部分完单后计入你账户。
+
+
+ 收货状态:
+
+
+
+
+ 同意选项:
+
+
+
+
+ 更改退款金额:
+
+ 元
+
+
+
+ 原因选择:
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/allocate-service-money.vue b/pages/order-manage/modal/allocate-service-money.vue
new file mode 100644
index 0000000..47d4fa9
--- /dev/null
+++ b/pages/order-manage/modal/allocate-service-money.vue
@@ -0,0 +1,129 @@
+
+
+
+
+ 分配服务金额
+
+
+
+
+
+
+
+ 本单商品已设置包安装/包施工类服务
+ 请预置分配安装或服务费/工时费:
+
+
+
+
+
+
+
+ 关闭/返回查看商品
+ 继续接单
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/modal/apply-charge.vue b/pages/order-manage/modal/apply-charge.vue
index 3dc001d..43003a7 100644
--- a/pages/order-manage/modal/apply-charge.vue
+++ b/pages/order-manage/modal/apply-charge.vue
@@ -1,62 +1,80 @@
-
-
-
- 申请订单加价/预付款
-
-
+
+
+
+
+ 申请订单加价/预付款
+
+
+
-
-
-
- 加价金额:
-
-
-
- 加价原因:
-
- {{array[chooseIndex]}}
-
-
-
- {{chooseIndex < 6 ? '配件费' : '施工费'}}:
-
-
-
- 凭证上传
-
-
-
-
-
+
+
+ 加价金额:
+
+
+
+ 加价原因:
+
+
+ {{array[chooseIndex]}}
+
+
+
+
+
+ {{array[chooseIndex].split('含')[1]}}:
+
+
+
+ 凭证上传
+
+
+
+
+
+
+
+
+
-
-
+
+
+ 申请原因
+
+
-
-
- 申请原因
-
-
+
+
+ 加价提示\n1、加价所有费用需经系统支付!加价报价以双方约定输入总价。含配件类物料类的全额到你帐户(银行手续费自付);\n2、申请加价时,客户端仅看到加价总额,总额内的配件类物料类金额与凭证均看不到(网点与商家可见);
+
+
+ 清空加价
+
+
+ {{ hasReacord ? '退出/待二次上门' : '取消'}}
+ 确认
+ 请客户支付
-
-
- 取消
- 确认
+
+
+
+
diff --git a/pages/order-manage/modal/delivery_flow_detail.vue b/pages/order-manage/modal/delivery_flow_detail.vue
new file mode 100644
index 0000000..06d2db2
--- /dev/null
+++ b/pages/order-manage/modal/delivery_flow_detail.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+ 物流信息
+
+
+
+
+ {{item.description}}
+ {{item.time}}
+
+
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/modal/dispatch-order-sure.vue b/pages/order-manage/modal/dispatch-order-sure.vue
new file mode 100644
index 0000000..b83feb9
--- /dev/null
+++ b/pages/order-manage/modal/dispatch-order-sure.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+ 包安装/包服务商品安装确认
+
+
+
+
+ {{columnTitleArr[0]}}
+
+ {{title}}
+
+
+
+ {{item.goodsName}}
+
+ {{item.goodsNum}}
+ {{item.goodsNum}}
+
+
+
+
+
+ 本单可派服务金额:{{curOrder.serverMoney}}
+
+
+ 服务金额
+
+
+
+
+
+
+ 安装/服务/施工门店
+ 更多>
+
+
+
+
+
+
+
+ 客户已选: {{serviceShop.shopName}}
+
+
+
+
+ 距离客户
+ {{serviceShop.distance}}
+
+
+
+ {{serviceShop.provinceName + serviceShop.cityName + serviceShop.countryName + serviceShop.streetName + serviceShop.address}}
+
+
+ 店长:{{serviceShop.phone}}
+
+
+
+
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/dispatch-order-to-self.vue b/pages/order-manage/modal/dispatch-order-to-self.vue
new file mode 100644
index 0000000..9fff497
--- /dev/null
+++ b/pages/order-manage/modal/dispatch-order-to-self.vue
@@ -0,0 +1,323 @@
+
+
+
+
+
+
+
+
+
+ {{columnTitleArr[0]}}
+
+ {{title}}
+
+
+
+ {{item.goodsName}}
+
+ {{item.goodsNum}}
+
+
+
+
+
+
+
+
+ 本单可派任务金额:{{curOrder.serverMoney}}
+
+
+ 派单价格
+
+
+
+
+
+
+
+
+ {{data.customerPhone.substring(0, 3) + "****" + data.customerPhone.substring(7)}}
+
+
+
+
+ {{orderType === 1 ? '分次发货,请输入发货日期与时间,然后在”发货预约“栏按时发货。' : '拨打电话,按与客户约定的时间填入,完成排单,未完成排单将导致排单超时!'}}
+
+
+
+
+
+ 选择日期:
+
+
+
+
+
+
+
+ 选择时间:
+
+
+
+
+
+
+ 或
+
+
+
+
+
+
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/edit-time-arrange.vue b/pages/order-manage/modal/edit-time-arrange.vue
index e8a688f..8b0b804 100644
--- a/pages/order-manage/modal/edit-time-arrange.vue
+++ b/pages/order-manage/modal/edit-time-arrange.vue
@@ -14,8 +14,8 @@
-
- 拨打电话,按与客户约定的时间填入,完成排单,未完成排单将导致排单超时!
+
+ {{ orderType === 1 ? '修改或重排发货时间,需与客户协商一致并同意,否则引起客诉你负全责。' : '拨打电话,按与客户约定的时间填入,完成排单,未完成排单将导致排单超时!'}}
@@ -57,7 +57,7 @@
@@ -68,7 +68,7 @@
- 无法排单
+ {{orderType === 1 ? '取消' : '无法排单'}}
确认
@@ -96,6 +96,10 @@
ifRollback2WS: {
type: Boolean,
default: false
+ },
+ orderType: {
+ type: Number,
+ default: 0
}
},
data() {
@@ -165,7 +169,11 @@
},
cannotArrangeTime(e) {
this.resetData();
- this.$emit('showArrangeFailTime', e)
+ if(this.orderType === 1) {
+ this.hideModal(e)
+ } else {
+ this.$emit('showArrangeFailTime', e)
+ }
},
async arrangeTime(e) {
if (!(this.time || this.timeRange)) {
diff --git a/pages/order-manage/modal/handoff-goods-record.vue b/pages/order-manage/modal/handoff-goods-record.vue
new file mode 100644
index 0000000..752d070
--- /dev/null
+++ b/pages/order-manage/modal/handoff-goods-record.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+ 交货记录
+ 上传交货照片(非必填):
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 备注:
+
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/insurance-detail.vue b/pages/order-manage/modal/insurance-detail.vue
new file mode 100644
index 0000000..feec16e
--- /dev/null
+++ b/pages/order-manage/modal/insurance-detail.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+ 本订单属指定保险全程保障的订单
+ 1、本订单已打通保险系统,根据接单人员信息自动生效保险保单(立即生效)
+ 2、确保上门人员与系统接单人员为同一人,便能成功将上门人员纳入保险系统承保。
+ 3、接单后需派单下级人员 (或改派换人)下级需进系统接单,其保险方能生效!
+ 雇佣保险:{{data.insuranceManager.insuranceName}}详情条款
+
+
+
+
+ 如未按规则办理,心存侥幸,导致上门人员脱保将负全责!
+
+
+
+
+ 同意/确认
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/modal/insurance-retinue.vue b/pages/order-manage/modal/insurance-retinue.vue
new file mode 100644
index 0000000..0589fdf
--- /dev/null
+++ b/pages/order-manage/modal/insurance-retinue.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+ 本订单属全程保险保障订单
+ 本单所有同行人员 (师傅/徒弟/随行),未在系统有账号的接单人员均需填写保险承保信息!
+
+
+
+
+
+ 同行人员姓名:
+
+ {{item.name}}
+
+
+
+ 同行人员联系号码:
+
+ {{item.phone}}
+
+
+
+
+ 身份证号码:
+
+ {{item.idCardNum}}
+
+
+ 保险已生效
+
+
+
+
+
+ 同行人员姓名:
+
+
+
+
+
+ 同行人员联系号码:
+
+
+
+
+
+
+ 身份证号码:
+
+
+
+
+
+
+ 添加同行人员+
+
+
+
+
+
+ 未录入者/与订单无关者,一律不得上门。根据法律法规以上资料必须实真有效且无误方能被保险承保。
+
+
+
+
+
+ 本订单属全程保险保障订单
+ 本订单指定全程保险,但凡有随行人员均需录入增员信息,以纳入保险承保。排单后请在“待上门”或“进行中”状态点“保险增员”按键操作;订单指派下级人员的,下级接单人员亦可同样操作。
+
+
+ 退出页面
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/modal/insurance-vertify.vue b/pages/order-manage/modal/insurance-vertify.vue
new file mode 100644
index 0000000..6dffc9e
--- /dev/null
+++ b/pages/order-manage/modal/insurance-vertify.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+ 绑定本帐号保险人员信息
+ 请绑定本帐号操作者身份信息,用于含保险订单的保单投保 (自动实时投保)!
+
+
+
+ 您的姓名:
+
+
+
+
+
+ 身份证号码:
+
+
+
+
+
+
+
+
+
+ 各自在自己账号上绑定即可,在参与上门服务或客户作业服务过程中,操作订单时会自动对接保险系统!
+
+
+
+
+
+ 确认资料
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/new-serv-price-offline.vue b/pages/order-manage/modal/new-serv-price-offline.vue
index 6b4c415..bbac87a 100644
--- a/pages/order-manage/modal/new-serv-price-offline.vue
+++ b/pages/order-manage/modal/new-serv-price-offline.vue
@@ -21,13 +21,15 @@
上门有加单,请客户支付
加单总额:
-
- 元
- 修改报价
-
- 确认报价
+
+ 元
+
+ 修改报价
+
+ 确认报价
+
@@ -37,13 +39,15 @@
上门报价类,给现场客户的报价
报价总额:
-
- 元
- 修改报价
-
- 确认报价
+
+ 元
+
+ 修改报价
+
+ 确认报价
+
@@ -107,7 +111,8 @@
newPriceForA1: null,
newPrice: null,
showPayQrcodeModal: false,
- remark: ""
+ remark: "",
+ hadSetPriceChange: false
}
},
methods: {
@@ -121,10 +126,13 @@
this.payAction = priceObj.type;
let money = priceObj.changeMoney;
if (this.payAction === 1) {
- this.newPriceForA1 = money;
+ this.newPriceForA1 = money + (this.priceObj.attachmentMoney || 0);
} else if (this.payAction === 2) {
this.newPriceForA2 = money;
- }
+ }
+ this.hadSetPriceChange = true
+ } else {
+ this.hadSetPriceChange = false
}
},
resetData() {
@@ -146,7 +154,8 @@
this.init(res.data);
}
},
- changePayAction(payAction) {
+ changePayAction(payAction) {
+ if(this.hadSetPriceChange) return
this.payAction = payAction;
},
async changeOrderPrice(newPrice) {
@@ -202,8 +211,13 @@
goFinishOrder() {
this.$emit('finishOrder', this.data);
},
- clearCurAddedPrice() {
- this.changeOrderPrice(0);
+ async clearCurAddedPrice() {
+ if(this.priceObj.attachmentMoney) {
+ await this.$request.deleteAttachPrice({
+ orderDetailId: this.data.orderDetailId
+ })
+ }
+ this.changeOrderPrice(0)
}
}
}
diff --git a/pages/order-manage/modal/new-serv-price-online.vue b/pages/order-manage/modal/new-serv-price-online.vue
index 7b9e478..4e3658d 100644
--- a/pages/order-manage/modal/new-serv-price-online.vue
+++ b/pages/order-manage/modal/new-serv-price-online.vue
@@ -21,12 +21,14 @@
上门有加单,请客户支付
加单总额:
-
- 元
- 修改报价
- 确认报价
+
+ 元
+
+ 修改报价
+ 确认报价
+
@@ -36,12 +38,14 @@
上门报价类,给下单方报价
报价总额:
-
- 元
- 修改报价
- 确认报价
+
+ 元
+
+ 修改报价
+ 确认报价
+
@@ -104,7 +108,8 @@
newPriceForA1: null,
newPrice: null,
showPayQrcodeModal: false,
- remark: ""
+ remark: "",
+ hadSetPriceChange: false
}
},
methods: {
@@ -118,11 +123,15 @@
this.payAction = priceObj.type;
let money = priceObj.changeMoney;
if (this.payAction === 1) {
- this.newPriceForA1 = money;
+ this.newPriceForA1 = money + (this.priceObj.attachmentMoney || 0);
} else if (this.payAction === 2) {
this.newPriceForA2 = money;
}
+ this.hadSetPriceChange = true
+ } else {
+ this.hadSetPriceChange = false
}
+ console.log(this.hadSetPriceChange);
},
resetData() {
this.payAction = 0;
@@ -144,6 +153,7 @@
}
},
changePayAction(payAction) {
+ if(this.hadSetPriceChange) return
this.payAction = payAction;
},
async directlyFinish(e) {
@@ -174,7 +184,8 @@
changeMoney: newPrice,
type: this.payAction,
remark: this.remark
- });
+ });
+
if (res && res.code === 0) {
uni.showToast({
icon: 'success',
@@ -199,8 +210,13 @@
goFinishOrder() {
this.$emit('finishOrder', this.data);
},
- clearCurAddedPrice() {
- this.changeOrderPrice(0);
+ async clearCurAddedPrice() {
+ if(this.priceObj.attachmentMoney) {
+ await this.$request.deleteAttachPrice({
+ orderDetailId: this.data.orderDetailId
+ })
+ }
+ this.changeOrderPrice(0)
}
}
}
diff --git a/pages/order-manage/modal/re-finish-submit.vue b/pages/order-manage/modal/re-finish-submit.vue
new file mode 100644
index 0000000..ce94cdb
--- /dev/null
+++ b/pages/order-manage/modal/re-finish-submit.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+ 上门重做补做提交
+ 本次售后必须确认已与客户协商一致,并已处理到位,严禁出现再次客诉!现提交给客户验收并结单?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确认
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/order-manage/modal/reject-after-sale.vue b/pages/order-manage/modal/reject-after-sale.vue
index d8cfcad..267753c 100644
--- a/pages/order-manage/modal/reject-after-sale.vue
+++ b/pages/order-manage/modal/reject-after-sale.vue
@@ -10,7 +10,7 @@
- 原因选择:
+ *原因选择:
@@ -42,7 +42,7 @@
-
+
@@ -67,7 +67,7 @@
},
data: {
type: Object,
- default: {}
+ default: () => {}
}
},
data() {
@@ -132,19 +132,20 @@
})
},
async submit(e) {
- let imgObjList = [];
- this.imgList.forEach(url => {
- imgObjList.push({
- imgUrl: url,
- imgUploadBy: 2
+ if(!this.remark) {
+ uni.showToast({
+ icon: 'none',
+ duration: 3000,
+ title: '请输入拒绝原因'
})
- })
+ return
+ }
let res = await this.$request.editAfterServiceRecord({
id: this.data.afterServiceRecordList[0].id,
workerFeedbackReasonType: this.reasonType,
workerFeedbackReason: this.remark,
workerFeedbackResult: 0,
- imgsList: imgObjList,
+ workerFeedbackImages: this.imgList.length ? this.imgList.toString() : '',
updateBy: 2
});
if (res && res.code === 0) {
diff --git a/pages/order-manage/modal/task_process_detail.vue b/pages/order-manage/modal/task_process_detail.vue
index fb3ad22..dd6aaf8 100644
--- a/pages/order-manage/modal/task_process_detail.vue
+++ b/pages/order-manage/modal/task_process_detail.vue
@@ -34,7 +34,7 @@
default: false
},
arr: {
- type: Object,
+ type: Array,
default: () => []
}
},
diff --git a/pages/order-manage/modal/time-arrange.vue b/pages/order-manage/modal/time-arrange.vue
index c320d04..1ac03b7 100644
--- a/pages/order-manage/modal/time-arrange.vue
+++ b/pages/order-manage/modal/time-arrange.vue
@@ -14,8 +14,8 @@
-
- 拨打电话,按与客户约定的时间填入,完成排单,未完成排单将导致排单超时!
+
+ {{orderType === 0 ? '拨打电话,按与客户约定的时间填入,完成排单,未完成排单将导致排单超时!' : '需排货的,请输入发货日期与发货时间,发货期将同步通知客户,系统会提醒您发货!'}}
@@ -48,9 +48,10 @@
- 无法排单
+ 无法排单
+ 今日20点前发货
按原时间上门
+ @click="hideModal" v-if="orderType === 0">按原时间上门
确认
@@ -74,6 +75,10 @@
curDate: {
type: String,
default: ''
+ },
+ orderType: {
+ type: Number,
+ default: 0
}
},
data() {
@@ -156,6 +161,14 @@
this.$emit('editServTime', this.data.orderMasterId, [this.expectTimeStart, this.expectTimeEnd], false, this.data);
this.hideModal(e);
},
+ eightClockDelivery(e) {
+ let nowDate = new Date();
+ const today = nowDate.getFullYear() + '-' + (nowDate.getMonth() + 1) + '-' + nowDate.getDate()
+ const expectStart = today + ' 19:00:00';
+ const expectEnd = today + ' 20:00:00';
+ this.$emit('editServTime', this.data.orderMasterId, [expectStart, expectEnd], false, this.data);
+ this.hideModal(e);
+ },
makePhoneCall(order) {
if (order.orderDetailId == null) {
this.$request.callCustomer({
diff --git a/pages/order-manage/order-manage-parts.vue b/pages/order-manage/order-manage-parts.vue
new file mode 100644
index 0000000..10b045d
--- /dev/null
+++ b/pages/order-manage/order-manage-parts.vue
@@ -0,0 +1,2108 @@
+
+
+
+
+
+ 返回
+ 商品订单
+
+
+
+
+
+ 全部
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.name}}
+ ({{orderStatistics.monitoredOrderNum}})
+ ({{orderStatistics.shelvedOrderNum}})
+ (0)
+
+
+
+
+
+
+
+ {{item.name}}
+ ({{orderStatistics.newOrderNum}})
+ ({{orderStatistics.tomorrowOrderNum}})
+ ({{orderStatistics.todayOrderNum}})
+ ({{orderStatistics.overTimeOrderNum}})
+ (0)
+
+
+
+
+
+
+ {{item.name}}
+ ({{orderStatistics.planOrderNum}})
+ ({{orderStatistics.waitServOrderNum}})
+ ({{orderStatistics.servingOrderNum}})
+ ({{orderStatistics.waitSureOrderNum}})
+ ({{orderStatistics.finishedOrderNum}})
+ ({{orderStatistics.finishedMasterOrderNum}})
+ ({{orderStatistics.afterListNum}})
+ (0)
+
+
+
+
+
+
+ {{order.goodsName}}
+
+
+ 未
+ 新
+
+ 监
+ 未
+ 待
+ 发
+ 确
+ 完
+
+
+ {{order.goodsBrand}}
+ {{order.goodsSpecification}}
+
+
+ 合约单
+ 到付单
+
+ 发快递/物流
+ 送货上门
+ 客户自提
+
+
+ 有待付款
+ 款已付清
+
+
+ 有待付款
+ 款已付清
+
+
+ 保险预备中
+ 保险已生效
+ 保险已完结
+
+
+
+
+ 超时未接单
+
+ 超时未发货
+
+ 超时未发货
+
+
+
+ 售后超时
+
+
+
+
+
+ 售后发起中
+ 售后反馈中
+
+ 售后已同意
+ 售后已拒绝
+ 售后纠纷中
+ 售后已完成
+
+
+
+
+
+ 姓名:{{order.customerName}}
+
+
+ 保险要求
+ 详情...
+
+
+
+
+
+ {{order.provinceName + order.cityName + order.countryName + order.streetName + order.address}}
+
+ 提取店址
+
+
+ 客户勾选发货至安装/服务店,建议先联系店铺后发货!
+
+
+
+
+ 预约时间:{{order.expectTimeStartFront}}
+
+
+
+ 发货时间:{{order.workBeginTime}}
+
+
+
+ 距发货:
+
+
+
+
+
+ 完成时间:{{order.workFinishTime}}
+
+
+
+ 发货中:
+
+
+
+
+
+
+ 距完单分帐:
+ 合约单按期结算款项,请等待…
+
+
+
+
+
+ 距完单分帐:
+
+
+
+
+
+ 银联发起(T+1)支付中,正在刷新...
+ 详情
+
+
+
+ 银联发起(T+1)支付中:{{order.drawCashTime}}
+ 详情
+
+
+
+
+ 货款分账成功:{{order.arrivalTime}}
+
+
+
+ 提现失败
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 派出的安装单,在“服务订单”处跟踪与管理!
+
+
+ 派出的安装单被拒单或已撤回,请重新点“安装确认”
+
+
+ 安装单需先完成,本单方能进入结算栏
+
+
+ 安装单需先完成,本单方能进入下一栏
+
+
+
+
+ showModalByRef('sure2Revisit', order, null)"
+ @callModal="(modelName) => showModal({currentTarget: {dataset: {modal: modelName, isquicklydelivery: '0'}}}, order)"
+ @getDeliveryFlow="(trackingNumber) => {showDeliveryFlow = true; showDeliveryFlowTrackingNumber = trackingNumber;}"
+ @refreshOrderList="() => reloadMasterOrderPage()"
+ >
+
+
+
+
+
+
+
+ {{order.workerRemark || '可输入本单备注语'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ T+1银联结算动态:
+ 订单款项已进入发起银联分帐付款指令中,请确保您的银行帐户已绑定(银联支持任意个人银行帐户绑定结算)。根据支付规则,分帐支付按T+1结算方式(即按发起时间,次日内清算机构【银联】根据清算信息,完成支付到帐,如遇节假日,则节假日后的次日内完成支付到帐)!
+
+
+
+
+
+
+
+
+ 重发/补发前:
+
+
+
+ 您选择重发/换货/补发商品,请先与客户协商一致并重新发货,选择重发/补发则客户发起的退款默认退额为0元。
+
+
+
+
+
+
+
+ 提示:
+ {{item}}
+
+
+
+
+
+
+
+
+
+ 无可指派的师傅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/order-manage/order-manage.vue b/pages/order-manage/order-manage.vue
index 774156a..b293414 100644
--- a/pages/order-manage/order-manage.vue
+++ b/pages/order-manage/order-manage.vue
@@ -4,7 +4,7 @@
返回
- 接收的任务
+ 服务订单
@@ -97,8 +97,11 @@
{{order.goodsName}}
- 监
- 新
+
+ 未
+ 新
+
+ 监
未
待
服
@@ -120,17 +123,25 @@
有待付款
款已付清
+
+ 保险预备中
+ 保险已生效
+ 保险已完结
+
超时未接单
- 超时未预约
+ 超时未预约
超时未排单
超时未预约
超时未上门
超时未完单
+
+ 售后超时
+
- 售后发起中
+
+ 售后发起中
+ 售后反馈中
+
售后已同意
售后已拒绝
- 售后纠纷中
- 售后已完成
+ 售后纠纷中
+ 售后已完成
-
-
- 姓名:{{order.customerName}}
+
+
+
+ 姓名:{{order.customerName}}
+
+
+ 保险要求
+ 详情...
+
+
- {{order.address}}
-
+ {{order.provinceName + order.cityName + order.countryName + order.streetName + order.address}}
+
@@ -189,11 +210,12 @@
距完单分帐:
-
+
改价
-->
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
-
-
+
+
+
@@ -263,22 +290,25 @@
-
+
+
-
+
-
+ showModal({currentTarget: {dataset: {modal: modelName}}}, order)">
+
-
+
- 备注:{{order.customerRemark}}
+ {{order.workerRemark || '可输入本单备注语'}}
+
@@ -452,6 +513,13 @@
+
+
+
+
+
+
+
@@ -475,7 +543,11 @@
-
+
+
+
+
+
@@ -495,6 +567,13 @@
import rejectAfterSale from '@/pages/order-manage/modal/reject-after-sale.vue';
import onDoorImmediately from '@/pages/order-manage/modal/on-door-immediately.vue';
import acceptOrderNotice from '@/pages/order-manage/modal/accept-order-notice.vue';
+ import insuranceDetail from '@/pages/order-manage/modal/insurance-detail.vue';
+ import insuranceRetinue from '@/pages/order-manage/modal/insurance-retinue.vue';
+ import insuranceVertify from '@/pages/order-manage/modal/insurance-vertify.vue';
+ import allocateServiceMoney from '@/pages/order-manage/modal/allocate-service-money.vue';
+ import dispatchOrderToSelf from '@/pages/order-manage/modal/dispatch-order-to-self.vue';
+ import reFinishSubmit from '@/pages/order-manage/modal/re-finish-submit.vue'
+ import afterServiceRecord from './components/afterServiceRecord.vue';
export default {
components: {
@@ -512,7 +591,14 @@
agreeAfterSale,
rejectAfterSale,
onDoorImmediately,
- acceptOrderNotice
+ acceptOrderNotice,
+ insuranceDetail,
+ insuranceRetinue,
+ insuranceVertify,
+ allocateServiceMoney,
+ dispatchOrderToSelf,
+ reFinishSubmit,
+ afterServiceRecord
},
data() {
return {
@@ -586,6 +672,7 @@
scrollLeft: 0,
stickyTop: this.CustomBar,
tabCur: 0,
+ orderType: 0,
stateCur: null,
showTimeArrangeModal: false,
showArrangeFailTimeModal: false,
@@ -595,6 +682,9 @@
showEditTimeArrangeModal: false,
showOnDoorNoticeModal: false,
showAcceptOrderNoticeModal: false,
+ showInsuranceDetail: false,
+ showInsuranceRetinue: false,
+ showInsuranceVertify: false,
sendUrgentMsgModal: false,
agreeAfterSale: false,
rejectAfterSale: false,
@@ -603,20 +693,34 @@
curDate: '',
curUserInfo: {},
orderStatistics: {},
- hasAuthLocation: true
+ hasAuthLocation: true,
+ storageArgs: null,
+ showAllocateServiceMoney: false,
+ showDispathToSelf: false,
+ showEditWorkerRemark: false,
+ showReFinishSubmit: false
}
},
onLoad(option) {
if (option && option.tabCur) {
+ this.stateCur = null;
this.tabCur = option.tabCur;
+ } else if(option && option.stateCur) {
+ this.tabCur = null;
+ this.stateCur = option.stateCur;
+ } else if(option && option.orderType) {
+ this.orderType = option.orderType;
}
this.loadData();
this.bindEvent();
},
onShow() {
- if(this.orderList.length){
+ const isDetailPage = uni.getStorageSync('isDetailPage');
+ console.log(isDetailPage);
+ if(this.orderList.length && !isDetailPage){
this.reloadMasterOrderPage();
}
+ uni.setStorageSync('isDetailPage', '')
},
onUnload() {
this.offBindEvent();
@@ -626,7 +730,25 @@
// 获取当前登录用户信息
this.curUserInfo = this.$request.getCurUserInfo();
// let myTeamInfo = await this.$api.data('myTeamInfo');
- // this.myTeamMembers = myTeamInfo.members;
+ // this.myTeamMembers = myTeamInfo.members;
+ // const res = await this.$request.getWorkerInfo(this.curUserInfo.workerId)
+ // if(res.data.loginStatus == 1) {
+ // // 禁止登录,退出登录
+ // uni.clearStorageSync('userProfile');
+ // uni.showToast({
+ // icon: 'none',
+ // title: '您已被禁止登录',
+ // duration: 3000,
+ // success() {
+ // setTimeout(() => {
+ // uni.reLaunch({
+ // url: '/pages/login/login'
+ // })
+ // }, 3000)
+ // }
+ // })
+ // return
+ // }
this.myOrders = await this.$api.data('myOrders');
// this.orderList = this.myOrders.orderList;
// this.areaList = await this.$api.data('areaList');
@@ -639,16 +761,30 @@
// });
// }
// 初始化订单列表
- this.loadMasterOrderPage({
- orderStatus: this.subStateList[0].code
- });
- // 初始化品类及区域列表
- this.loadCategoryList();
- this.loadRegionList();
- // 初始化指派成员
- this.loadTeamMembers();
- // 订单统计
- this.loadOrderStatistics();
+ // this.loadMasterOrderPage({
+ // orderStatus: this.subStateList[0].code
+ // });
+ // // 初始化品类及区域列表
+ // this.loadCategoryList();
+ // this.loadRegionList();
+ // // 初始化指派成员
+ // this.loadTeamMembers();
+ // // 订单统计
+ // this.loadOrderStatistics();
+ Promise.allSettled([
+ // 初始化订单列表
+ this.loadMasterOrderPage({
+ orderStatus: this.subStateList[0].code
+ }),
+ // 订单统计
+ this.loadOrderStatistics()
+ ]).then(() => {
+ // 初始化品类及区域列表
+ this.loadCategoryList();
+ this.loadRegionList();
+ // 初始化指派成员
+ this.loadTeamMembers();
+ })
},
reloadMasterOrderPage(params = {}) {
// this.pageParams = [];
@@ -715,7 +851,7 @@
params.isMonitoredOrder = true;
} else if (this.stateList[this.stateCur].code === 103) {
// 超时单
- params.isMonitoredOrder = true;
+ // params.isMonitoredOrder = true;
params.orderByColumn = "createTime";
params.isAsc = "desc";
} else if (this.stateList[this.stateCur].code === 0) {
@@ -749,6 +885,7 @@
params.isAsc = "asc";
}
}
+ params.orderType = this.orderType;
try {
let res = null;
let tmpStateCur = this.stateCur;
@@ -824,24 +961,24 @@
},
async loadCategoryList(idArr) {
let typeList = await this.$request.listByStep({
- type: 1
+ type: this.orderType == 0 ? 1 : 2
});
typeList = typeList.data;
let col1Id = idArr ? idArr[0] : typeList[0].goodsCategoryId;
let subTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: col1Id
});
subTypeList = subTypeList.data;
let col2Id = idArr ? idArr[1] : subTypeList[0].goodsCategoryId;
let subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: col2Id
});
subSubTypeList = subSubTypeList.data;
let col3Id = idArr ? idArr[2] : subSubTypeList[0].goodsCategoryId;
let thirdTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: col3Id
});
thirdTypeList = thirdTypeList.data;
@@ -878,7 +1015,9 @@
this.myTeamMembers = res.rows;
},
async loadOrderStatistics() {
- let res = await this.$request.orderStatistics();
+ let res = await this.$request.orderStatistics({
+ orderType: this.orderType
+ });
this.orderStatistics = res.data;
},
bindEvent() {
@@ -925,14 +1064,14 @@
if (colObj.column == 0) {
// 通过一级查询二级
let subTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: this.categoryList[0][colObj.value].goodsCategoryId
});
subTypeList = subTypeList.data;
let subSubTypeList = [];
if (subTypeList && subTypeList.length) {
subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: subTypeList[0].goodsCategoryId
});
subSubTypeList = subSubTypeList.data;
@@ -945,7 +1084,7 @@
} else if (colObj.column == 1) {
// 通过二级查三级
let subSubTypeList = await this.$request.listByStep({
- type: 1,
+ type: this.orderType == 0 ? 1 : 2,
goodsCategoryId: this.categoryList[1][colObj.value].goodsCategoryId
});
subSubTypeList = subSubTypeList.data;
@@ -988,7 +1127,13 @@
let date = new Date();
this.curDate = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00";
},
- showModal(e, orderInfo) {
+ async showModal(e, orderInfo, isCheckOrderInsurance) {
+ if(isCheckOrderInsurance) {
+ let resCheck = await this.$request.checkOrderInsurance({
+ orderCode: orderInfo.orderMasterCode
+ });
+ if(resCheck.code !== 0) return;
+ }
this.getCurDateAndTime();
if (orderInfo) {
this.curOrder = orderInfo;
@@ -1139,13 +1284,24 @@
this.$refs.payQrcode.showQrcode(res.data.expend.qrcode_url);
}
},
+ async insuranceRetinueAdd(e, orderInfo) {
+ this.showModal(e, orderInfo);
+ if(orderInfo.orderDetailId) {
+ this.$nextTick(() => {
+ this.$refs.insuranceRetinueRef.initData()
+ })
+ }
+ },
showServOrderDetail(order) {
+ uni.setStorageSync('isDetailPage', true);
+
uni.navigateTo({
url: '/pages/order-manage/serv-detail?order=' + encodeURIComponent(JSON.stringify(order))
})
},
async finishOrder(order) {
let checkRes = await this.checkBankAndCertify();
+ console.log(checkRes);
if (!checkRes) {
return;
}
@@ -1166,11 +1322,13 @@
this.$refs.vertifyCertify.showModal();
return false;
} else if (this.certifyInfo.status != 1) {
- uni.showToast({
- icon: 'none',
- title: '实名认证审核通过后才可进行操作',
- duration: 2500
- })
+ setTimeout(() => {
+ uni.showToast({
+ icon: 'none',
+ title: '实名认证审核通过后才可进行操作',
+ duration: 2500
+ })
+ }, 500);
return false;
} else if (!this.bankCard || !this.bankCard.bankNum) {
this.$refs.vertifyBankBind.showModal();
@@ -1178,7 +1336,86 @@
}
return true;
},
- async acceptOrder(e, order, id, code, status, funName) {
+ certVertifySuccess(data) {
+ const cacheArgs = Array.from(this.storageArgs)
+ const sendArgs = cacheArgs.length > 6 ? cacheArgs.slice(0,-1) : cacheArgs
+ this.acceptOrder(...sendArgs, data)
+ this.showInsuranceVertify = false
+ },
+ varifyDetailOrderUser() {
+ const remark = this.curUserInfo.remark ? JSON.parse(this.curUserInfo.remark) : {certNo: '',certName: ''}
+ if(remark.certNo && remark.certName) {
+ return {
+ check: true,
+ ...remark
+ }
+ } else {
+ // 没有身份信息,让填写
+ return {
+ check: false,
+ ...remark
+ }
+ }
+ },
+ async acceptOrder(e, order, id, code, status, funName, certData = {}) {
+ // 如果是配件订单,先拆分订单
+ if(order.orderType === 1 && order.hasServiceOrder === 0) {
+ this.curOrder = order;
+ this.showAllocateServiceMoney = true;
+ return
+ }
+ if(order.orderDetailId && order.insuranceId) {
+ // 子单并且订单有保险
+ const detailUserStatus = this.varifyDetailOrderUser()
+ if(detailUserStatus.check) {
+ const validUser = certData.certNo && certData.certName ? certData : detailUserStatus
+ const res = await this.$request.insuranceUserAdd({
+ idCardNum: validUser.certNo,
+ phone: this.curUserInfo.phone,
+ name: validUser.certName,
+ orderDetailId: order.orderDetailId
+ })
+ if (res.code === 0) {
+ // 增员完毕,保险已生效
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: '保险未响应,请再次点接单',
+ })
+
+ // 没有身份信息,让用户填写
+ // this.storageArgs = arguments;
+ // this.showInsuranceVertify = true
+ return
+ }
+ } else {
+ // 没有身份信息,让用户填写
+ this.storageArgs = arguments;
+ this.showInsuranceVertify = true
+ return
+ }
+ }
+
+ if(order.insuranceId) {
+ // 订单有保险校验保险信息
+ const varifyData = await this.$request.certNoTwoElementVerification({
+ workerId: this.curUserInfo.workerId,
+ ...certData
+ })
+ if(varifyData && varifyData.code === 0 && varifyData.data === '身份证二要素校验失败!') {
+ // 验证不通过,弹出输入弹窗
+ uni.showToast({
+ icon: 'none',
+ title: '身份信息校验失败,请重新输入',
+ duration: 2500
+ })
+ this.storageArgs = arguments;
+ this.showInsuranceVertify = true
+ return
+ }
+ }
+
+ this.storageArgs = null;
let res = await this.$request[funName]({
id: id,
orderStatus: status,
@@ -1287,6 +1524,10 @@
}
},
async assignWork2MySelf(orderInfo) {
+ let resCheck = await this.$request.checkOrderInsurance({
+ orderCode: orderInfo.orderMasterCode
+ });
+ if(resCheck.code !== 0) return;
let res = await this.$request.getCanAssignList({
orderMasterId: orderInfo.orderMasterId
});
@@ -1313,9 +1554,8 @@
return await this.assignWork(params);
},
async rejectMasterOrder(order) {
- let res = await this.$request.updateOrder({
- id: order.orderMasterId,
- workerId: -1
+ let res = await this.$request.rejectMasterOrderWhenAccepted({
+ id: order.orderMasterId
});
if (res && res.code === 0) {
this.reloadMasterOrderPage();
@@ -1354,27 +1594,63 @@
})
}
},
- async rejectMasterOrderWhenAccepted(order) {
- let res = await this.$request.rejectMasterOrderWhenAccepted({
- id: order.orderMasterId
- });
- if (res && res.code === 0) {
- this.reloadMasterOrderPage();
- uni.showToast({
- icon: 'none',
- title: '退单成功',
- duration: 1000
- })
- this.addOrderOperate({
- orderId: order.orderMasterId,
- orderType: '01',
- content: '师傅退单'
+ rejectMasterOrderWhenAccepted(order) {
+ if(order.orderDetailId == null && this.tabCur === 0) {
+ // 到店服务主单退单的那个退单键。和商品有派安装单的时候退单的退单键
+ if(order.goods.storeService) {
+ uni.showModal({
+ title: '提示',
+ content: `1.你的订单属到店服务,整单退单请把所有派出子单退回后,让客户点“取消订单”键。\n2.如派出子单已完成结算支付则客户无法“取消订单”,且已完成订单的金额与分销金额无法系统退回。非客户责任的建议你线下退全款并完成订单(等于你承担无法退回的分销费用)!`,
+ success: (res) => {
+
+ }
+ })
+ return;
+ }
+ }
+ if(order.masterWorkerId === order.workerId) {
+ uni.showModal({
+ title: '提示',
+ content: order.orderType == 1 ? '确认后订单回到你拣货/发货栏,你可重新派单或操作彻底退单' : '确认后订单回到你未约/未排栏,你可重新派单或操作彻底退单',
+ success: async (res) => {
+ if(res.confirm) {
+ let res
+ if(order.orderDetailId) {
+ res = await this.$request.rejectDetailOrder({
+ id: order.orderDetailId
+ });
+ } else {
+ res = await this.$request.rejectMasterOrderWhenAccepted({
+ id: order.orderMasterId
+ });
+ }
+ if (res && res.code === 0) {
+ this.reloadMasterOrderPage();
+ uni.showToast({
+ icon: 'none',
+ title: '退单成功',
+ duration: 1000
+ })
+ // this.addOrderOperate({
+ // orderId: order.orderMasterId,
+ // orderType: '01',
+ // content: '师傅退单'
+ // })
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: res.msg,
+ duration: 2000
+ })
+ }
+ }
+ }
})
} else {
- uni.showToast({
- icon: 'none',
- title: res.msg,
- duration: 2000
+ const orderId = order.orderDetailId ? order.orderDetailId : order.orderMasterId
+ const isDetailOrder = order.orderDetailId ? 1 : 0
+ uni.navigateTo({
+ url: '/pages/order-manage/cancel-order?orderId='+orderId+'&orderType=0&isDetailOrder='+isDetailOrder
})
}
},
@@ -1506,6 +1782,67 @@
this.tabCur = curTab;
this.stateCur = null;
this.reloadMasterOrderPage();
+ },
+ async serveringReturn(order) {
+ const res = await this.$request.returnOrder({
+ id: order.orderDetailId
+ })
+ if (res && res.code === 0) {
+ uni.showToast({
+ icon: 'success',
+ title: '操作成功',
+ duration: 1000
+ })
+ this.addOrderOperate({
+ orderId: order.orderDetailId,
+ orderType: '02',
+ content: '提交退回'
+ })
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: '操作失败',
+ duration: 1000
+ })
+ }
+ },
+ updateOrderWorkerRemark(order, index) {
+ this.curOrder = order;
+ this.curOrder.currentIndex = index;
+ this.showEditWorkerRemark = true;
+ this.$refs.editOrderRemarkPopup.open()
+ },
+ async updateOrderWorkerRemarkOpreation(input) {
+ let reqFunName = "saveMasterWorkerRemark", id;
+ if (this.curOrder.orderDetailId) {
+ reqFunName = "updateDetailOrder";
+ id = this.curOrder.orderDetailId;
+ } else {
+ id = this.curOrder.orderMasterId;
+ }
+ // 确定参数
+ let params = {
+ id: id,
+ workerRemark: input
+ }
+
+ let res = await this.$request[reqFunName](params);
+ if (res.code === 0) {
+ uni.showToast({
+ icon: 'success',
+ title: '操作成功',
+ duration: 1000
+ })
+ const currentOrder = this.orderList[this.curOrder.currentIndex]
+ currentOrder.workerRemark = input
+ this.set(this.orderList, this.curOrder.currentIndex, currentOrder)
+ } else {
+ uni.showToast({
+ icon: 'none',
+ title: '操作失败',
+ duration: 1000
+ })
+ }
}
}
}
@@ -1541,5 +1878,10 @@
right: 25rpx;
top: 25rpx;
z-index: 99;
+ }
+ .order-name {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
}
diff --git a/pages/order-manage/serv-detail.vue b/pages/order-manage/serv-detail.vue
index b1e2e78..bbd5b38 100644
--- a/pages/order-manage/serv-detail.vue
+++ b/pages/order-manage/serv-detail.vue
@@ -4,7 +4,7 @@
返回
- 服务订单详情
+ {{order.orderType === 0 ? '服务订单详情' : '商品订单详情'}}
@@ -37,9 +37,10 @@
{{servDetail.goodsName}}
已完成
确认中
- 服务中
- 待上门
- 未约/未排
+ {{order.orderType === 0 ? '服务中' : '发货中'}}
+ {{order.orderType === 0 ? '待上门' : '待发货'}}
+ {{order.orderType === 0 ? '未约/未排' : '拣货/发货'}}
+ 已取消
- 服务地址:{{servDetail.address}}
+ 服务地址:{{servDetail.provinceName + servDetail.cityName + servDetail.countryName + servDetail.streetName + servDetail.address}}
客户:{{servDetail.customerName}}
- {{servDetail.customerPhone.substring(0, 3) + "****" + servDetail.customerPhone.substring(7)}}
-
+ {{servDetail.customerPhone.substring(0, 3) + "****" + servDetail.customerPhone.substring(7)}}
+
-
+
+
+
+ 派单公司:{{servDetail.masterCompanyName}}
+ {{servDetail.masterCompanyPhone}}
+
+
+
派单公司:{{servDetail.masterCompanyName}}
{{servDetail.masterWorkerPhone}}
-
-
-
- 预约时间:{{servDetail.expectTimeStartFront + '~' + servDetail.expectTimeEndFront}}
- 预约时间:{{servDetail.expectTimeStartFront}}
-
-
-
-
- 上门时间:{{servDetail.workBeginTime}}
+
+
+
+
+ 预约时间:{{servDetail.expectTimeStartFront + '~' + servDetail.expectTimeEndFront}}
+ 预约时间:{{servDetail.expectTimeStartFront}}
+
+
+
+
+ 上门时间:{{servDetail.workBeginTime}}
+
+
-
+
- 服务金额:
+ {{order.orderType === 0 ? '服务金额' : '货品金额'}}:
{{servDetail.payAddMoney}}
【订单加价,单独到账】
@@ -93,7 +109,7 @@
{{servDetail.serverMoney}}
-
加减费用:-3
[
@@ -107,8 +123,25 @@
加减费用:+{{item.changeMoney}}[订单加价]
-
-
+ -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 订单备注: {{servDetail.customerRemark}}
+
+
+
@@ -120,10 +153,114 @@
-
-
- 订单备注: {{servDetail.remark}}
+
+
+
+
+
+ 服务记录
+
+
+ 撤单
+ 已完成
+ 待确认
+ 服务中
+ 待上门
+ 未约/未排
+ 待接单
+
+
+
+ 师傅:{{servDetail.masterWorkerName}}
+
+ 联系方式:{{servDetail.masterWorkerPhone}}
+
+
+
+
+ 安装/服务/施工门店
+
+
+
+
+
+
+
+
+ 客户已选: {{servDetail.serviceShop.shopName}}
+
+
+
+ 距离客户
+ {{servDetail.serviceShop.distance}}
+
+
+
+ {{servDetail.serviceShop.provinceName + servDetail.serviceShop.cityName + servDetail.serviceShop.countryName + servDetail.serviceShop.streetName + servDetail.serviceShop.address}}
+
+
+ 店长:{{servDetail.serviceShop.phone}}
+
+
+
+
+
+
+
+
+
+ 服务记录
+
+
+ 撤单
+ 已完成
+ 待确认
+ 服务中
+ 待上门
+ 未约/未排
+ 待接单
+
+
+
+ 师傅:{{servDetail.masterWorkerName}}
+
+ 联系方式:{{servDetail.masterWorkerPhone}}
+
+
+
+
+ 安装/服务/施工门店
+
+
+
+
+
+
+
+
+ 客户已选: {{servDetail.shop.shopName}}
+
+
+
+ 距离您
+ {{servDetail.shop.distance}}
+
+
+
+ {{servDetail.shop.provinceName + servDetail.shop.cityName + servDetail.shop.countryName + servDetail.shop.streetName + servDetail.shop.address}}
+
+
+ 店长:{{servDetail.shop.phone}}
+
+
+
+
+
+
+
+
+
@@ -131,14 +268,26 @@
加价记录
-
+
加价金额:
- {{changeRecord.changeMoney}}
+ {{addRecord.changeMoney + (addRecord.attachmentMoney || 0)}}
+
+
+ {{addRecord.reason.split('含')[1]}}:
+ {{addRecord.changeMoney}}
加价备注:
- {{changeRecord.remark}}
+ {{addRecord.remark}}
+
+
+
+
+
+
+
+
@@ -165,7 +314,20 @@
-
+
+ {showDeliveryFlow = true; showDeliveryFlowTrackingNumber = trackingNumber;}"
+ >
+
-
+
- 服务记录
+ {{order.orderType === 0 ? '服务记录' : '发货记录'}}
撤单
已完成
待确认
- 服务中
- 待上门
- 未约/未排
+ {{servDetail.orderType === 0 ? '服务中' : '发货中'}}
+ {{servDetail.orderType === 0 ? '待上门' : '待发货'}}
+ {{servDetail.orderType === 0 ? '未约/未排' : '拣货/发货'}}
待接单
@@ -342,14 +563,24 @@
售后已同意
售后已拒绝
售后纠纷中
- 售后已完成
-
-
- 超时未接单
- 超时未预约
- 超时未上门
- 超时未完单
+ 售后已完成
+
+
+ 超时未接单
+ 超时未预约
+ 超时未排单
+ 超时未预约
+ {{order.orderType === 0 ? '超时未上门' : '超时未发货'}}
+ 超时未完单
+
+
+ 超时未接单
+ 超时未发货
+ 超时未发货
+
+
+ 售后超时
师傅:{{item.workerName}}
@@ -361,9 +592,9 @@
服务金额:
{{item.payMoney}}
- 预约时间:{{item.expectTimeStartFront + '~' + item.expectTimeEndFront}}
+ 预约时间:{{item.expectTimeStartFront}}
预约时间:{{item.expectTimeStartFront}}
- 上门时间:{{item.workBeginTime}}
+ {{order.orderType === 1 ? '发货时间' : '上门时间'}}:{{item.workBeginTime}}
完成时间:{{item.workFinishTime}}
@@ -377,12 +608,24 @@
加价金额:
+ {{changeRecord.changeMoney + (changeRecord.attachmentMoney || 0)}}
+
+
+ {{changeRecord.reason.split('含')[1]}}:
{{changeRecord.changeMoney}}
加价备注:
{{changeRecord.remark}}
+
+
+
+
+
+
+
+
@@ -409,7 +652,15 @@
-
+
+ {showDeliveryFlow = true; showDeliveryFlowTrackingNumber = trackingNumber;}"
+ >
+
+
+
+
+
+ 发货方式:
+ 发快递/物流
+ 送货上门
+ 客户自提
+
+
+
+
+
+
+
+
+
+ 发货备注:{{servDetail.deliveryRemark}}
+
+ 快递单号:{{servDetail.trackingNumber}}
+ 查询
+
+
+
+
+
+ 交货记录
+
+
+
+
+
+
+
+
+ 交货备注:{{servDetail.handoverRemark}}
+
+
订单编码:{{servDetail.orderDetailCode}}
订单编码:{{servDetail.orderMasterCode}}
+ 原订单编码:{{servDetail.originalOrderMasterCode}}
订单时间:{{servDetail.createTime}}
@@ -576,7 +881,7 @@
订单管理
- 立即上门
+ {{order.orderType === 0 ? (servDetail.goods.storeService ? '立即服务' : '立即上门') : '立即发货'}}
-
-
+
+
-
+
+
+
+
+
+
+
diff --git a/static/add-img.png b/static/add-img.png
new file mode 100644
index 0000000..af8489e
Binary files /dev/null and b/static/add-img.png differ
diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
index a3ced3d..bb819fe 100644
--- a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
+++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
@@ -266,7 +266,7 @@
this.clearPropagation = true
},
- open(direction) {
+ open(direction) {
// fix by mehaotian 处理快速打开关闭的情况
if (this.showPopup) {
clearTimeout(this.timer)
diff --git a/uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue b/uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue
index c4930c2..5bdeb23 100644
--- a/uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue
+++ b/uni_modules/zb-tooltip/components/zb-tooltip/zb-tooltip.vue
@@ -236,7 +236,7 @@
position: absolute;
border-radius: 4px;
font-size: 12px;
- padding: 10px;
+ padding: 5px 3px;
min-width: 10px;
word-wrap: break-word;
display: inline-block;