Compare commits
19 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
d31ca6fc16 | |
|
|
729eb7c861 | |
|
|
21efa4805d | |
|
|
1343ec6ebc | |
|
|
813bd77675 | |
|
|
53a74cdc93 | |
|
|
9aa6dcfd2f | |
|
|
4f84c72707 | |
|
|
2cf2c98e5d | |
|
|
ca8ddc2446 | |
|
|
dd4bc6b8df | |
|
|
7abd4c2fe8 | |
|
|
8c9082e503 | |
|
|
7e0d673551 | |
|
|
1798d7efde | |
|
|
8024a0d47f | |
|
|
b22cefb704 | |
|
|
c201beb92f | |
|
|
a3316e76b6 |
|
|
@ -804,6 +804,9 @@ button.cuIcon.lg {
|
|||
|
||||
.cu-capsule .cu-tag {
|
||||
margin: 0;
|
||||
font-size: 25rpx;
|
||||
padding: 0rpx 12rpx;
|
||||
height: 42rpx;
|
||||
}
|
||||
|
||||
.cu-capsule .cu-tag[class*="line-"]:last-child::after {
|
||||
|
|
@ -3026,8 +3029,12 @@ scroll-view.cu-steps .cu-item {
|
|||
|
||||
.margin-top-sm {
|
||||
margin-top: 20upx;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
.margin-top-sm .labels {
|
||||
font-size: 30upx;
|
||||
}
|
||||
.margin-top {
|
||||
margin-top: 30upx;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
export default {
|
||||
deptId: 102,
|
||||
deptId: 101,
|
||||
from: 'server',
|
||||
initPageNum: 1,
|
||||
initPageSize: 10,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
import globalData from '@/common/js/globalData.js';
|
||||
|
||||
export default {
|
||||
address: 'https://www.opsoul.com:8881',
|
||||
// address: 'https://www.opsoul.com:8881',
|
||||
address: 'https://gmhl.opsoul.com',
|
||||
// 异步接口拦截
|
||||
addInterceptor() {
|
||||
let _this = this;
|
||||
|
|
@ -13,9 +14,9 @@ export default {
|
|||
})
|
||||
let userInfo = _this.getCurUserInfo();
|
||||
// request 触发前拼接 url
|
||||
args.url = 'https://www.opsoul.com:8881' + args.url;
|
||||
// args.url = 'https://www.opsoul.com:8881' + args.url;
|
||||
// args.url = 'http://127.0.0.1:80' + args.url;
|
||||
// args.url = 'http://192.168.2.74:80' + args.url;
|
||||
args.url = 'https://gmhl.opsoul.com' + args.url;
|
||||
|
||||
if (!args.data) {
|
||||
args.data = {}
|
||||
|
|
@ -46,6 +47,7 @@ export default {
|
|||
}
|
||||
},
|
||||
fail(err) {
|
||||
console.log(err);
|
||||
uni.hideLoading();
|
||||
uni.showToast({
|
||||
title: '请求失败',
|
||||
|
|
@ -272,6 +274,10 @@ export default {
|
|||
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);
|
||||
},
|
||||
|
|
@ -434,7 +440,9 @@ export default {
|
|||
data: params,
|
||||
header: {
|
||||
pageNum: params.pageNum,
|
||||
pageSize: params.pageSize
|
||||
pageSize: params.pageSize,
|
||||
orderByColumn: params.orderByColumn ? params.orderByColumn : "",
|
||||
isAsc: params.isAsc ? params.isAsc : ""
|
||||
}
|
||||
})
|
||||
return res[1].data;
|
||||
|
|
@ -451,7 +459,11 @@ export default {
|
|||
let res = await uni.request({
|
||||
url: '/order/app/mix/order/list',
|
||||
method: 'POST',
|
||||
data: params
|
||||
data: params,
|
||||
header: {
|
||||
orderByColumn: params.orderByColumn ? params.orderByColumn : "",
|
||||
isAsc: params.isAsc ? params.isAsc : ""
|
||||
}
|
||||
})
|
||||
return res[1].data;
|
||||
},
|
||||
|
|
@ -459,7 +471,11 @@ export default {
|
|||
let res = await uni.request({
|
||||
url: '/order/app/mix/after/list',
|
||||
method: 'POST',
|
||||
data: params
|
||||
data: params,
|
||||
header: {
|
||||
orderByColumn: params.orderByColumn ? params.orderByColumn : "",
|
||||
isAsc: params.isAsc ? params.isAsc : ""
|
||||
}
|
||||
})
|
||||
return res[1].data;
|
||||
},
|
||||
|
|
@ -494,7 +510,9 @@ export default {
|
|||
data: params,
|
||||
header: {
|
||||
pageNum: params.pageNum,
|
||||
pageSize: params.pageSize
|
||||
pageSize: params.pageSize,
|
||||
orderByColumn: params.orderByColumn ? params.orderByColumn : "",
|
||||
isAsc: params.isAsc ? params.isAsc : ""
|
||||
}
|
||||
})
|
||||
return res[1].data;
|
||||
|
|
@ -662,6 +680,17 @@ export default {
|
|||
})
|
||||
return res[1].data;
|
||||
},
|
||||
async rejectMasterOrderWhenAccepted(params = {}) {
|
||||
let res = await uni.request({
|
||||
url: '/order/master/console/cancel',
|
||||
method: 'POST',
|
||||
data: params,
|
||||
header: {
|
||||
'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',
|
||||
|
|
@ -686,6 +715,14 @@ export default {
|
|||
})
|
||||
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',
|
||||
|
|
@ -765,5 +802,45 @@ export default {
|
|||
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 getOrderOperate(params = {}) {
|
||||
let res = await uni.request({
|
||||
url: '/order/operate/app/list',
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
return res[1].data;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
export default {
|
||||
data() {
|
||||
return {
|
||||
//设置默认的分享参数
|
||||
share: {
|
||||
title: '工盟互联',
|
||||
path: '/pages/index/index',
|
||||
imageUrl: '',
|
||||
desc: '',
|
||||
content: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
onShareAppMessage(res) {
|
||||
return {
|
||||
title: this.share.title,
|
||||
path: this.share.path,
|
||||
imageUrl: this.share.imageUrl,
|
||||
desc: this.share.desc,
|
||||
content: this.share.content,
|
||||
success(res) {
|
||||
uni.showToast({
|
||||
title: '分享成功'
|
||||
})
|
||||
},
|
||||
fail(res) {
|
||||
uni.showToast({
|
||||
title: '分享失败',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
onShareTimeline() {
|
||||
return {
|
||||
title: this.share.title,
|
||||
path: this.share.path,
|
||||
imageUrl: this.share.imageUrl,
|
||||
desc: this.share.desc,
|
||||
content: this.share.content,
|
||||
success(res) {
|
||||
uni.showToast({
|
||||
title: '分享成功'
|
||||
})
|
||||
},
|
||||
fail(res) {
|
||||
uni.showToast({
|
||||
title: '分享失败',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -4,11 +4,11 @@
|
|||
</view>
|
||||
<view class="margin-left-sm product-content">
|
||||
<view>
|
||||
<view class="text-black">{{product.goodsName}}</view>
|
||||
<view class="text-black">{{product.totalName}}</view>
|
||||
<view class="text-sm" v-if="ifShowComments">{{product.remark}}</view>
|
||||
</view>
|
||||
<view class="flex justify-between align-center">
|
||||
<view class="flex justify-start align-center" v-if="product.payMoney">
|
||||
<!-- <view class="flex justify-start align-center" v-if="product.payMoney">
|
||||
<text class="text-price text-red text-bold text-xl">{{product.payMoney}}</text>
|
||||
</view>
|
||||
<view v-else-if="product.discountPrice" class="flex justify-start align-center">
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
</view>
|
||||
<view class="padding-xs" v-if="product.type">
|
||||
<view class='cu-tag light bg-blue'>{{product.type}}</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view v-if="ifShowServArea">
|
||||
<view class="cu-capsule">
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
},
|
||||
ifShowComments: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
default: false
|
||||
},
|
||||
product: {
|
||||
type: Object,
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@
|
|||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
isAutoClose: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -57,7 +61,9 @@
|
|||
},
|
||||
confirmCallback(e) {
|
||||
this.$emit('confirm');
|
||||
this.hideModal();
|
||||
if(this.isAutoClose) {
|
||||
this.isShow = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="showTakeCertifiedModal"
|
||||
@tap="hideModal">以后绑定</view>
|
||||
@tap="hideModal">{{text}}</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showTakeCertifiedModal" @tap="hideModal" @click="goToBindBank">立即绑定</view>
|
||||
</view>
|
||||
|
|
@ -21,7 +21,13 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'vertify-bank-bind',
|
||||
emits: ['reload'],
|
||||
emits: ['reload', 'stillAcceptOrder'],
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
default: '以后绑定'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false
|
||||
|
|
@ -33,6 +39,9 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.isShow = false;
|
||||
if(this.text == '仍然接单') {
|
||||
this.$emit('stillAcceptOrder')
|
||||
}
|
||||
},
|
||||
goToBindBank() {
|
||||
uni.navigateTo({
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="showTakeCertifiedModal"
|
||||
@tap="hideModal">以后认证</view>
|
||||
@tap="hideModal">{{text}}</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showTakeCertifiedModal" @tap="hideModal" @click="goToCertify">立即认证</view>
|
||||
</view>
|
||||
|
|
@ -21,7 +21,13 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'vertify-certify',
|
||||
emits: ['reload'],
|
||||
emits: ['reload', 'stillAcceptOrder'],
|
||||
props: {
|
||||
text: {
|
||||
type: String,
|
||||
default: '以后认证'
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShow: false
|
||||
|
|
@ -33,6 +39,9 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.isShow = false;
|
||||
if(this.text == '仍然接单') {
|
||||
this.$emit('stillAcceptOrder')
|
||||
}
|
||||
},
|
||||
goToCertify() {
|
||||
uni.navigateTo({
|
||||
|
|
|
|||
4
main.js
4
main.js
|
|
@ -49,6 +49,10 @@ Vue.prototype.$calcUtil = calcUtil;
|
|||
Vue.prototype.$commonFun = commonFun;
|
||||
Vue.prototype.$request = request;
|
||||
|
||||
import share from 'common/mixin/share.js'//我命名为share.js
|
||||
Vue.mixin(share)
|
||||
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
App.mpType = 'app'
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name" : "dingdong-master",
|
||||
"appid" : "",
|
||||
"appid" : "__UNI__EF8108C",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
|
|
@ -52,8 +52,7 @@
|
|||
"quickapp" : {},
|
||||
/* 快应用特有相关 */
|
||||
"mp-weixin" : {
|
||||
/* 小程序特有相关 */
|
||||
"appid" : "wxc2920b79d0980f8b",
|
||||
"appid" : "wx105ce607b514ff2a",
|
||||
"setting" : {
|
||||
"urlCheck" : false,
|
||||
"minified" : true,
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
:value="areaMultiIndex" :range-key="'areaName'" :range="areaList">
|
||||
<view class="flex justify-start">
|
||||
<view class="text-cut search-nav-item-text">
|
||||
{{chosenArea && chosenArea.length ? chosenArea[2].areaName : item.title}}
|
||||
{{chosenArea && chosenArea.length ? chosenArea[chosenArea.length - 1].areaName : item.title}}
|
||||
</view>
|
||||
<text class="text-lg"><text class="cuIcon-triangledownfill"></text></text>
|
||||
</view>
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
:range="categoryList">
|
||||
<view class="flex justify-start">
|
||||
<view class="text-cut search-nav-item-text">
|
||||
{{chosenCategory && chosenCategory.length ? chosenCategory[2].goodsCategoryName : item.title}}
|
||||
{{chosenCategory && chosenCategory.length ? chosenCategory[chosenCategory.length - 1].goodsCategoryName : item.title}}
|
||||
</view>
|
||||
<text class="text-lg"><text class="cuIcon-triangledownfill"></text></text>
|
||||
</view>
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
</view>
|
||||
<!-- 任务单 -->
|
||||
<view class="margin-lr-sm margin-bottom-lg">
|
||||
<view v-for="(task, index) in tasks" class="padding bg-white margin-top-sm">
|
||||
<view v-for="(task, index) in tasks" :key="index" class="padding bg-white margin-top-sm">
|
||||
<view class="flex justify-between">
|
||||
<view class="text-lg text-bold text-cut" style="width: 70%;">{{task.goodsName}}</view>
|
||||
<view class="text-right">
|
||||
|
|
@ -68,7 +68,19 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="flex justify-start" v-if="task.tag">
|
||||
<view v-for="(tagContent, index1) in task.tag" class='cu-tag margin-right-xs'>{{tagContent}}</view>
|
||||
<view v-for="(tagContent, index1) in task.tag" :key="index1" class='cu-tag margin-right-xs'>{{tagContent}}</view>
|
||||
</view>
|
||||
<view>
|
||||
<view v-if="task.consultMode === '01'" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>合约单</view>
|
||||
<view v-if="task.payType === 1 && task.consultMode !== '01'" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>到付单</view>
|
||||
<template v-if="task.consultMode === '01'">
|
||||
<view v-if="task.changeMoney" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view v-if="task.changeMoney || task.payStatus != 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||||
</template>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text
|
||||
|
|
@ -77,8 +89,8 @@
|
|||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-timefill"></text></text>
|
||||
<text v-if="task.expectTimeEndFront">{{task.expectTimeStartFront + '~' + task.expectTimeEndFront}}</text>
|
||||
<text v-else>{{task.expectTimeStartFront}}</text>
|
||||
<text v-if="task.expectTimeEndFront">期望时间:{{task.expectTimeStartFront + '~' + task.expectTimeEndFront}}</text>
|
||||
<text v-else>期望时间:{{task.expectTimeStartFront}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-phone"></text></text>
|
||||
|
|
@ -187,8 +199,8 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 账户及实名弹窗 -->
|
||||
<vertify-bank-bind ref="vertifyBankBind"></vertify-bank-bind>
|
||||
<vertify-certify ref="vertifyCertify"></vertify-certify>
|
||||
<vertify-bank-bind ref="vertifyBankBind" text="仍然接单" @stillAcceptOrder="stillAccept"></vertify-bank-bind>
|
||||
<vertify-certify ref="vertifyCertify" text="仍然接单" @stillAcceptOrder="stillAccept"></vertify-certify>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -276,7 +288,13 @@
|
|||
chosenCategory: [],
|
||||
bankCard: null,
|
||||
certifyInfo: null,
|
||||
hasNotice: false
|
||||
hasNotice: false,
|
||||
workerCityIds: [],
|
||||
workerDistrictIds: [],
|
||||
workerStreetIds: [],
|
||||
workerFirstCategoryIds: [],
|
||||
workerSecondCategoryIds: [],
|
||||
workerThirdCategoryIds: []
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
|
|
@ -285,6 +303,8 @@
|
|||
methods: {
|
||||
async loadData() {
|
||||
this.curUserInfo = this.$request.getCurUserInfo();
|
||||
this.getWorkerAreaIds();
|
||||
await this.getWorkerDataCategoryIds();
|
||||
// this.checkBankAndCertify();
|
||||
// this.tasks = await this.$api.data('tasks');
|
||||
this.reloadMasterOrderPage();
|
||||
|
|
@ -305,6 +325,8 @@
|
|||
this.certifyInfo = certifyInfoRes.data;
|
||||
|
||||
let res = true;
|
||||
// this.$refs.vertifyCertify.showModal();
|
||||
// res = false;
|
||||
if (!this.bankCard || !this.bankCard.bankNum) {
|
||||
this.$refs.vertifyBankBind.showModal();
|
||||
res = false;
|
||||
|
|
@ -315,6 +337,50 @@
|
|||
}
|
||||
return res;
|
||||
},
|
||||
async getWorkerAreaIds() {
|
||||
let res = await this.$request.getWorkerArea({
|
||||
workerId: this.curUserInfo.workerId
|
||||
});
|
||||
let cityIds = [];
|
||||
let districtIds = [];
|
||||
let streetIds = [];
|
||||
for(let i = 0; i < res.data.length; i++) {
|
||||
if (cityIds.indexOf(res.data[i].cityId) === -1) {
|
||||
cityIds.push(res.data[i].cityId)
|
||||
}
|
||||
if (districtIds.indexOf(res.data[i].districtId) === -1) {
|
||||
districtIds.push(res.data[i].districtId)
|
||||
}
|
||||
if (streetIds.indexOf(res.data[i].streetId) === -1) {
|
||||
streetIds.push(res.data[i].streetId)
|
||||
}
|
||||
}
|
||||
this.workerCityIds = cityIds;
|
||||
this.workerDistrictIds = districtIds;
|
||||
this.workerStreetIds = streetIds;
|
||||
},
|
||||
async getWorkerDataCategoryIds() {
|
||||
let res = await this.$request.getWorkerGoodsCategory({
|
||||
workerId: this.curUserInfo.workerId
|
||||
});
|
||||
let firstGoodsCategoryIds = [];
|
||||
let secondGoodsCategoryIds = [];
|
||||
let thirdGoodsCategoryIds = [];
|
||||
for(let i = 0; i < res.data.length; i++) {
|
||||
if (firstGoodsCategoryIds.indexOf(res.data[i].goodsCategoryId) === -1) {
|
||||
firstGoodsCategoryIds.push(res.data[i].goodsCategoryId)
|
||||
}
|
||||
if (secondGoodsCategoryIds.indexOf(res.data[i].goodsCategoryId) === -1) {
|
||||
secondGoodsCategoryIds.push(res.data[i].goodsCategoryId)
|
||||
}
|
||||
if (thirdGoodsCategoryIds.indexOf(res.data[i].goodsCategoryId) === -1) {
|
||||
thirdGoodsCategoryIds.push(res.data[i].goodsCategoryId)
|
||||
}
|
||||
}
|
||||
this.workerFirstCategoryIds = firstGoodsCategoryIds;
|
||||
this.workerSecondCategoryIds = secondGoodsCategoryIds;
|
||||
this.workerThirdCategoryIds = thirdGoodsCategoryIds;
|
||||
},
|
||||
async loadMasterOrderPage(params = {}) {
|
||||
params.pageSize = this.$globalData.initPageSize;
|
||||
params.pageNum = this.pageNum;
|
||||
|
|
@ -330,6 +396,36 @@
|
|||
}
|
||||
})
|
||||
|
||||
// 区域条件
|
||||
params.cityIds = this.workerCityIds;
|
||||
if (this.chosenArea.length === 1) {
|
||||
// 选中了区列表中的全部选项
|
||||
params.cityIds = [this.chosenArea[0].areaId]
|
||||
} else if (this.chosenArea.length === 2) {
|
||||
// 选中了街道列表中的全部选项
|
||||
params.districtIds = [this.chosenArea[1].areaId]
|
||||
} else if (this.chosenArea.length === 3) {
|
||||
// 选中了某个具体的街道
|
||||
params.districtIds = [this.chosenArea[1].areaId];
|
||||
params.streetIds = [this.chosenArea[2].areaId];
|
||||
}
|
||||
|
||||
// 类目条件
|
||||
params.thirdGoodsCategoryIds = this.workerThirdCategoryIds;
|
||||
if (this.chosenCategory.length === 1) {
|
||||
// 选了一级类目
|
||||
params.firstGoodsCategoryIds = [this.chosenCategory[0].goodsCategoryId];
|
||||
} else if (this.chosenCategory.length === 2) {
|
||||
// 选了二级类目
|
||||
params.firstGoodsCategoryIds = [this.chosenCategory[0].goodsCategoryId];
|
||||
params.secondGoodsCategoryIds = [this.chosenCategory[1].goodsCategoryId];
|
||||
} else if (this.chosenArea.length === 3) {
|
||||
// 选了三级类目
|
||||
params.firstGoodsCategoryIds = [this.chosenCategory[0].goodsCategoryId];
|
||||
params.secondGoodsCategoryIds = [this.chosenCategory[1].goodsCategoryId];
|
||||
params.thirdGoodsCategoryIds = [this.chosenCategory[2].goodsCategoryId];
|
||||
}
|
||||
|
||||
this.$refs.loadStatusBar.showLoading();
|
||||
try {
|
||||
let res = await this.$request.qryMasterOrderPage(params);
|
||||
|
|
@ -395,27 +491,59 @@
|
|||
goodsCategoryId: col3Id
|
||||
});
|
||||
thirdTypeList = thirdTypeList.data;
|
||||
|
||||
// 加上“全部”节点
|
||||
subTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
subSubTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
thirdTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
this.categoryList.push(subTypeList);
|
||||
this.categoryList.push(subSubTypeList);
|
||||
this.categoryList.push(thirdTypeList);
|
||||
},
|
||||
async loadRegionList() {
|
||||
let regionList = await this.$request.areaListByStep();
|
||||
let regionList = await this.$request.areaListByStep({
|
||||
areaIds: this.workerCityIds,
|
||||
parentCode: ''
|
||||
});
|
||||
regionList = regionList.data;
|
||||
let subRegionList = [];
|
||||
let subSubRegionList = [];
|
||||
if (regionList && regionList.length > 0) {
|
||||
subRegionList = await this.$request.areaListByStep({
|
||||
parentCode: regionList[0].areaCode
|
||||
parentCode: regionList[0].areaCode,
|
||||
areaIds: this.workerDistrictIds
|
||||
});
|
||||
subRegionList = subRegionList.data;
|
||||
}
|
||||
if (subRegionList && subRegionList.length > 0) {
|
||||
subSubRegionList = await this.$request.areaListByStep({
|
||||
parentCode: subRegionList[0].areaCode
|
||||
parentCode: subRegionList[0].areaCode,
|
||||
areaIds: this.workerStreetIds
|
||||
});
|
||||
subSubRegionList = subSubRegionList.data;
|
||||
}
|
||||
// 加上“全部”节点
|
||||
regionList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
subRegionList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
subSubRegionList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
this.areaList.push(regionList);
|
||||
this.areaList.push(subRegionList);
|
||||
this.areaList.push(subSubRegionList);
|
||||
|
|
@ -437,23 +565,40 @@
|
|||
this.areaMultiIndex = e.detail.value;
|
||||
let chosenArea = [];
|
||||
for (let i = 0; i < this.areaList.length; i++) {
|
||||
if (this.areaMultiIndex[i] === 0) {
|
||||
// 选中了全部节点
|
||||
break;
|
||||
}
|
||||
chosenArea.push(this.areaList[i][this.areaMultiIndex[i]]);
|
||||
}
|
||||
this.chosenArea = chosenArea;
|
||||
this.taskConditions[this.tabCur].value = chosenArea[chosenArea.length - 1].areaId;
|
||||
// this.taskConditions[this.tabCur].value = chosenArea[chosenArea.length - 1].areaId;
|
||||
this.searchTasks();
|
||||
},
|
||||
async regionColChange(e) {
|
||||
let colObj = e.detail;
|
||||
if (colObj.column == 0) {
|
||||
// 通过一级查二级
|
||||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[0][colObj.value].areaCode});
|
||||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[0][colObj.value].areaCode, areaIds: this.workerDistrictIds});
|
||||
subAreaList = subAreaList.data;
|
||||
let subSubAreaList = [];
|
||||
if (subAreaList.length) {
|
||||
subSubAreaList = await this.$request.areaListByStep({parentCode: subAreaList[0].areaCode});
|
||||
subSubAreaList = await this.$request.areaListByStep({parentCode: subAreaList[0].areaCode, areaIds: this.workerStreetIds});
|
||||
subSubAreaList = subSubAreaList.data;
|
||||
}
|
||||
// 加上“全部”节点
|
||||
if (subAreaList.length > 0) {
|
||||
subAreaList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
}
|
||||
if (subSubAreaList.length > 0) {
|
||||
subSubAreaList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
}
|
||||
this.areaList.pop();
|
||||
this.areaList.pop();
|
||||
this.areaList.push(subAreaList);
|
||||
|
|
@ -461,8 +606,15 @@
|
|||
this.areaMultiIndex = [colObj.value, 0, 0];
|
||||
} else if (colObj.column == 1) {
|
||||
// 通过二级查三级
|
||||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[1][colObj.value].areaCode});
|
||||
let subAreaList = await this.$request.areaListByStep({parentCode: this.areaList[1][colObj.value].areaCode, areaIds: this.workerStreetIds});
|
||||
subAreaList = subAreaList.data;
|
||||
// 加上“全部”节点
|
||||
if (subAreaList.length > 0) {
|
||||
subAreaList.unshift({
|
||||
areaName: '全部',
|
||||
areaId: -1
|
||||
});
|
||||
}
|
||||
this.areaList.pop();
|
||||
this.areaList.push(subAreaList);
|
||||
this.areaMultiIndex = [this.areaMultiIndex[0], colObj.value, 0];
|
||||
|
|
@ -472,10 +624,14 @@
|
|||
this.categoryMultiIndex = e.detail.value;
|
||||
let chosenCategory = [];
|
||||
for (let i = 0; i < this.categoryList.length; i++) {
|
||||
if (this.categoryMultiIndex[i] === 0) {
|
||||
// 选中了全部节点
|
||||
break;
|
||||
}
|
||||
chosenCategory.push(this.categoryList[i][this.categoryMultiIndex[i]]);
|
||||
}
|
||||
this.chosenCategory = chosenCategory;
|
||||
this.taskConditions[this.tabCur].value = chosenCategory[chosenCategory.length - 1].goodsCategoryId;
|
||||
// this.taskConditions[this.tabCur].value = chosenCategory[chosenCategory.length - 1].goodsCategoryId;
|
||||
this.searchTasks();
|
||||
},
|
||||
async categoryColChange(e) {
|
||||
|
|
@ -495,6 +651,15 @@
|
|||
});
|
||||
subSubTypeList = subSubTypeList.data;
|
||||
}
|
||||
// 加上“全部”节点
|
||||
subTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
subSubTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
this.categoryList.pop();
|
||||
this.categoryList.pop();
|
||||
this.categoryList.push(subTypeList);
|
||||
|
|
@ -507,6 +672,11 @@
|
|||
goodsCategoryId: this.categoryList[1][colObj.value].goodsCategoryId
|
||||
});
|
||||
subSubTypeList = subSubTypeList.data;
|
||||
// 加上“全部”节点
|
||||
subSubTypeList.unshift({
|
||||
goodsCategoryName: '全部',
|
||||
goodsCategoryId: -1
|
||||
});
|
||||
this.categoryList.pop();
|
||||
this.categoryList.push(subSubTypeList);
|
||||
this.categoryMultiIndex = [this.categoryMultiIndex[0], colObj.value, 0];
|
||||
|
|
@ -522,6 +692,7 @@
|
|||
})
|
||||
},
|
||||
async takeTask(e, task) {
|
||||
this.curTask = task;
|
||||
if (!this.hasNotice) {
|
||||
let checkRes = await this.checkBankAndCertify();
|
||||
this.hasNotice = true;
|
||||
|
|
@ -542,6 +713,24 @@
|
|||
}
|
||||
this.showModal(e, task);
|
||||
},
|
||||
async stillAccept() {
|
||||
// this.showModal({currentTarget:{dataset: {modal : 'showTakeSuccessModal'}}}, this.curTask);
|
||||
// console.log('still order',{
|
||||
// workerId: this.curUserInfo.workerId,
|
||||
// id: this.curTask.orderMasterId,
|
||||
// orderStatus: 1
|
||||
// });
|
||||
// return;
|
||||
// 已认证可直接接单
|
||||
let res = await this.$request.updateOrder({
|
||||
workerId: this.curUserInfo.workerId,
|
||||
id: this.curTask.orderMasterId,
|
||||
orderStatus: 1
|
||||
});
|
||||
if(res.code !== 0) return;
|
||||
this.reloadMasterOrderPage();
|
||||
this.showModal({currentTarget:{dataset: {modal : 'showTakeSuccessModal'}}}, this.curTask);
|
||||
},
|
||||
contactCustomer(e) {
|
||||
// uni.makePhoneCall({
|
||||
// phoneNumber: this.curTask.customerPhone
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@
|
|||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-timefill"></text></text>
|
||||
<text v-if="order.expectTimeEndFront">{{order.expectTimeStartFront + '~' + order.expectTimeEndFront}}</text>
|
||||
<text v-else>{{order.expectTimeStartFront}}</text>
|
||||
<text v-if="order.expectTimeEndFront">期望时间:{{order.expectTimeStartFront + '~' + order.expectTimeEndFront}}</text>
|
||||
<text v-else>期望时间:{{order.expectTimeStartFront}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-phone"></text></text>
|
||||
|
|
|
|||
|
|
@ -96,9 +96,15 @@
|
|||
<view hover-class="none" class="nav-li serv-module" @click="clickServModule(item)"
|
||||
:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
|
||||
v-for="(item,index) in servModules " :key="index">
|
||||
<view :class="index === 0 ? 'text-xxl' : 'text-xl'">{{item.title}}</view>
|
||||
<!-- <view class="nav-name">{{item.name}}</view> -->
|
||||
<text :class="'cuIcon-' + item.cuIcon"></text>
|
||||
<template v-if="item.id !== 4">
|
||||
<view :class="index === 0 ? 'text-xxl' : 'text-xl'">{{item.title}}</view>
|
||||
<!-- <view class="nav-name">{{item.name}}</view> -->
|
||||
<text :class="'cuIcon-' + item.cuIcon"></text>
|
||||
</template>
|
||||
<button data-name="shareBtn" open-type="share" hover-class="none" v-else>
|
||||
<view :class="index === 0 ? 'text-xxl' : 'text-xl'">{{item.title}}</view>
|
||||
<text :class="'cuIcon-' + item.cuIcon"></text>
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -242,7 +248,9 @@
|
|||
let waitServRes = await this.$request.qryDetailOrderPage({
|
||||
orderStatus: 2,
|
||||
expectTimeStart: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00",
|
||||
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59"
|
||||
expectTimeEnd: date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59",
|
||||
orderByColumn: "expectTimeStart",
|
||||
isAsc: "desc"
|
||||
});
|
||||
this.waitServOrderToday = waitServRes.rows;
|
||||
},
|
||||
|
|
@ -264,10 +272,12 @@
|
|||
},
|
||||
async clickServModule(pageObj) {
|
||||
if (pageObj && !pageObj.pageUrl) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '功能开发中'
|
||||
})
|
||||
if(pageObj.id !== 4) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '功能开发中'
|
||||
})
|
||||
}
|
||||
}
|
||||
if (pageObj.checkLogin) {
|
||||
let res = await this.authLogin();
|
||||
|
|
@ -324,6 +334,21 @@
|
|||
line-height: 195rpx;
|
||||
}
|
||||
|
||||
.nav-li button{
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
line-height: inherit;
|
||||
color: inherit;
|
||||
position: static;
|
||||
text-align: left;
|
||||
}
|
||||
.nav-li button::after {
|
||||
border: none;
|
||||
|
||||
}
|
||||
|
||||
.nav-li {
|
||||
padding: 30rpx;
|
||||
border-radius: 12rpx;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,14 @@
|
|||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
|
||||
let curUserInfo = this.$request.getCurUserInfo();
|
||||
if(!curUserInfo) {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.loadData();
|
||||
if (options && options.menuCode) {
|
||||
this.changeCurPageCode(options.menuCode)
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
<view class="bg-white">
|
||||
<view class="margin-top margin-lr-sm">
|
||||
<view class="flex justify-between align-center solid-bottom padding padding-lr-lg text-lg"
|
||||
v-for="(item, index) in menuList" @click="clickMenuItem(item)"
|
||||
v-for="(item, index) in menuList" :key="index" @click="clickMenuItem(item)"
|
||||
v-if="item.show || (item.showByStatus ? curUserInfo.status != -1 : false)">
|
||||
<view class="flex justify-start align-center">
|
||||
<view class="margin-right-sm text-main-color text-xl"><view :class="'cuIcon-' + item.icon"></view></view>
|
||||
|
|
@ -55,6 +55,17 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<confirm-modal ref="focusModal" :showCancel="false" :isAutoClose="false" confirmMsg="已关注" @confirm="checkIfFollow()">
|
||||
<template #contentView>
|
||||
<view style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
|
||||
<text style="font-size: 30rpx;margin-bottom: 30rpx;font-weight: 500;">先关注公众号,绑定订单通知!</text>
|
||||
<image style="width: 400upx;height: 400upx;margin-bottom: 20upx;" :show-menu-by-longpress="true" src="http://gqz.opsoul.com/qrcode_for_gh_e1c9ac86741f_860.jpg" mode="aspectFill"></image>
|
||||
<text style="margin-bottom: 20upx;">操作方式</text>
|
||||
<text>长按二维码,前往公众号点关注</text>
|
||||
</view>
|
||||
</template>
|
||||
</confirm-modal>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -86,8 +97,15 @@
|
|||
icon: 'profile',
|
||||
pageUrl: '/pages/my/master-settled-info',
|
||||
show: true
|
||||
}, {
|
||||
name: '个人信息',
|
||||
},
|
||||
{
|
||||
name: '订单通知绑定',
|
||||
icon: 'roundcheck',
|
||||
show: true,
|
||||
prefixFun: 'showFollowBox'
|
||||
},
|
||||
{
|
||||
name: '商家信息',
|
||||
icon: 'lock',
|
||||
pageUrl: '/pages/my/personal-info',
|
||||
show: true
|
||||
|
|
@ -123,6 +141,7 @@
|
|||
},
|
||||
methods: {
|
||||
async loadData() {
|
||||
await this.$request.refreshCurUserCache();
|
||||
this.curUserInfo = this.$request.getCurUserInfo();
|
||||
let res = await this.$request.getWorkerCertify();
|
||||
this.curCertifyInfo = res.data;
|
||||
|
|
@ -142,6 +161,58 @@
|
|||
uni.navigateTo({
|
||||
url: pageUrl
|
||||
})
|
||||
},
|
||||
async showFollowBox() {
|
||||
const status = await this.checkBeforeFollow()
|
||||
if(!status) {
|
||||
this.$refs.focusModal.showModal();
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '您已绑定消息通知',
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
},
|
||||
async checkBeforeFollow() {
|
||||
const wxLoginRes = await wx.login();
|
||||
console.log(wxLoginRes);
|
||||
const wxAuthRes = await uni.request({
|
||||
url: '/wx/check',
|
||||
header: {
|
||||
code: wxLoginRes.code
|
||||
}
|
||||
})
|
||||
// const wxAuthRes = await uni.request({
|
||||
// url: '/wx/auth',
|
||||
// header: {
|
||||
// code: wxLoginRes.code
|
||||
// }
|
||||
// })
|
||||
return wxAuthRes[1].data.data
|
||||
},
|
||||
async checkIfFollow() {
|
||||
const status = await this.checkBeforeFollow()
|
||||
// const wxLoginRes = await wx.login();
|
||||
// const wxAuthRes = await uni.request({
|
||||
// url: '/wx/check',
|
||||
// header: {
|
||||
// code: wxLoginRes.code
|
||||
// }
|
||||
// })
|
||||
if(!status) {
|
||||
uni.showToast({
|
||||
title: '请完成公众号关注',
|
||||
icon: 'none'
|
||||
})
|
||||
return;
|
||||
} else {
|
||||
// uni.showToast({
|
||||
// title: '感谢您的关注!',
|
||||
// icon: 'success'
|
||||
// })
|
||||
this.$refs.focusModal.hideModal();
|
||||
return;
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,12 +83,23 @@
|
|||
<!-- 加入师傅团队提示 -->
|
||||
<!-- <invite-master ref="inviteMasterModal" :inviteMasterObj="inviter" @confirm="inviteMaster"></invite-master> -->
|
||||
<confirm-modal ref="inviteMasterModal" :content="'是否确认加入' + inviter.name + '的团队?'" @confirm="inviteMaster(inviter)"></confirm-modal>
|
||||
|
||||
<confirm-modal ref="focusModal" cancelMsg="返回" :isAutoClose="false" confirmMsg="已关注,继续注册" @cancel="cancelFollow" @confirm="checkIfFollow()">
|
||||
<template #contentView>
|
||||
<view style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
|
||||
<text style="font-size: 30rpx;margin-bottom: 30rpx;font-weight: 500;">先关注公众号,绑定订单通知!</text>
|
||||
<image style="width: 400upx;height: 400upx;margin-bottom: 20upx;" :show-menu-by-longpress="true" src="http://gqz.opsoul.com/qrcode_for_gh_e1c9ac86741f_860.jpg" mode="aspectFill"></image>
|
||||
<text style="margin-bottom: 20upx;">操作方式</text>
|
||||
<text>长按二维码,前往公众号点关注</text>
|
||||
</view>
|
||||
</template>
|
||||
</confirm-modal>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import inviteMaster from '../area-proxy/modal/invite-master.vue'
|
||||
|
||||
// 18929577155 qq880920
|
||||
export default {
|
||||
components: {
|
||||
// inviteMaster
|
||||
|
|
@ -117,11 +128,16 @@
|
|||
changeAgreeContract() {
|
||||
this.agreeContract = !this.agreeContract;
|
||||
},
|
||||
changeOperType() {
|
||||
async changeOperType() {
|
||||
this.reset();
|
||||
this.operType = this.operType === 0 ? 1 : 0;
|
||||
if (this.operType === 1) {
|
||||
this.authLogin();
|
||||
const status = await this.checkBeforeFollow()
|
||||
if(!status) {
|
||||
this.$refs.focusModal.showModal();
|
||||
} else {
|
||||
this.authLogin();
|
||||
}
|
||||
}
|
||||
},
|
||||
reset() {
|
||||
|
|
@ -310,6 +326,41 @@
|
|||
icon: 'error'
|
||||
})
|
||||
}
|
||||
},
|
||||
cancelFollow() {
|
||||
this.reset();
|
||||
this.operType = 0;
|
||||
this.$refs.focusModal.isShow = false;
|
||||
},
|
||||
|
||||
async checkBeforeFollow() {
|
||||
const wxLoginRes = await wx.login();
|
||||
const wxAuthRes = await uni.request({
|
||||
url: '/wx/check',
|
||||
header: {
|
||||
code: wxLoginRes.code
|
||||
}
|
||||
})
|
||||
return wxAuthRes[1].data.data
|
||||
},
|
||||
async checkIfFollow() {
|
||||
const res = await this.checkBeforeFollow()
|
||||
// const wxLoginRes = await wx.login();
|
||||
// const wxAuthRes = await uni.request({
|
||||
// url: '/wx/check',
|
||||
// header: {
|
||||
// code: wxLoginRes.code
|
||||
// }
|
||||
// })
|
||||
if(!res) {
|
||||
uni.showToast({
|
||||
title: '请先关注公众号',
|
||||
icon: 'error'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$refs.focusModal.isShow = false;
|
||||
this.authLogin();
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
@ -369,5 +420,6 @@
|
|||
position: relative;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
flex-basis: 140rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -119,15 +119,19 @@
|
|||
placeholder="请输入公司执照号码"></input>
|
||||
</view>
|
||||
<view class="cu-form-group">
|
||||
<view class="title">公司地址</view>
|
||||
<view class="flex-column-between flex-view">
|
||||
<view class="title">公司区域</view>
|
||||
<view class="flex-column-between">
|
||||
<picker :mode="'multiSelector'" @change="regionChange" @columnchange="regionColChange"
|
||||
:value="multiIndex" :range-key="'areaName'" :range="areaList">
|
||||
<view class="picker">
|
||||
{{realNameInfo.companyArea && realNameInfo.companyArea.length ? realNameInfo.companyArea[0].areaName + '-' + realNameInfo.companyArea[1].areaName + '-' + realNameInfo.companyArea[2].areaName : '请选择'}}
|
||||
</view>
|
||||
</picker>
|
||||
<!-- <view><input name="companyAddress" v-model="realNameInfo.companyAddress" placeholder="请输入营业执照地址/经营地址/服务网点"></input></view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="cu-form-group">
|
||||
<view class="title">公司地址</view>
|
||||
<view class="flex-column-between flex-view">
|
||||
<textarea name="companyAddress" class="solid padding-sm" maxlength="-1"
|
||||
v-model="realNameInfo.companyAddress" placeholder="请输入营业执照地址/经营地址/服务网点" />
|
||||
</view>
|
||||
|
|
@ -392,6 +396,7 @@
|
|||
data() {
|
||||
return {
|
||||
curUserInfo: null,
|
||||
hasJoinedTeam: false,
|
||||
curCertifyInfo: null,
|
||||
servSpecialSkills: null,
|
||||
curStep: 0,
|
||||
|
|
@ -437,6 +442,7 @@
|
|||
methods: {
|
||||
async loadData() {
|
||||
this.curUserInfo = this.$request.getCurUserInfo();
|
||||
this.checkedHasJoinedTeam();
|
||||
let res = await this.$request.getWorkerCertify();
|
||||
this.curCertifyInfo = res.data;
|
||||
if (this.curCertifyInfo && this.curCertifyInfo.workerCertificationId) {
|
||||
|
|
@ -455,6 +461,13 @@
|
|||
this.loadSpecialSkillType();
|
||||
}
|
||||
},
|
||||
async checkedHasJoinedTeam() {
|
||||
let params = {
|
||||
hasRegistered: true
|
||||
}
|
||||
let res = await this.$request.getTeamPage(params);
|
||||
this.hasJoinedTeam = res.rows.length > 0 ? true : false;
|
||||
},
|
||||
async showForm() {
|
||||
this.loadAreaList();
|
||||
this.loadSpecialSkillType();
|
||||
|
|
@ -696,14 +709,15 @@
|
|||
this.specialSkill[index].insurEndDate = e[1];
|
||||
},
|
||||
async chooseImage(e, imgList, count) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: count && count > 0 ? count : 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
// 上传图片
|
||||
res.tempFilePaths.forEach((tmpPath) => {
|
||||
this.$request.uploadFile(tmpPath).then((url) => {
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
|
||||
// 存入缓存
|
||||
imgList.push(url);
|
||||
});
|
||||
|
|
@ -734,6 +748,23 @@
|
|||
validData() {
|
||||
let teamParams = this.realNameInfo;
|
||||
let errMsg = null;
|
||||
if (!this.hasJoinedTeam) {
|
||||
if (!teamParams.licenseImgList || !teamParams.licenseImgList.length) {
|
||||
errMsg = "请上传公司营业执照";
|
||||
} else if (!teamParams.companyName) {
|
||||
errMsg = "请填写公司名称";
|
||||
} else if (!teamParams.businessLicenseNum) {
|
||||
errMsg = "请填写公司营业执照号码";
|
||||
} else if (!teamParams.companyArea || !teamParams.companyArea.length) {
|
||||
errMsg = "请选择公司地址所在省市区";
|
||||
} else if (!teamParams.companyAddress) {
|
||||
errMsg = "请输入营业执照地址/经营地址/服务网点";
|
||||
} else if (!teamParams.legalPersionName) {
|
||||
errMsg = "请填写法人姓名";
|
||||
} else if (!teamParams.legalPersionPhoneNum) {
|
||||
errMsg = "请填写法人联系电话";
|
||||
}
|
||||
}
|
||||
if (teamParams.companySize == null || teamParams.companySize == undefined) {
|
||||
errMsg = "请选择经营主体规模";
|
||||
} else if (!teamParams.brandName) {
|
||||
|
|
@ -746,20 +777,6 @@
|
|||
errMsg = "请填写名字"
|
||||
} else if (!teamParams.idCardNum) {
|
||||
errMsg = "请填写身份证号";
|
||||
} else if (!teamParams.licenseImgList || !teamParams.licenseImgList.length) {
|
||||
errMsg = "请上传公司营业执照";
|
||||
} else if (!teamParams.companyName) {
|
||||
errMsg = "请填写公司名称";
|
||||
} else if (!teamParams.businessLicenseNum) {
|
||||
errMsg = "请填写公司营业执照号码";
|
||||
} else if (!teamParams.companyArea || !teamParams.companyArea.length) {
|
||||
errMsg = "请选择公司地址所在省市区";
|
||||
} else if (!teamParams.companyAddress) {
|
||||
errMsg = "请输入营业执照地址/经营地址/服务网点";
|
||||
} else if (!teamParams.legalPersionName) {
|
||||
errMsg = "请填写法人姓名";
|
||||
} else if (!teamParams.legalPersionPhoneNum) {
|
||||
errMsg = "请填写法人联系电话";
|
||||
}
|
||||
if (errMsg) {
|
||||
uni.showToast({
|
||||
|
|
@ -873,7 +890,7 @@
|
|||
position: relative;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
flex-basis: 40%;
|
||||
flex-basis: 55%;
|
||||
}
|
||||
|
||||
.form-opt {
|
||||
|
|
|
|||
|
|
@ -531,14 +531,15 @@
|
|||
this.specialSkill[index].insurEndDate = e[1];
|
||||
},
|
||||
async chooseImage(e, imgList) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
// 上传图片
|
||||
res.tempFilePaths.forEach((tmpPath) => {
|
||||
this.$request.uploadFile(tmpPath).then((url) => {
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
|
||||
// 存入缓存
|
||||
imgList.push(url);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<uni-collapse ref="collapse">
|
||||
<uni-collapse-item ref="collapseItem" :showArrow="false" v-for="(billItem, index) in bill" :open="openStatusArr[index] === '0' ? true : false" >
|
||||
<uni-collapse-item ref="collapseItem" :showArrow="false" v-for="(billItem, index) in bill" :key="index" :open="openStatusArr[index] === '0' ? true : false" >
|
||||
<template v-slot:title>
|
||||
<view class="padding bg-white" :data-index="index" @click="showStatement">
|
||||
<view class="margin-bottom-xs">{{billItem.createTime}}</view>
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
</template>
|
||||
<view class="content">
|
||||
<view v-for="(item, index1) in billItem.statement"
|
||||
:key="index1"
|
||||
class="bg-white padding flex justify-between align-center solid-bottom" @click="showDetail(bill[index].statement[index1])">
|
||||
<view>
|
||||
<view class="flex">
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
<view v-if="formData.specsList && formData.specsList.length > 0">
|
||||
<checkbox-group class="padding-lr bg-white" @change="checkSpecs"
|
||||
:class="isShowAllSpecs ? '' : 'certern-height'">
|
||||
<view v-for="(item, index) in formData.specsList" class="padding-tb-sm">
|
||||
<view v-for="(item, index) in formData.specsList" :key="index" class="padding-tb-sm">
|
||||
<view class="flex">
|
||||
<view class="flex-sub">
|
||||
<checkbox style="transform:scale(1)" class="margin-right-xs"
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
</view>
|
||||
<view class="padding-lr bg-white">
|
||||
<checkbox-group @change="checkDistirct" class="grid col-3">
|
||||
<view v-for="(item, index) in formData.districtList" class="margin-tb-xs">
|
||||
<view v-for="(item, index) in formData.districtList" :key="index" class="margin-tb-xs">
|
||||
<checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="index"
|
||||
:checked="item.checked"></checkbox>
|
||||
<text>{{item.areaName}}</text>
|
||||
|
|
@ -165,7 +165,7 @@
|
|||
v-model="formData.areaDesc" maxlength="-1" placeholder="如:XX区XX街道未覆盖或XX区仅服务XX街道"></textarea>
|
||||
</view>
|
||||
<!-- 多城市 -->
|
||||
<view v-for="(item,index) in servArea" class="bg-white">
|
||||
<view v-for="(item,index) in servArea" :key="index" class="bg-white">
|
||||
<view class="solid-top">
|
||||
<view @click="delServArea(index)">
|
||||
<button class="cu-btn bg-red light">
|
||||
|
|
@ -177,19 +177,19 @@
|
|||
<view class="title">上架区域<text class="text-red">*</text></view>
|
||||
<picker :mode="'multiSelector'" @change="multiRegionChange($event, index)"
|
||||
@columnchange="multiRegionColChange($event, index)"
|
||||
:value="servArea[index].regionMultiIndex" :range-key="'areaName'"
|
||||
:range="servArea[index].regionList">
|
||||
<input disabled class="line-input radius-input" v-if="servArea[index].region"
|
||||
:value="servArea[index].region && servArea[index].region.length ? servArea[index].region[0].areaName + '-' + servArea[index].region[1].areaName : ''"
|
||||
:value="item.regionMultiIndex" :range-key="'areaName'"
|
||||
:range="item.regionList">
|
||||
<input disabled class="line-input radius-input" v-if="item.region"
|
||||
:value="item.region && item.region.length ? item.region[0].areaName + '-' + item.region[1].areaName : ''"
|
||||
placeholder="请选择区域"></input>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="padding-lr bg-white">
|
||||
<checkbox-group @change="multiAreaCheckDistirct($event, index)" class="grid col-3">
|
||||
<view v-for="(item, index1) in servArea[index].districtList" class="margin-tb-xs">
|
||||
<checkbox-group @change="multiAreaCheckDistirct($event, index)" class="grid col-3">
|
||||
<view v-for="(item1, index1) in item.districtList" :key="item1.id" class="margin-tb-xs">
|
||||
<checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="index1"
|
||||
:checked="item.checked"></checkbox>
|
||||
<text>{{item.areaName}}</text>
|
||||
:checked="item1.checked"></checkbox>
|
||||
<text>{{item1.areaName}}</text>
|
||||
</view>
|
||||
</checkbox-group>
|
||||
</view>
|
||||
|
|
@ -744,13 +744,14 @@
|
|||
chooseImgList(e, imgListField, cropWidth, cropHeight) {
|
||||
this.cropWidth = cropWidth && cropWidth > 0 ? cropWidth : this.sysInfo.windowWidth * 2;
|
||||
this.cropHeight = cropHeight && cropHeight > 0 ? cropHeight : this.sysInfo.windowWidth * 2 * 1.15;
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
res.tempFilePaths.forEach((tmpUrl, index) => {
|
||||
this.url2Crop = tmpUrl;
|
||||
res.tempFiles.forEach((fileObj, index) => {
|
||||
this.url2Crop = fileObj.tempFilePath;
|
||||
this.curImgListField = imgListField;
|
||||
});
|
||||
}
|
||||
|
|
@ -773,8 +774,9 @@
|
|||
this.url2Crop = "";
|
||||
},
|
||||
chooseImgNoCrop(e, imgListField) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 9, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
|
|
@ -782,10 +784,10 @@
|
|||
title: '上传中',
|
||||
mask: true
|
||||
});
|
||||
res.tempFilePaths.forEach((tmpUrl, index) => {
|
||||
this.$request.uploadFile(tmpUrl).then((url) => {
|
||||
res.tempFiles.forEach((fileObj, index) => {
|
||||
this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
|
||||
this.formData[imgListField].push(url);
|
||||
if (index === res.tempFilePaths.length - 1) {
|
||||
if (index === res.tempFiles.length - 1) {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,13 +3,18 @@
|
|||
<!-- 顶部操作条 -->
|
||||
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
|
||||
<block slot="backText">返回</block>
|
||||
<block slot="content">个人信息</block>
|
||||
<block slot="content">商家信息</block>
|
||||
</cu-custom>
|
||||
<form @submit="submit">
|
||||
<view class="text-center padding-tb-lg">
|
||||
<button class="cu-avatar round"
|
||||
:style="'width: 120rpx; height: 120rpx; background-image:url(' + curUserInfo.workerLogoUrl + ');'"
|
||||
open-type="chooseAvatar" @chooseavatar="onChooseAvatar"></button>
|
||||
</view>
|
||||
<view class="margin-top-sm bg-white">
|
||||
<view class="cu-form-group">
|
||||
<view class="title">用户昵称</view>
|
||||
<input name="name" :value="curUserInfo.name"></input>
|
||||
<view class="title">商家昵称</view>
|
||||
<input name="name" v-model="curUserInfo.name"></input>
|
||||
</view>
|
||||
<view class="cu-form-group">
|
||||
<view class="title">公司名称</view>
|
||||
|
|
@ -31,9 +36,9 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 底部操作栏 -->
|
||||
<!-- <view class="cu-bar tabbar border shop fixed-bottom-bar">
|
||||
<view class="cu-bar tabbar border shop fixed-bottom-bar">
|
||||
<button class="cu-btn bg-main-color long-btn margin-lr-sm shadow-blur" form-type="submit">保存</button>
|
||||
</view> -->
|
||||
</view>
|
||||
</form>
|
||||
</view>
|
||||
</template>
|
||||
|
|
@ -42,13 +47,19 @@
|
|||
export default {
|
||||
data() {
|
||||
return {
|
||||
curUserInfo: {}
|
||||
curUserInfo: {},
|
||||
avatarUrl: '',
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.loadData();
|
||||
},
|
||||
methods: {
|
||||
onChooseAvatar(e) {
|
||||
this.$request.uploadFile(e.detail.avatarUrl).then((url) => {
|
||||
this.curUserInfo.workerLogoUrl = url;
|
||||
});
|
||||
},
|
||||
async loadData() {
|
||||
this.curUserInfo = await this.$request.getCurUserNoCache();
|
||||
},
|
||||
|
|
@ -56,6 +67,25 @@
|
|||
uni.navigateTo({
|
||||
url: '/pages/my/account-security'
|
||||
})
|
||||
},
|
||||
async submit() {
|
||||
let res = await this.$request.updateWorker({
|
||||
workerId: this.curUserInfo.workerId,
|
||||
name: this.curUserInfo.name,
|
||||
workerLogoUrl: this.curUserInfo.workerLogoUrl
|
||||
})
|
||||
if (res && res.code === 0) {
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: '更新成功'
|
||||
})
|
||||
let timeout = setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/index?menuCode=myPage'
|
||||
})
|
||||
clearTimeout(timeout);
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,15 +108,20 @@
|
|||
})
|
||||
},
|
||||
chooseImage(e) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 9, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
let tempFilePaths = [];
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
tempFilePaths.push(fileObj.tempFilePath)
|
||||
})
|
||||
if (this.imgList.length != 0) {
|
||||
this.imgList = this.imgList.concat(res.tempFilePaths)
|
||||
this.imgList = this.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.imgList = res.tempFilePaths
|
||||
this.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -99,15 +99,20 @@
|
|||
},
|
||||
methods: {
|
||||
chooseImgList(e) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 9, //默认9
|
||||
mediaType: ['image'],
|
||||
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(res.tempFilePaths)
|
||||
this.formData.imgList = this.formData.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.formData.imgList = res.tempFilePaths
|
||||
this.formData.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -193,7 +193,8 @@
|
|||
workerId: member.workerId,
|
||||
totalPay: this.dispatchTotalPrice,
|
||||
orderMasterId: this.curOrder.orderMasterId,
|
||||
isAll: isAll
|
||||
isAll: isAll,
|
||||
workerName: member.workerName || member.name
|
||||
}
|
||||
this.$emit('assignWork', params);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<view class="margin-top-sm bg-white padding">
|
||||
<!-- 服务指标 -->
|
||||
<checkbox-group class="block" @change="changeServIndexChecked">
|
||||
<view style="min-width: 50%;" class="flex justify-start align-center margin-top-sm float-left" v-for="(item, index) in servIndex">
|
||||
<view style="min-width: 50%;" class="flex justify-start align-center margin-top-sm float-left" v-for="(item, index) in servIndex" :key="index">
|
||||
<checkbox style="transform:scale(1)" class="main-color margin-right-xs" :value="item.code">
|
||||
</checkbox>
|
||||
<text class="text-sm">{{item.desc}}</text>
|
||||
|
|
@ -96,8 +96,9 @@
|
|||
this.order = orderInfo;
|
||||
},
|
||||
chooseImgList(e, imgList) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 12 - imgList.length, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
|
|
@ -105,10 +106,10 @@
|
|||
title: '上传中',
|
||||
mask: true
|
||||
});
|
||||
res.tempFilePaths.forEach((tmpUrl, index) => {
|
||||
this.$request.uploadFile(tmpUrl).then((url) => {
|
||||
res.tempFiles.forEach((fileObj, index) => {
|
||||
this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
|
||||
imgList.push(url);
|
||||
if (index === res.tempFilePaths.length - 1) {
|
||||
if (index === res.tempFiles.length - 1) {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
|
|
@ -151,6 +152,11 @@
|
|||
}
|
||||
return true;
|
||||
},
|
||||
// 添加操作节点
|
||||
async addOrderOperate(params = {}) {
|
||||
let res = await this.$request.addOrderOperate(params);
|
||||
return res;
|
||||
},
|
||||
async finishOrder() {
|
||||
if (!this.validData()) {
|
||||
return;
|
||||
|
|
@ -168,10 +174,13 @@
|
|||
title: '提交成功',
|
||||
duration: 1500
|
||||
})
|
||||
this.addOrderOperate({
|
||||
orderId: this.order.orderDetailId,
|
||||
orderType: '02',
|
||||
content: '师傅完工'
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/order-manage/order-manage?tabCur=3'
|
||||
})
|
||||
uni.navigateBack()
|
||||
}, 1500);
|
||||
} else if (res && res.msg) {
|
||||
uni.showToast({
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'acceptOrderNotice',
|
||||
emits: ['confirmFeedback'],
|
||||
emits: ['confirmFeedback', 'close'],
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
|
@ -39,8 +39,8 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
hideModal(e) {
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
hideModal() {
|
||||
this.$emit('close');
|
||||
},
|
||||
contactCustomer(e) {
|
||||
this.hideModal(e);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
methods: {
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
resetData() {
|
||||
// this.data = null;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,296 @@
|
|||
<template>
|
||||
<view class="cu-modal" :class="show?'show':''">
|
||||
<view class="cu-dialog">
|
||||
<view class="cu-bar bg-white justify-end solid-bottom">
|
||||
<view class="content">申请订单加价/预付款</view>
|
||||
<view class="action" data-modal="applyExtraChargeModal" @click="hideModal">
|
||||
<text class="cuIcon-close text-red"></text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white padding text-left">
|
||||
<view class="text-lg padding-top flex justify-start align-center">
|
||||
<text class="title-input">加价金额:</text>
|
||||
<input type="digit" class="radius-input inline-input" placeholder="请输入金额(订单完成或取消后原路退回此款)" v-model="moneyAmount"></input>
|
||||
</view>
|
||||
<view class="text-lg padding-top flex justify-start align-center">
|
||||
<text class="title-input">加价原因:</text>
|
||||
<picker style="width: 75%;" @change="bindPickerChange" :value="chooseIndex" :range="array">
|
||||
<view class="radius-input inline-input custom-input">{{array[chooseIndex]}}</view>
|
||||
</picker>
|
||||
</view>
|
||||
<view class="text-lg padding-top flex justify-start align-center">
|
||||
<text class="title-input">{{chooseIndex < 6 ? '配件费' : '施工费'}}:</text>
|
||||
<input type="digit" class="radius-input inline-input" placeholder="请输入该费用实际金额" v-model="extraAmount"></input>
|
||||
</view>
|
||||
<view>
|
||||
<view class="padding-tb-sm">凭证上传</view>
|
||||
<view class="grid col-3 grid-square">
|
||||
<view class="bg-img" v-for="(item,index) in imgList" :key="index"
|
||||
@tap="viewImage($event, imgList)" :data-url="item">
|
||||
<image :src="item" mode="aspectFill"></image>
|
||||
<view class="cu-tag bg-red" @tap.stop="delImg($event, imgList)" :data-index="index">
|
||||
<text class='cuIcon-close'></text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="solids" @tap="chooseImage" v-if="imgList.length < 1">
|
||||
<text class='cuIcon-cameraadd'></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view class="padding-tb-sm">申请原因</view>
|
||||
<view class="solid">
|
||||
<textarea style="width: 100%; height: 200rpx;" fixed="true" class="radius text-left padding-sm"
|
||||
v-model="remark" maxlength="-1"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="applyChargeModal"
|
||||
@click="hideModal">取消</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left" data-modal="applyChargeModal"
|
||||
@click="submit">确认</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'applyCharge',
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
array: ['加单加价','加急费','拆机/拆换费','搬运费','清理费','远程费','施工费','垫付金','奖励金','质保金','客户押金','工具押金','物品押金'],
|
||||
chooseIndex: 0,
|
||||
imgList: [],
|
||||
moneyAmount: '',
|
||||
reason: '1',
|
||||
extraAmount: '',
|
||||
remark: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
bindPickerChange(e) {
|
||||
this.chooseIndex = parseInt(e.detail.value)
|
||||
},
|
||||
hideModal(e) {
|
||||
this.$emit('close', e);
|
||||
},
|
||||
chooseImage(e) {
|
||||
uni.chooseMedia({
|
||||
count: 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
let tempFilePaths = [];
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
tempFilePaths.push(fileObj.tempFilePath)
|
||||
})
|
||||
if (this.imgList.length != 0) {
|
||||
this.imgList = this.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
viewImage(e, imgList) {
|
||||
uni.previewImage({
|
||||
urls: imgList,
|
||||
current: e.currentTarget.dataset.url
|
||||
});
|
||||
},
|
||||
delImg(e, imgList) {
|
||||
uni.showModal({
|
||||
title: '',
|
||||
content: '确定要删除这张图片吗?',
|
||||
cancelText: '取消',
|
||||
confirmText: '确定',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
imgList.splice(e.currentTarget.dataset.index, 1)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
async resetPriceChangedInfo() {
|
||||
let res = await this.$request.getChangeOrderPrice(this.data);
|
||||
if (res && res.code === 0) {
|
||||
return res.data
|
||||
}
|
||||
},
|
||||
resetData() {
|
||||
this.chooseIndex = 0
|
||||
this.imgList = []
|
||||
this.moneyAmount = ''
|
||||
this.extraAmount = ''
|
||||
this.remark = ''
|
||||
},
|
||||
async submit(e) {
|
||||
if (!this.moneyAmount) {
|
||||
uni.showToast({
|
||||
title: '请输入本次加价总金额',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!this.extraAmount) {
|
||||
uni.showToast({
|
||||
title: '请输入该费用实际金额',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if(this.chooseIndex === 6 && this.imgList.length === 0) {
|
||||
uni.showToast({
|
||||
title: '请上传凭证,至少一张',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
const num_moneyAmount = parseInt(this.moneyAmount)
|
||||
const num_extraAmount = parseInt(this.extraAmount)
|
||||
if(num_extraAmount > num_moneyAmount) {
|
||||
uni.showToast({
|
||||
title: '费用实际金额不能大于本次加价总金额',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if(this.chooseIndex < 6 && num_moneyAmount == num_extraAmount) {
|
||||
// 直接修改配件费
|
||||
console.log('调用详情接口',{
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
attachMoney: this.moneyAmount,
|
||||
type: '01'
|
||||
});
|
||||
// 调用后端接口,添加附加费
|
||||
let res = await this.$request.addOrderAttach({
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
attachMoney: this.moneyAmount,
|
||||
type: '01'
|
||||
});
|
||||
if (res.code === 0) {
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'success'
|
||||
});
|
||||
this.hideModal(e);
|
||||
this.resetData()
|
||||
}
|
||||
} else if(this.chooseIndex >= 6 && num_moneyAmount == num_extraAmount) {
|
||||
// 直接修改施工费
|
||||
const res = await this.resetPriceChangedInfo()
|
||||
if (res && res.type != 1) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '你有加价未付款,请客户支付后再加或在原加价上增加金额!',
|
||||
duration: 3500
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('调用列表接口',{
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
changeMoney: num_moneyAmount,
|
||||
type: 1,
|
||||
remark: this.remark
|
||||
});
|
||||
let res1 = await this.$request.changeOrderPrice({
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
changeMoney: newPrice,
|
||||
type: this.payAction,
|
||||
remark: this.remark
|
||||
});
|
||||
if (res1 && res1.code === 0) {
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: '操作成功'
|
||||
})
|
||||
this.hideModal(e);
|
||||
this.resetData()
|
||||
}
|
||||
} else if(num_moneyAmount > num_extraAmount) {
|
||||
const res = await this.resetPriceChangedInfo()
|
||||
if (res && res.type != 1) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '你有加价未付款,请客户支付后再加或在原加价上增加金额!',
|
||||
duration: 3500
|
||||
})
|
||||
return;
|
||||
}
|
||||
let type1_price, type2_price;
|
||||
if(this.chooseIndex < 6) {
|
||||
type1_price = num_extraAmount
|
||||
type2_price = num_moneyAmount - num_extraAmount
|
||||
} else {
|
||||
type2_price = num_extraAmount
|
||||
type1_price = num_moneyAmount - num_extraAmount
|
||||
}
|
||||
console.log('调用详情接口',{
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
attachMoney: type1_price,
|
||||
type: '01'
|
||||
});
|
||||
let res1 = await this.$request.addOrderAttach({
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
attachMoney: type1_price,
|
||||
type: '01'
|
||||
});
|
||||
if (res1.code != 0) return
|
||||
console.log('调用列表接口',{
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
changeMoney: type2_price,
|
||||
type: 1,
|
||||
remark: this.remark
|
||||
});
|
||||
let res2 = await this.$request.changeOrderPrice({
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
changeMoney: type2_price,
|
||||
type: this.payAction,
|
||||
remark: this.remark
|
||||
});
|
||||
if (res2.code != 0) return
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: '操作成功'
|
||||
})
|
||||
this.hideModal(e);
|
||||
this.resetData()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.grid.col-3.grid-square>view {
|
||||
padding-bottom: calc((100% - 40rpx)/3);
|
||||
height: 0;
|
||||
width: calc((100% - 40rpx)/3);
|
||||
}
|
||||
|
||||
.inline-input {
|
||||
flex-basis: 70%;
|
||||
}
|
||||
.title-input {
|
||||
display: inline-block;
|
||||
width: 165rpx;
|
||||
}
|
||||
.custom-input {
|
||||
height: 1.4rem;
|
||||
min-height: 1.4rem;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
<template>
|
||||
<view class="cu-modal" :class="show?'show':''">
|
||||
<view class="cu-dialog">
|
||||
<view class="cu-bar bg-white justify-end solid-bottom">
|
||||
<view class="content">附加费用申请</view>
|
||||
<view class="action" data-modal="applyExtraChargeModal" @click="hideModal">
|
||||
<text class="cuIcon-close text-red"></text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white padding text-left">
|
||||
<view class="text-lg padding-top flex justify-start align-center">
|
||||
<text>金额:</text>
|
||||
<input type="digit" class="radius-input inline-input" v-model="moneyAmount"></input>
|
||||
</view>
|
||||
<view class="text-lg padding-top flex justify-start align-center">
|
||||
<text>原因:</text>
|
||||
<input type="text" class="radius-input inline-input" v-model="reason" disabled value="配件费"></input>
|
||||
</view>
|
||||
<view>
|
||||
<view class="padding-tb-sm">上传图片</view>
|
||||
<view class="grid col-3 grid-square">
|
||||
<view class="bg-img" v-for="(item,index) in imgList" :key="index"
|
||||
@tap="viewImage($event, imgList)" :data-url="item">
|
||||
<image :src="item" mode="aspectFill"></image>
|
||||
<view class="cu-tag bg-red" @tap.stop="delImg($event, imgList)" :data-index="index">
|
||||
<text class='cuIcon-close'></text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="solids" @tap="chooseImage" v-if="imgList.length < 1">
|
||||
<text class='cuIcon-cameraadd'></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view class="padding-tb-sm">申请原因</view>
|
||||
<view class="solid">
|
||||
<textarea style="width: 100%; height: 200rpx;" fixed="true" class="radius text-left padding-sm"
|
||||
v-model="remark" maxlength="-1"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="applyExtraChargeModal"
|
||||
@click="hideModal">取消</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left" data-modal="applyExtraChargeModal"
|
||||
@click="submit">确认</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'applyExtraCharge',
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
imgList: [],
|
||||
moneyAmount: '',
|
||||
reason: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hideModal(e) {
|
||||
this.$emit('close', e);
|
||||
},
|
||||
chooseImage(e) {
|
||||
uni.chooseMedia({
|
||||
count: 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
let tempFilePaths = [];
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
tempFilePaths.push(fileObj.tempFilePath)
|
||||
})
|
||||
if (this.imgList.length != 0) {
|
||||
this.imgList = this.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
viewImage(e, imgList) {
|
||||
uni.previewImage({
|
||||
urls: imgList,
|
||||
current: e.currentTarget.dataset.url
|
||||
});
|
||||
},
|
||||
delImg(e, imgList) {
|
||||
uni.showModal({
|
||||
title: '',
|
||||
content: '确定要删除这张图片吗?',
|
||||
cancelText: '取消',
|
||||
confirmText: '确定',
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
imgList.splice(e.currentTarget.dataset.index, 1)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
async submit(e) {
|
||||
if (!this.moneyAmount) {
|
||||
uni.showToast({
|
||||
title: '请输入金额',
|
||||
icon: 'none'
|
||||
});
|
||||
return;
|
||||
}
|
||||
// 调用后端接口,添加附加费
|
||||
let res = await this.$request.addOrderAttach({
|
||||
orderDetailId: this.data.orderDetailId,
|
||||
attachMoney: this.moneyAmount,
|
||||
type: '01'
|
||||
});
|
||||
if (res.code === 0) {
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'success'
|
||||
});
|
||||
this.hideModal(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.grid.col-3.grid-square>view {
|
||||
padding-bottom: calc((100% - 40rpx)/3);
|
||||
height: 0;
|
||||
width: calc((100% - 40rpx)/3);
|
||||
}
|
||||
|
||||
.inline-input {
|
||||
flex-basis: 75%;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'edit-time-arrange',
|
||||
emits: ['showArrangeFailTime', 'editServTime'],
|
||||
emits: ['showArrangeFailTime', 'editServTime', 'close'],
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
},
|
||||
curDate: {
|
||||
type: String,
|
||||
|
|
@ -161,7 +161,7 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
cannotArrangeTime(e) {
|
||||
this.resetData();
|
||||
|
|
|
|||
|
|
@ -23,8 +23,9 @@
|
|||
<text>加单总额:</text>
|
||||
<input class="radius-input inline-input" type="digit" v-model="newPriceForA1"></input>
|
||||
<text class="margin-left-xs">元</text>
|
||||
<view class="cu-btn line-main-color sm margin-left" v-if="priceObj && priceObj.type == 1"
|
||||
@click="changeOrderPrice(newPriceForA1)">修改报价</view>
|
||||
<view class="cu-btn line-main-color sm margin-left"
|
||||
v-if="priceObj && priceObj.type == 1" @click="changeOrderPrice(newPriceForA1)">修改报价
|
||||
</view>
|
||||
<view class="cu-btn line-main-color sm margin-left" v-else
|
||||
@click="changeOrderPrice(newPriceForA1)">确认报价</view>
|
||||
</view>
|
||||
|
|
@ -38,8 +39,9 @@
|
|||
<text>报价总额:</text>
|
||||
<input class="radius-input inline-input" type="digit" v-model="newPriceForA2"></input>
|
||||
<text class="margin-left-xs">元</text>
|
||||
<view class="cu-btn line-main-color sm margin-left" v-if="priceObj && priceObj.type == 2"
|
||||
@click="changeOrderPrice(newPriceForA2)">修改报价</view>
|
||||
<view class="cu-btn line-main-color sm margin-left"
|
||||
v-if="priceObj && priceObj.type == 2" @click="changeOrderPrice(newPriceForA2)">修改报价
|
||||
</view>
|
||||
<view class="cu-btn line-main-color sm margin-left" v-else
|
||||
@click="changeOrderPrice(newPriceForA2)">确认报价</view>
|
||||
</view>
|
||||
|
|
@ -51,15 +53,28 @@
|
|||
v-model="remark" maxlength="-1"
|
||||
placeholder="报价额需符合双方约定,并把关键内容附上。如保内维修XX含配件XXX等,分别XX元。如约定下单方寄配件,则订单内“申请配件发起”。"></textarea>
|
||||
</view>
|
||||
<view class="cu-btn line-main-color margin-top-sm long-btn" v-if="priceObj" @click="clearCurAddedPrice">清空加价</view>
|
||||
<view class="cu-btn line-main-color margin-top-sm long-btn" v-if="priceObj" @click="clearCurAddedPrice">
|
||||
清空加价</view>
|
||||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="showNewServPriceOfflineModal"
|
||||
@click="hideModal">退出/再次上门</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left" v-if="(priceObj && priceObj.payStatus === 0) || data.payStatus === 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOfflineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
<!-- <view class="action margin-0 flex-sub text-black" data-modal="showNewServPriceOfflineModal"
|
||||
@click="directlyFinish" v-if="data.consultMode === '01' && data.changeMoney != 0">直接完单</view> -->
|
||||
<template v-if="data.consultMode === '01'">
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
v-if="(priceObj && priceObj.payStatus === 0) || data.changeMoney != 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOnlineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
v-if="(priceObj && priceObj.payStatus === 0) || data.payStatus === 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOnlineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
</template>
|
||||
</view>
|
||||
</view>
|
||||
<pay-qrcode ref="payQrcode" :show="showPayQrcodeModal" :data="data" @finishQrPay="finishQrPay"></pay-qrcode>
|
||||
|
|
@ -81,7 +96,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
|
@ -122,7 +137,7 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
async resetPriceChangedInfo() {
|
||||
let res = await this.$request.getChangeOrderPrice(this.data);
|
||||
|
|
@ -160,6 +175,19 @@
|
|||
}, 1500);
|
||||
}
|
||||
},
|
||||
async directlyFinish(e) {
|
||||
let res = await this.$request.editOrder({
|
||||
id: this.data.orderDetailId,
|
||||
orderStatus: 5
|
||||
});
|
||||
if (res && res.code === 0) {
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: '操作成功'
|
||||
})
|
||||
this.hideModal(e)
|
||||
}
|
||||
},
|
||||
async makePayQrcode(e) {
|
||||
let res = await this.$request.priceAddedQrPay(this.data);
|
||||
if (res && res.code === 0) {
|
||||
|
|
|
|||
|
|
@ -56,10 +56,22 @@
|
|||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black" data-modal="showNewServPriceOnlineModal"
|
||||
@click="hideModal">退出/再次上门</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left" v-if="(priceObj && priceObj.payStatus === 0) || data.payStatus === 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOnlineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
<!-- <view class="action margin-0 flex-sub text-black" data-modal="showNewServPriceOfflineModal"
|
||||
@click="directlyFinish" v-if="data.consultMode === '01'">直接完单</view> -->
|
||||
<template v-if="data.consultMode === '01'">
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
v-if="(priceObj && priceObj.payStatus === 0) || data.changeMoney != 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOnlineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
v-if="(priceObj && priceObj.payStatus === 0) || data.payStatus === 0"
|
||||
data-modal="showPayQrcodeModal" @tap="makePayQrcode($event)">请客户支付</view>
|
||||
<view class="action margin-0 flex-sub text-main-color solid-left"
|
||||
data-modal="showNewServPriceOnlineModal" @tap="hideModal" @click="goFinishOrder" v-else>去完单</view>
|
||||
</template>
|
||||
</view>
|
||||
</view>
|
||||
<pay-qrcode ref="payQrcode" :show="showPayQrcodeModal" :data="data" @finishQrPay="finishQrPay"></pay-qrcode>
|
||||
|
|
@ -81,7 +93,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
|
@ -122,7 +134,7 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
async resetPriceChangedInfo() {
|
||||
let res = await this.$request.getChangeOrderPrice(this.data);
|
||||
|
|
@ -134,6 +146,19 @@
|
|||
changePayAction(payAction) {
|
||||
this.payAction = payAction;
|
||||
},
|
||||
async directlyFinish(e) {
|
||||
let res = await this.$request.editOrder({
|
||||
id: this.data.orderDetailId,
|
||||
orderStatus: 5
|
||||
});
|
||||
if (res && res.code === 0) {
|
||||
uni.showToast({
|
||||
icon: 'success',
|
||||
title: '操作成功'
|
||||
})
|
||||
this.hideModal(e)
|
||||
}
|
||||
},
|
||||
async changeOrderPrice(newPrice) {
|
||||
if (this.priceObj && this.payAction != this.priceObj.type) {
|
||||
uni.showToast({
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
|
||||
export default {
|
||||
name: 'onDoorImmediately',
|
||||
emits: ['confirmFeedback'],
|
||||
emits: ['confirmFeedback', 'close'],
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
components: {
|
||||
|
|
@ -59,12 +59,17 @@
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
hideModal(e) {
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
hideModal() {
|
||||
this.$emit('close');
|
||||
},
|
||||
minChange(e) {
|
||||
this.waitMin = this.minList[e.detail.value];
|
||||
},
|
||||
// 添加操作节点
|
||||
async addOrderOperate(params = {}) {
|
||||
let res = await this.$request.addOrderOperate(params);
|
||||
return res;
|
||||
},
|
||||
async workBegin(e) {
|
||||
let order = this.data;
|
||||
let curDate = new Date();
|
||||
|
|
@ -82,6 +87,11 @@
|
|||
icon: 'success',
|
||||
duration: 1000
|
||||
})
|
||||
this.addOrderOperate({
|
||||
orderId: order.orderDetailId,
|
||||
orderType: '02',
|
||||
content: '师傅上门'
|
||||
})
|
||||
this.hideModal(e);
|
||||
this.$emit('confirmFeedback');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@
|
|||
methods: {
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
resetData() {
|
||||
this.data = null;
|
||||
|
|
@ -91,8 +91,9 @@
|
|||
this.reasonType = e.detail.value;
|
||||
},
|
||||
chooseImgList(e, imgList) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 3 - imgList.length, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
|
|
@ -100,10 +101,10 @@
|
|||
title: '上传中',
|
||||
mask: true
|
||||
});
|
||||
res.tempFilePaths.forEach((tmpUrl, index) => {
|
||||
this.$request.uploadFile(tmpUrl).then((url) => {
|
||||
res.tempFiles.forEach((fileObj, index) => {
|
||||
this.$request.uploadFile(fileObj.tempFilePath).then((url) => {
|
||||
imgList.push(url);
|
||||
if (index === res.tempFilePaths.length - 1) {
|
||||
if (index === res.tempFiles.length - 1) {
|
||||
uni.hideLoading();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,54 @@
|
|||
<template>
|
||||
<view>
|
||||
<!-- 模态框 -->
|
||||
<view class="cu-modal" :class="show?'show':''">
|
||||
<view class="cu-dialog">
|
||||
<view class="padding-xl" style="background-color: #ffffff;">
|
||||
<view class="text-bold text-lg margin-bottom-sm">任务进度</view>
|
||||
|
||||
<view class="cu-timeline">
|
||||
<view class="cu-item text-main-color" v-for="(item, index) in arr" :key="index">
|
||||
<view class="content shadow-blur" style="text-align: left;padding: 15upx 20upx;">
|
||||
<view><text style="color: black;">{{item.content}}</text></view>
|
||||
<text style="color: #999999;font-size: 24upx;">{{item.createTime}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="cu-bar bg-white solid-top">
|
||||
<view class="action margin-0 flex-sub text-black solid-left" data-modal="taskProcessDetail"
|
||||
@tap="hideModal">关闭</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'taskProcessDetail',
|
||||
emits: ['confirmFeedback'],
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
arr: {
|
||||
type: Object,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hideModal(e) {
|
||||
this.$emit('close', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
},
|
||||
data: {
|
||||
type: Object,
|
||||
default: {}
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
|
@ -76,18 +76,23 @@
|
|||
},
|
||||
methods: {
|
||||
hideModal(e) {
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
chooseImage(e) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 1, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
let tempFilePaths = [];
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
tempFilePaths.push(fileObj.tempFilePath)
|
||||
})
|
||||
if (this.imgList.length != 0) {
|
||||
this.imgList = this.imgList.concat(res.tempFilePaths)
|
||||
this.imgList = this.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.imgList = res.tempFilePaths
|
||||
this.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
<script>
|
||||
export default {
|
||||
name: 'time-arrange',
|
||||
emits: ['showArrangeFailTime', 'editServTime'],
|
||||
emits: ['showArrangeFailTime', 'editServTime', 'close'],
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
|
@ -139,7 +139,7 @@
|
|||
},
|
||||
hideModal(e) {
|
||||
this.resetData();
|
||||
uni.$emit(this.$globalFun.HIDE_MODAL, e);
|
||||
this.$emit('close', e);
|
||||
},
|
||||
cannotArrangeTime(e) {
|
||||
this.resetData();
|
||||
|
|
@ -162,6 +162,11 @@
|
|||
id: order.orderMasterId,
|
||||
isCall: '02'
|
||||
});
|
||||
} else {
|
||||
this.$request.callDetailCustomer({
|
||||
id: order.orderDetailId,
|
||||
isCall: '02'
|
||||
});
|
||||
}
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: order.customerPhone
|
||||
|
|
|
|||
|
|
@ -73,15 +73,20 @@
|
|||
this.toWho = toWho;
|
||||
},
|
||||
chooseImgList(e) {
|
||||
uni.chooseImage({
|
||||
uni.chooseMedia({
|
||||
count: 9, //默认9
|
||||
mediaType: ['image'],
|
||||
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
|
||||
sourceType: ['album'], //从相册选择
|
||||
success: (res) => {
|
||||
let tempFilePaths = [];
|
||||
res.tempFiles.forEach((fileObj) => {
|
||||
tempFilePaths.push(fileObj.tempFilePath);
|
||||
})
|
||||
if (this.imgList.length != 0) {
|
||||
this.imgList = this.imgList.concat(res.tempFilePaths)
|
||||
this.imgList = this.imgList.concat(tempFilePaths)
|
||||
} else {
|
||||
this.imgList = res.tempFilePaths
|
||||
this.imgList = tempFilePaths
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
|
||||
<view>
|
||||
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
|
||||
<!-- 顶部操作条 -->
|
||||
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
|
||||
<block slot="backText">返回</block>
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
</scroll-view>
|
||||
</view>
|
||||
<!-- tab content -->
|
||||
<view class="padding bg-white margin-top-sm margin-lr-sm" v-for="(order, index) in orderList">
|
||||
<view class="padding bg-white margin-top-sm margin-lr-sm" v-for="(order, index) in orderList" :key="index">
|
||||
<view class="flex justify-between">
|
||||
<view class="text-lg text-bold text-cut">{{order.goodsName}}</view>
|
||||
<!-- 不同状态订单使用不同角标 -->
|
||||
|
|
@ -106,14 +106,28 @@
|
|||
<view v-else-if="order.orderStatus === 5" class="right-tag padding-lr-sm padding-tb-xs bg-green">完</view>
|
||||
</view>
|
||||
<view class="float-left">
|
||||
<view v-if="order.payType === 1" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>到付单</view>
|
||||
<view v-if="order.changeMoney || order.payStatus != 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||||
<view v-if="order.goodsBrand" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>{{order.goodsBrand}}</view>
|
||||
<view v-if="order.goodsSpecification" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>{{order.goodsSpecification}}</view>
|
||||
</view>
|
||||
<view class="float-left">
|
||||
<view v-if="order.consultMode === '01'" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>合约单</view>
|
||||
<view v-if="order.payType === 1 && order.consultMode !== '01'" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>到付单</view>
|
||||
<template v-if="order.consultMode === '01'">
|
||||
<view v-if="order.changeMoney" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view v-if="order.changeMoney || order.payStatus != 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>有待付款</view>
|
||||
<view v-else class='cu-tag margin-right-xs radius line-red margin-top-xs'>款已付清</view>
|
||||
</template>
|
||||
|
||||
</view>
|
||||
<view>
|
||||
<view v-if="order.timeout == 1" class="float-left">
|
||||
<view v-if="order.orderStatus === 0" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未接单</view>
|
||||
<view v-else-if="order.orderStatus === 1" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
|
||||
<view v-else-if="order.orderStatus === 1 && order.isCall === '1'" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
|
||||
<view v-else-if="order.orderStatus === 1 && order.isCall === '02'" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未排单</view>
|
||||
<view v-else-if="order.orderStatus === 1 && order.orderDetailId != null" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未预约</view>
|
||||
<view v-else-if="order.orderStatus === 2" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未上门</view>
|
||||
<view v-else-if="order.orderStatus === 3" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未完单</view>
|
||||
</view>
|
||||
|
|
@ -124,7 +138,7 @@
|
|||
<view v-else-if="timeoutRecord.orderStatus === 3" class='cu-tag margin-right-xs radius line-red margin-top-xs'>超时未完单</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList">
|
||||
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList" :key="afterServiceRecord.id">
|
||||
<view v-if="afterServiceRecord.createBy && !afterServiceRecord.updateBy" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后发起中</view>
|
||||
<view v-if="afterServiceRecord.workerFeedbackResult == 1 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>售后已同意</view>
|
||||
<view v-if="afterServiceRecord.workerFeedbackResult == 0 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后已拒绝</view>
|
||||
|
|
@ -164,40 +178,50 @@
|
|||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||||
<text>完成时间:{{order.workFinishTime}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm flex justify-start align-center" v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() > new Date().getTime()">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||||
<text>距完单分帐:</text>
|
||||
<uni-countdown :show-colon="false" :backgroundColor="'#e35b33'" :color="'#faf3f0'"
|
||||
:day="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).day"
|
||||
:hour="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).hour"
|
||||
:minute="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).min"
|
||||
:second="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).seconds">
|
||||
</uni-countdown>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||||
v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() < new Date().getTime()">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>银联发起(T+1)支付中,正在刷新...</text>
|
||||
<text class="text-main-color margin-left-sm">详情</text>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||||
v-if="order.orderDetailId != null && order.drawCashStatus === 1">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>银联发起(T+1)支付中:{{order.drawCashTime}}</text>
|
||||
<text class="text-main-color margin-left-sm">详情</text>
|
||||
</view>
|
||||
<!-- <view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,同意退款的需同意后您线下与客户另行操作,系统无法提供原路返回退款!</text>
|
||||
</view> -->
|
||||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>货款分账成功:{{order.arrivalTime}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === -1">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>提现失败</text>
|
||||
</view>
|
||||
<template v-if="order.consultMode === '01' && order.orderStatus === 4 && order.payStatus != 1">
|
||||
<view class="margin-top-sm flex justify-start align-center">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||||
<text>距完单分帐:</text>
|
||||
<text style="color: #e35b33;">合约单按期结算款项,请等待…</text>
|
||||
</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="margin-top-sm flex justify-start align-center" v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() > new Date().getTime()">
|
||||
<text class="text-main-color text-lg margin-right-xs"><text class="cuIcon-time"></text></text>
|
||||
<text>距完单分帐:</text>
|
||||
<uni-countdown :show-colon="false" :backgroundColor="'#e35b33'" :color="'#faf3f0'"
|
||||
:day="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).day"
|
||||
:hour="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).hour"
|
||||
:minute="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).min"
|
||||
:second="$dateUtil.countDownDiff($dateUtil.addHours(order.workFinishTime, 1)).seconds">
|
||||
</uni-countdown>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||||
v-if="order.orderDetailId != null && tabCur === 3 && order.drawCashStatus === 0 && $dateUtil.addHours(order.workFinishTime, 1).getTime() < new Date().getTime()">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>银联发起(T+1)支付中,正在刷新...</text>
|
||||
<text class="text-main-color margin-left-sm">详情</text>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" @click="normalShowModalByRef('ledgerAccountRemark')"
|
||||
v-if="order.orderDetailId != null && order.drawCashStatus === 1">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>银联发起(T+1)支付中:{{order.drawCashTime}}</text>
|
||||
<text class="text-main-color margin-left-sm">详情</text>
|
||||
</view>
|
||||
<!-- <view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>本单银联已确认货款结算完毕(订单支付完成),款项已到达或即将到达您所绑定帐户,同意退款的需同意后您线下与客户另行操作,系统无法提供原路返回退款!</text>
|
||||
</view> -->
|
||||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === 2">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>货款分账成功:{{order.arrivalTime}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm text-red" v-if="order.orderDetailId != null && order.drawCashStatus === -1">
|
||||
<text class="text-lg margin-right-xs"><text class="cuIcon-notice"></text></text>
|
||||
<text>提现失败</text>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<!-- 不同状态订单支持不同操作按钮 -->
|
||||
<view v-if="order.orderStatus === 0">
|
||||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-popup="dispatchOrder" @click="getCanAssignList(order)" @tap="togglePopup($event, order)">派单</button>
|
||||
|
|
@ -215,13 +239,14 @@
|
|||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="assignWork2MySelf(order)" v-show="order.orderDetailId == null">自己承接</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showTimeArrangeModal" @tap="showModal($event, order)">预约时间</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId != null" @click="rejectDetailOrder(order)">退单</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId == null" @click="rejectMasterOrderWhenAccepted(order)">退单</button>
|
||||
</view>
|
||||
<view v-else-if="order.orderStatus === 1">
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||||
</view>
|
||||
<view v-if="order.orderStatus === 2">
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="makePhoneCall(order)">联系客户</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="makePhoneCall(order.customerPhone)">联系客户</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showEditTimeArrangeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">修改时间</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showOnDoorNoticeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">立即上门</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" v-if="order.orderDetailId != null" @click="rejectDetailOrder(order)">退单</button>
|
||||
|
|
@ -234,7 +259,7 @@
|
|||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOnline" data-modal="showNewServPriceOnlineModal" v-show="order.orderDetailId != null && order.clockInLocation && order.payType === 0">报价/完单</button>
|
||||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOffline" data-modal="showNewServPriceOfflineModal" v-show="order.orderDetailId != null && order.payType === 1">报价/完单</button> -->
|
||||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOnline" data-modal="showNewServPriceOnlineModal" v-show="order.orderDetailId != null && order.payType === 0">报价/完单</button> -->
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="makePhoneCall(order)">联系客户</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="makePhoneCall(order.customerPhone)">联系客户</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showEditTimeArrangeModal" @tap="showModal($event, order)" v-show="order.orderDetailId != null">重新排期</button>
|
||||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="finishOrder(order)" v-if="order.payStatus === 1" v-show="order.orderDetailId != null">发起完单</button> -->
|
||||
<!-- <button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" data-modal="showPayQrcodeModal" v-if="order.payStatus === 0" @tap="makePayQrcode($event, order)" v-show="order.orderDetailId != null">生成收款码</button> -->
|
||||
|
|
@ -242,6 +267,8 @@
|
|||
</view>
|
||||
<view v-if="order.orderStatus === 4 || order.orderStatus === 5">
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click="showServOrderDetail(order)">查看</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOffline" data-modal="showNewServPriceOfflineModal" v-show="order.orderDetailId != null && order.clockInLocation && order.payType === 1 && order.consultMode === '01'">报价/完单</button>
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @click = "changePrice($event, order)" data-ref="newServPriceOnline" data-modal="showNewServPriceOnlineModal" v-show="order.orderDetailId != null && order.clockInLocation && order.payType === 0 && order.consultMode === '01'">报价/完单</button>
|
||||
</view>
|
||||
<!-- <view v-if="order.orderStatus === 'afterSaleService'">
|
||||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm" @tap="makePhoneCall(order.customerPhone)">联系客户</button>
|
||||
|
|
@ -249,7 +276,7 @@
|
|||
<button class="cu-btn bg-main-color margin-right-xs shadow-blur margin-top-sm">立即上门</button>
|
||||
</view> -->
|
||||
<view v-if="order.afterServiceRecordList && order.afterServiceRecordList.length && order.orderDetailId != null" class="bg-white margin-top-sm">
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList">
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in order.afterServiceRecordList" :key="afterServiceRecord.id">
|
||||
<view v-if="afterServiceRecord.createBy == 1" class="padding-tb solid-top">
|
||||
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
|
||||
<view v-if="afterServiceRecord.operType === 1">
|
||||
|
|
@ -413,18 +440,18 @@
|
|||
<load-status-bar v-show="[5,6].indexOf(tabCur) >= 0 || (stateCur != null && stateList[stateCur].code === 105)" ref="loadStatusBar" @loadMore="loadMasterOrderPage"></load-status-bar>
|
||||
<view v-show="tabCur !== 5 && stateCur !== 0" class="cu-tabbar-height"></view>
|
||||
<!-- 模态框 -->
|
||||
<agree-after-sale v-if="agreeAfterSale" :show="agreeAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage"></agree-after-sale>
|
||||
<reject-after-sale v-if="rejectAfterSale" :show="rejectAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage"></reject-after-sale>
|
||||
<time-arrange v-if="showTimeArrangeModal" :show="showTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime"></time-arrange>
|
||||
<time-arrange-fail v-if="showArrangeFailTimeModal" :show="showArrangeFailTimeModal" :data="curOrder"></time-arrange-fail>
|
||||
<new-serv-price-online v-if="showNewServPriceOnlineModal" ref="newServPriceOnline" :show="showNewServPriceOnlineModal" :data="curOrder" @finishOrder="finishOrder"></new-serv-price-online>
|
||||
<new-serv-price-offline v-if="showNewServPriceOfflineModal" ref="newServPriceOffline" :show="showNewServPriceOfflineModal" :data="curOrder" @finishOrder="finishOrder"></new-serv-price-offline>
|
||||
<agree-after-sale v-if="agreeAfterSale" :show="agreeAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage" @close="agreeAfterSale = false"></agree-after-sale>
|
||||
<reject-after-sale v-if="rejectAfterSale" :show="rejectAfterSale" :data="curOrder" @confirmFeedback="reloadMasterOrderPage" @close="rejectAfterSale = false"></reject-after-sale>
|
||||
<time-arrange v-if="showTimeArrangeModal" :show="showTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime" @close="showTimeArrangeModal = false"></time-arrange>
|
||||
<time-arrange-fail v-if="showArrangeFailTimeModal" :show="showArrangeFailTimeModal" :data="curOrder" @close="showArrangeFailTimeModal = false"></time-arrange-fail>
|
||||
<new-serv-price-online v-if="showNewServPriceOnlineModal" ref="newServPriceOnline" :show="showNewServPriceOnlineModal" :data="curOrder" @finishOrder="finishOrder" @close="showNewServPriceOnlineModal = false;reloadMasterOrderPage()"></new-serv-price-online>
|
||||
<new-serv-price-offline v-if="showNewServPriceOfflineModal" ref="newServPriceOffline" :show="showNewServPriceOfflineModal" :data="curOrder" @finishOrder="finishOrder" @close="showNewServPriceOfflineModal = false;reloadMasterOrderPage()"></new-serv-price-offline>
|
||||
<pay-qrcode v-if="showPayQrcodeModal" ref="payQrcode" :show="showPayQrcodeModal" :data="curOrder" @finishQrPay="finishQrPay"></pay-qrcode>
|
||||
<edit-time-arrange v-if="showEditTimeArrangeModal" :show="showEditTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime" :ifRollback2WS="true"></edit-time-arrange>
|
||||
<urgent-msg v-if="sendUrgentMsgModal" :show="sendUrgentMsgModal" @hideModal="hideModal"></urgent-msg>
|
||||
<edit-time-arrange v-if="showEditTimeArrangeModal" :show="showEditTimeArrangeModal" :data="curOrder" :curDate="curDate" @showArrangeFailTime="showArrangeFailTime" @editServTime="editServTime" :ifRollback2WS="true" @close="showEditTimeArrangeModal = false"></edit-time-arrange>
|
||||
<urgent-msg v-if="sendUrgentMsgModal" :show="sendUrgentMsgModal" @hideModal="sendUrgentMsgModal = false"></urgent-msg>
|
||||
<pic-modal ref="showPicModal" :imgList="picModalImgList"></pic-modal>
|
||||
<on-door-immediately v-if="showOnDoorNoticeModal" :show="showOnDoorNoticeModal" :data="curOrder" @confirmFeedback="reloadMasterOrderPage"></on-door-immediately>
|
||||
<accept-order-notice v-if="showAcceptOrderNoticeModal" :show="showAcceptOrderNoticeModal" :data="curOrder" @confirmFeedback="setCurTab(0)"></accept-order-notice>
|
||||
<on-door-immediately v-if="showOnDoorNoticeModal" :show="showOnDoorNoticeModal" :data="curOrder" @close="showOnDoorNoticeModal = false" @confirmFeedback="reloadMasterOrderPage"></on-door-immediately>
|
||||
<accept-order-notice v-if="showAcceptOrderNoticeModal" :show="showAcceptOrderNoticeModal" :data="curOrder" @close="showAcceptOrderNoticeModal = false" @confirmFeedback="setCurTab(0)"></accept-order-notice>
|
||||
<confirm-modal ref="ledgerAccountRemark" :showCancel="false" :showConfirm="true">
|
||||
<block slot="contentView">
|
||||
<view class="text-left">
|
||||
|
|
@ -586,6 +613,11 @@
|
|||
this.loadData();
|
||||
this.bindEvent();
|
||||
},
|
||||
onShow() {
|
||||
if(this.orderList.length){
|
||||
this.reloadMasterOrderPage();
|
||||
}
|
||||
},
|
||||
onUnload() {
|
||||
this.offBindEvent();
|
||||
},
|
||||
|
|
@ -638,6 +670,8 @@
|
|||
params.goodsName = this.formData.orderKeywords;
|
||||
params.countryId = this.formData.area && this.formData.area.length > 2 ? this.formData.area[2].areaId : null;
|
||||
params.goodsCategoryId = this.formData.category && this.formData.category.length > 2 ? this.formData.category[2].goodsCategoryId : null;
|
||||
params.orderByColumn = "updateTime";
|
||||
params.isAsc = "desc";
|
||||
// 状态
|
||||
if (this.tabCur != null) {
|
||||
params.orderStatus = this.subStateList[this.tabCur].code;
|
||||
|
|
@ -660,11 +694,15 @@
|
|||
params.orderStatus = 2;
|
||||
params.expectTimeStart = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 00:00:00",
|
||||
params.expectTimeEnd = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + " 23:59:59"
|
||||
params.orderByColumn = "expectTimeStart";
|
||||
params.isAsc = "asc";
|
||||
} else if (this.stateList[this.stateCur].code === 101) {
|
||||
// 明日单
|
||||
params.orderStatus = 2;
|
||||
params.expectTimeStart = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 00:00:00",
|
||||
params.expectTimeEnd = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + (date.getDate() + 1) + " 23:59:59"
|
||||
params.orderByColumn = "expectTimeStart";
|
||||
params.isAsc = "asc";
|
||||
} else if (this.stateList[this.stateCur].code === 104) {
|
||||
// 搁置单
|
||||
params.shelveStatus = 1;
|
||||
|
|
@ -673,11 +711,17 @@
|
|||
} else if (this.stateList[this.stateCur].code === 105) {
|
||||
// 监控单
|
||||
// params.orderStatuses = "2,3,4,5";
|
||||
params.allSelfAssigned = 0;
|
||||
params.isMonitoredOrder = true;
|
||||
} else if (this.stateList[this.stateCur].code === 103) {
|
||||
// 超时单
|
||||
params.isMonitoredOrder = true;
|
||||
params.allSelfAssigned = 0;
|
||||
params.orderByColumn = "createTime";
|
||||
params.isAsc = "desc";
|
||||
} else if (this.stateList[this.stateCur].code === 0) {
|
||||
// 新订单
|
||||
params.orderByColumn = "createTime";
|
||||
params.isAsc = "desc";
|
||||
}
|
||||
// else if (this.stateList[this.stateCur].code === 100) {
|
||||
// // 急报单
|
||||
|
|
@ -699,6 +743,10 @@
|
|||
// 已完成/子单
|
||||
params.workFinishTimeExisted = true;
|
||||
params.drawCashStatus = 2;
|
||||
} else if (this.tabCur === 1) {
|
||||
// 待上门
|
||||
params.orderByColumn = "expectTimeStart";
|
||||
params.isAsc = "asc";
|
||||
}
|
||||
}
|
||||
try {
|
||||
|
|
@ -955,6 +1003,7 @@
|
|||
this.$refs[refName].showModal();
|
||||
},
|
||||
hideModal(e) {
|
||||
console.log(e);
|
||||
this.curOrder = null;
|
||||
this[e.currentTarget.dataset.modal] = false;
|
||||
},
|
||||
|
|
@ -1002,6 +1051,11 @@
|
|||
}
|
||||
if (finishFlag) {
|
||||
this.reloadMasterOrderPage();
|
||||
// this.addOrderOperate({
|
||||
// orderId: id,
|
||||
// orderType: reqFunName === 'updateOrder' ? '01' : '02',
|
||||
// content: '预约时间'
|
||||
// })
|
||||
uni.showToast({
|
||||
title: '预约时间成功',
|
||||
icon: 'none',
|
||||
|
|
@ -1014,6 +1068,11 @@
|
|||
let res = await this.$request.updateDetailOrder(params);
|
||||
return res;
|
||||
},
|
||||
// 添加操作节点
|
||||
async addOrderOperate(params = {}) {
|
||||
let res = await this.$request.addOrderOperate(params);
|
||||
return res;
|
||||
},
|
||||
// async ledgerAccountcountdownTimeup(order = {}, index) {
|
||||
// let res = await this.$request.updateDetailOrder({
|
||||
// id: order.orderDetailId,
|
||||
|
|
@ -1059,15 +1118,11 @@
|
|||
changePopupState(e) {
|
||||
this.ifShowPageMeta = e.show;
|
||||
},
|
||||
makePhoneCall(order) {
|
||||
if (order.orderDetailId == null) {
|
||||
this.$request.callCustomer({
|
||||
id: order.orderMasterId,
|
||||
isCall: '02'
|
||||
});
|
||||
}
|
||||
makePhoneCall(tel) {
|
||||
console.log('order.customerPhone==='+tel);
|
||||
if(!tel) return
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: order.customerPhone
|
||||
phoneNumber: tel
|
||||
})
|
||||
},
|
||||
async makePayQrcode(e, orderInfo) {
|
||||
|
|
@ -1131,6 +1186,19 @@
|
|||
if (res && res.code === 0) {
|
||||
this.reloadMasterOrderPage();
|
||||
this.showModal(e, order);
|
||||
if(funName == 'updateMasterOrder') {
|
||||
this.addOrderOperate({
|
||||
orderId: id,
|
||||
orderType: '01',
|
||||
content: `师傅接单`
|
||||
})
|
||||
} else {
|
||||
this.addOrderOperate({
|
||||
orderId: id,
|
||||
orderType: '02',
|
||||
content: `师傅接单`
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
async noticeMsg(params = {}) {
|
||||
|
|
@ -1200,6 +1268,15 @@
|
|||
title: '派单成功',
|
||||
icon: 'success'
|
||||
})
|
||||
|
||||
if(params.workerName) {
|
||||
this.addOrderOperate({
|
||||
orderId: this.curOrder.orderDetailId == null ? this.curOrder.orderMasterId : this.curOrder.orderDetailId,
|
||||
orderType: this.curOrder.orderDetailId == null ? '01' : '02',
|
||||
content: `师傅派单给-${params.workerName}`
|
||||
})
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
uni.showToast({
|
||||
|
|
@ -1228,6 +1305,11 @@
|
|||
orderMasterId: orderInfo.orderMasterId,
|
||||
isAll: 1
|
||||
}
|
||||
this.addOrderOperate({
|
||||
orderId: orderInfo.orderDetailId == null ? orderInfo.orderMasterId : orderInfo.orderDetailId,
|
||||
orderType: orderInfo.orderDetailId == null ? '01' : '02',
|
||||
content: '师傅接单'
|
||||
})
|
||||
return await this.assignWork(params);
|
||||
},
|
||||
async rejectMasterOrder(order) {
|
||||
|
|
@ -1238,14 +1320,14 @@
|
|||
if (res && res.code === 0) {
|
||||
this.reloadMasterOrderPage();
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '拒绝接单成功',
|
||||
icon: 'success',
|
||||
title: '拒单成功',
|
||||
duration: 1000
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '拒绝接单失败'
|
||||
title: '拒单失败'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
@ -1256,14 +1338,43 @@
|
|||
if (res && res.code === 0) {
|
||||
this.reloadMasterOrderPage();
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '拒绝接单成功',
|
||||
icon: 'success',
|
||||
title: '退单成功',
|
||||
duration: 1000
|
||||
})
|
||||
this.addOrderOperate({
|
||||
orderId: order.orderDetailId,
|
||||
orderType: '02',
|
||||
content: '师傅退单'
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '拒绝接单失败'
|
||||
title: '退单失败'
|
||||
})
|
||||
}
|
||||
},
|
||||
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: '师傅退单'
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: res.msg,
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
},
|
||||
|
|
@ -1362,6 +1473,11 @@
|
|||
icon: 'success',
|
||||
duration: 1000
|
||||
})
|
||||
this.addOrderOperate({
|
||||
orderId: order.orderDetailId,
|
||||
orderType: '02',
|
||||
content: '打卡到达'
|
||||
})
|
||||
}
|
||||
},
|
||||
async revisit() {
|
||||
|
|
|
|||
|
|
@ -1,27 +1,30 @@
|
|||
<template>
|
||||
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
|
||||
<view>
|
||||
<page-meta :page-style="'overflow:'+(ifShowPageMeta?'hidden':'visible')"></page-meta>
|
||||
<!-- 顶部操作条 -->
|
||||
<cu-custom :bgColor="'bg-main-color'" :isBack="true">
|
||||
<block slot="backText">返回</block>
|
||||
<block slot="content">服务订单详情</block>
|
||||
</cu-custom>
|
||||
<!-- 任务进度跟踪 -->
|
||||
<view v-if="servDetail.orderStatus === 3" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
|
||||
<uni-collapse v-model="value">
|
||||
<view class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
|
||||
<uni-collapse v-if="taskListArr.length">
|
||||
<uni-collapse-item :open="true">
|
||||
<template v-slot:title>
|
||||
<view class="cu-bar">
|
||||
<view class="action bar-first-action">
|
||||
<text class="cuIcon-titles text-main-color"></text> 任务进度跟踪
|
||||
<text class="cuIcon-titles text-main-color"></text> <text @click.stop="showTaskDetailMdl()">任务进度跟踪</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<view class="cu-timeline">
|
||||
<view class="cu-item text-main-color" v-for="(item, index) in servDetail.taskTraceLine">
|
||||
<view class="content shadow-blur" :class="index === 0 ? 'bg-main-color light' : 'bg-gray'">
|
||||
<text class="margin-right">{{item.time}}</text>
|
||||
<text>{{item.action}}</text>
|
||||
<view class="cu-item text-main-color" key="cu-timeline">
|
||||
<!-- :class="index === 0 ? 'bg-main-color light' : 'bg-gray'" -->
|
||||
<view class="content shadow-blur bg-main-color light" >
|
||||
<view>
|
||||
<text>{{taskListArr[taskListArr.length-1].content}}</text>
|
||||
</view>
|
||||
<text>{{taskListArr[taskListArr.length-1].createTime}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -44,24 +47,24 @@
|
|||
</view> -->
|
||||
<view class="margin-top-sm">
|
||||
<text class="cuIcon-location text-main-color margin-right-xs"></text>
|
||||
<text>服务地址:{{servDetail.address}}</text>
|
||||
<text><text class="labels">服务地址:</text>{{servDetail.address}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="cuIcon-people text-main-color margin-right-xs"></text>
|
||||
<text class="margin-right-sm">客户:{{servDetail.customerName}}</text>
|
||||
<text class="margin-right-sm"><text class="labels">客户:</text>{{servDetail.customerName}}</text>
|
||||
<text>{{servDetail.customerPhone.substring(0, 3) + "****" + servDetail.customerPhone.substring(7)}}</text>
|
||||
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.customerPhone)">拨打</button>
|
||||
<button class="cu-btn line-main-color sm" @click="makeCustomerPhoneCall(servDetail)">拨打</button>
|
||||
</view>
|
||||
<view class="margin-top-sm" v-if="servDetail.orderDetailId">
|
||||
<text class="cuIcon-friendfamous text-main-color margin-right-xs"></text>
|
||||
<text class="margin-right-sm">派单公司:{{servDetail.masterCompanyName}}</text>
|
||||
<text class="margin-right-sm"><text class="labels">派单公司:</text>{{servDetail.masterCompanyName}}</text>
|
||||
<text class="margin-right-xs">{{servDetail.masterWorkerPhone}}</text>
|
||||
<button class="cu-btn line-main-color sm" @click="makePhoneCall(servDetail.masterWorkerPhone)">拨打</button>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="cuIcon-time text-main-color margin-right-xs"></text>
|
||||
<text v-if="servDetail.expectTimeEndFront">预约时间:{{servDetail.expectTimeStartFront + '~' + servDetail.expectTimeEndFront}}</text>
|
||||
<text v-else>预约时间:{{servDetail.expectTimeStartFront}}</text>
|
||||
<text v-if="servDetail.expectTimeEndFront"><text class="labels">预约时间:</text>{{servDetail.expectTimeStartFront + '~' + servDetail.expectTimeEndFront}}</text>
|
||||
<text v-else><text class="labels">预约时间:</text>{{servDetail.expectTimeStartFront}}</text>
|
||||
</view>
|
||||
<!-- <view class="margin-top-sm">
|
||||
<text class="cuIcon-time text-main-color margin-right-xs"></text>
|
||||
|
|
@ -69,21 +72,25 @@
|
|||
</view> -->
|
||||
<view class="margin-top-sm" v-if="servDetail.orderDetailId != null && servDetail.orderStatus >= 3">
|
||||
<text class="cuIcon-time text-main-color margin-right-xs"></text>
|
||||
<text>上门时间:{{servDetail.workBeginTime}}</text>
|
||||
<text><text class="labels">上门时间:</text>{{servDetail.workBeginTime}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm" v-if="servDetail.orderDetailId == null && servDetail.orderMode == '02'">
|
||||
<!-- <view class="margin-top-sm" v-if="servDetail.orderDetailId == null && servDetail.orderMode == '02'">
|
||||
<text class="cuIcon-moneybag text-main-color margin-right-xs"></text>
|
||||
<text>订单金额:</text>
|
||||
<text class="text-price">{{servDetail.totalMoney}}</text>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="margin-top-sm" v-if="servDetail.customerRemark">
|
||||
<text class="cuIcon-message text-main-color margin-right-xs"></text>
|
||||
<text>备注:{{servDetail.customerRemark}}</text>
|
||||
<text><text class="labels">备注:</text>{{servDetail.customerRemark}}</text>
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<text class="cuIcon-moneybag text-main-color margin-right-xs"></text>
|
||||
<text>服务金额:</text>
|
||||
<text class="text-price" v-if="servDetail.orderDetailId != null">{{servDetail.payMoney}}</text>
|
||||
<text class="labels">服务金额:</text>
|
||||
<text class="text-price" v-if="servDetail.orderDetailId != null">
|
||||
{{servDetail.payAddMoney}}
|
||||
<text v-if="servDetail.payType === 1 && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0">【订单加价,单独到账】</text>
|
||||
<text v-else-if="servDetail.payType === 0 && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0">【订单加价,合并到账】</text>
|
||||
</text>
|
||||
<text class="text-price" v-else>{{servDetail.serverMoney}}</text>
|
||||
</view>
|
||||
<view class="text-sm text-gray margin-left-lg"
|
||||
|
|
@ -98,7 +105,7 @@
|
|||
</text>
|
||||
</view>
|
||||
<view class="text-sm text-gray margin-left-lg" v-if="servDetail.orderDetailId != null && servDetail.financialChangeRecords != null"
|
||||
v-for="(item, index) in servDetail.financialChangeRecords">
|
||||
v-for="(item, index) in servDetail.financialChangeRecords" :key="index">
|
||||
<text v-if="item.payStatus === 1">加减费用:<text class="text-price margin-top-xs">+{{item.changeMoney}}</text>[订单加价]</text>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -113,6 +120,10 @@
|
|||
<product-picked :product="servDetail" :pickedList="servDetail.standardList" :columnTitleArr="servingColumnHeaders" :valFieldArr="servingValFields"></product-picked>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 下单备注 -->
|
||||
<view v-if="servDetail.remark" class="bg-white margin-lr-sm padding margin-top-sm">
|
||||
<view>订单备注: {{servDetail.remark}}</view>
|
||||
</view>
|
||||
<!-- 加价记录 子单详情展示 -->
|
||||
<view v-if="servDetail.orderDetailId != null && servDetail.financialChangeRecords && servDetail.financialChangeRecords.length > 0" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm">
|
||||
<view class="cu-bar solid-bottom">
|
||||
|
|
@ -120,7 +131,7 @@
|
|||
<text class="cuIcon-titles text-main-color"></text> 加价记录
|
||||
</view>
|
||||
</view>
|
||||
<view class="padding-tb-sm" v-for="(changeRecord, changeRecordIndex) in servDetail.financialChangeRecords">
|
||||
<view class="padding-tb-sm" v-for="(changeRecord, changeRecordIndex) in servDetail.financialChangeRecords" :key="changeRecordIndex">
|
||||
<view>
|
||||
<text>加价金额:</text>
|
||||
<text>{{changeRecord.changeMoney}}</text>
|
||||
|
|
@ -153,7 +164,7 @@
|
|||
<text class="cuIcon-titles text-main-color"></text> 售后记录
|
||||
</view>
|
||||
</view>
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in servDetail.afterServiceRecordList">
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in servDetail.afterServiceRecordList" :key="afterServiceRecordIndex">
|
||||
<view v-if="afterServiceRecord.createBy == 1" class="padding-tb-sm solid-top">
|
||||
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
|
||||
<view v-if="afterServiceRecord.operType === 1">
|
||||
|
|
@ -309,7 +320,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 完成记录 主单详情展示 -->
|
||||
<view v-if="servDetail.orderDetailId == null" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm" v-for="(item, index) in servDetail.orderStandardDetailList">
|
||||
<view v-if="servDetail.orderDetailId == null" class="bg-white margin-lr-sm padding-lr padding-bottom margin-top-sm" v-for="(item, index) in servDetail.orderStandardDetailList" :key="index">
|
||||
<view class="cu-bar solid-bottom">
|
||||
<view class="action bar-first-action">
|
||||
<text class="cuIcon-titles text-main-color"></text> 服务记录
|
||||
|
|
@ -326,7 +337,7 @@
|
|||
<!-- <view class='cu-tag bg-purple radius light margin-right-sm' v-if="item.orderStatus > 3">{{item.workFinishTime}}</view> -->
|
||||
</view>
|
||||
<view class="margin-top-sm">
|
||||
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList">
|
||||
<view class="float-left" v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList" :key="afterServiceRecordIndex">
|
||||
<view v-if="afterServiceRecord.createBy && !afterServiceRecord.updateBy" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后发起中</view>
|
||||
<view v-if="afterServiceRecord.workerFeedbackResult == 1 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-main-color margin-top-xs'>售后已同意</view>
|
||||
<view v-if="afterServiceRecord.workerFeedbackResult == 0 && afterServiceRecord.customerFinalCheck == null" class='cu-tag margin-right-xs radius line-red margin-top-xs'>售后已拒绝</view>
|
||||
|
|
@ -363,7 +374,7 @@
|
|||
<text class="cuIcon-title text-main-color"></text> 加价记录
|
||||
</view>
|
||||
</view>
|
||||
<view class="padding-tb-sm" v-for="(changeRecord, changeRecordIndex) in item.financialChangeRecord">
|
||||
<view class="padding-tb-sm" v-for="(changeRecord, changeRecordIndex) in item.financialChangeRecord" :key="changeRecordIndex">
|
||||
<view>
|
||||
<text>加价金额:</text>
|
||||
<text>{{changeRecord.changeMoney}}</text>
|
||||
|
|
@ -397,7 +408,7 @@
|
|||
{{item.afterServiceRecordList[0].operType === 1 ? '退款记录' : '售后记录'}}
|
||||
</view>
|
||||
</view>
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList">
|
||||
<view v-for="(afterServiceRecord, afterServiceRecordIndex) in item.afterServiceRecordList" :key="afterServiceRecordIndex">
|
||||
<view v-if="afterServiceRecord.createBy == 1" class="padding-tb-sm solid-top">
|
||||
<view class='cu-tag bg-main-color radius light'>售后发起中</view>
|
||||
<view v-if="afterServiceRecord.operType === 1">
|
||||
|
|
@ -554,14 +565,21 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 订单编码和时间 -->
|
||||
<view class="bg-white margin-top-sm padding margin-lr-sm margin-bottom-with-bar">
|
||||
<view class="bg-white margin-top-sm padding margin-lr-sm">
|
||||
<view v-if="servDetail.orderDetailCode != null">订单编码:{{servDetail.orderDetailCode}}</view>
|
||||
<view v-else>订单编码:{{servDetail.orderMasterCode}}</view>
|
||||
<view class="margin-top-xs">订单时间:{{servDetail.createTime}}</view>
|
||||
</view>
|
||||
<view class="occupancy-bottom-bar"></view>
|
||||
<!-- 底部操作栏 -->
|
||||
<view class="cu-bar bg-white tabbar border fixed-bottom-bar" v-if="servDetail.orderDetailId != null && servDetail.orderStatus === 2">
|
||||
<!-- <view class="action" data-popup="orderManage" @click="togglePopup">
|
||||
<view class="cu-bar bg-white tabbar border fixed-bottom-bar" v-if="servDetail.orderDetailId != null && servDetail.orderStatus > 0 && servDetail.orderStatus != 6">
|
||||
<view class="action" data-popup="orderManage" @click="togglePopup">
|
||||
<view class="cuIcon-list"></view> 订单管理
|
||||
</view>
|
||||
<view v-if="servDetail.orderDetailId != null && servDetail.orderStatus === 2" class="bg-main-color submit" @click="workBegin">立即上门</view>
|
||||
</view>
|
||||
<!-- <view class="cu-bar bg-white tabbar border fixed-bottom-bar" v-if="servDetail.orderDetailId != null && servDetail.orderStatus === 2">
|
||||
<view class="action" data-popup="orderManage" @click="togglePopup">
|
||||
<view class="cuIcon-list"></view> 订单管理
|
||||
</view>
|
||||
<view class="action" data-modal="sendUrgentMsgModal" @click="showModal">
|
||||
|
|
@ -569,16 +587,16 @@
|
|||
<view class="cu-tag badge" v-if="servDetail.talkMsgNum > 0">{{servDetail.talkMsgNum}}</view>
|
||||
</view>
|
||||
发送急报
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="action" data-popup="orderManage">
|
||||
</view>
|
||||
<view class="action" data-modal="sendUrgentMsgModal">
|
||||
</view>
|
||||
<view v-if="servDetail.orderStatus === 2" class="bg-main-color submit" @click="workBegin">立即上门</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<uni-popup ref="orderManage" type="bottom" @change="changePopupState">
|
||||
<view class="bg-white text-center">
|
||||
<view v-for="(menu,index) in orderManageMenu" class="padding solid-bottom" :data-action="menu.action" @click="clickOrderManageMenu">
|
||||
<view class="bg-white text-center bottom-option-list-bar">
|
||||
<view v-for="(menu,index) in orderManageMenu" :key="index" class="padding solid-bottom" :data-action="menu.action" :data-modal="menu.modal" @click="clickOrderManageMenu">
|
||||
{{menu.name}}
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -587,17 +605,27 @@
|
|||
</uni-popup>
|
||||
<!-- 模态框 -->
|
||||
<urgent-msg :show="sendUrgentMsgModal" @hideModal="hideModal"></urgent-msg>
|
||||
<apply-extra-charge v-if="applyExtraChargeModal" :show="applyExtraChargeModal" :data="servDetail" @close="applyExtraChargeClose"></apply-extra-charge>
|
||||
<apply-charge v-if="applyChargeModal" :show="applyChargeModal" :data="servDetail" @close="applyChargeClose"></apply-charge>
|
||||
|
||||
<task-process-detail :show="taskProcessDetail" :arr="taskListArr" @close="taskDetailClose"></task-process-detail>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import productPicked from '@/components/goods-card/product-picked.vue';
|
||||
import urgentMsg from '@/pages/order-manage/modal/urgent-msg.vue';
|
||||
import applyExtraCharge from '@/pages/order-manage/modal/apply-extra-charge.vue';
|
||||
import applyCharge from '@/pages/order-manage/modal/apply-charge.vue';
|
||||
import taskProcessDetail from '@/pages/order-manage/modal/task_process_detail.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
productPicked,
|
||||
urgentMsg
|
||||
urgentMsg,
|
||||
applyExtraCharge,
|
||||
taskProcessDetail,
|
||||
applyCharge
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -610,33 +638,67 @@
|
|||
servingValFields: ['standardName', 'standardNum', 'waitServerNum'],
|
||||
servedValFields: ['standardName', 'standardNum', 'serverNum'],
|
||||
ifShowPageMeta: false,
|
||||
orderManageMenu: [{
|
||||
name: '申请配件',
|
||||
action: 'applyFittings'
|
||||
}, {
|
||||
orderManageMenu: [
|
||||
// {
|
||||
// name: '申请配件',
|
||||
// action: 'applyFittings'
|
||||
// },
|
||||
{
|
||||
name: '申请附加费',
|
||||
action: ''
|
||||
}, {
|
||||
name: '拍照回单',
|
||||
action: ''
|
||||
}, {
|
||||
name: '指派/撤回订单',
|
||||
action: ''
|
||||
}, {
|
||||
name: '申请退单',
|
||||
action: 'applyCancelOrder'
|
||||
}],
|
||||
action: 'applyExtraCharge',
|
||||
modal: 'applyExtraChargeModal'
|
||||
},
|
||||
{
|
||||
name: '申请费用',
|
||||
action: 'applyCharge',
|
||||
modal: 'applyChargeModal'
|
||||
}
|
||||
// {
|
||||
// name: '拍照回单',
|
||||
// action: ''
|
||||
// },
|
||||
// {
|
||||
// name: '指派/撤回订单',
|
||||
// action: ''
|
||||
// },
|
||||
// {
|
||||
// name: '申请退单',
|
||||
// action: 'applyCancelOrder'
|
||||
// },
|
||||
],
|
||||
sendUrgentMsgModal: false,
|
||||
overtimeRecords: null
|
||||
overtimeRecords: null,
|
||||
applyExtraChargeModal: false,
|
||||
taskProcessDetail: false,
|
||||
taskListArr: [],
|
||||
applyChargeModal: false
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
this.bindEvent();
|
||||
if (options && options.order) {
|
||||
this.order = JSON.parse(decodeURIComponent(options.order));
|
||||
}
|
||||
this.loadData();
|
||||
},
|
||||
onUnload() {
|
||||
this.offBindEvent();
|
||||
},
|
||||
methods: {
|
||||
// 显示任务详情进度框
|
||||
showTaskDetailMdl() {
|
||||
this.taskProcessDetail = true
|
||||
},
|
||||
taskDetailClose() {
|
||||
console.log('close close');
|
||||
this.taskProcessDetail = false
|
||||
},
|
||||
bindEvent() {
|
||||
uni.$on(this.$globalFun.HIDE_MODAL, this.hideModal);
|
||||
},
|
||||
offBindEvent() {
|
||||
uni.$off(this.$globalFun.HIDE_MODAL);
|
||||
},
|
||||
async loadData() {
|
||||
let orderId = null;
|
||||
let funName = null;
|
||||
|
|
@ -653,6 +715,15 @@
|
|||
id: orderId
|
||||
});
|
||||
this.servDetail = servDetailRes.data;
|
||||
this.getProcessData()
|
||||
},
|
||||
async getProcessData() {
|
||||
const isDetail = this.order.orderDetailId == null
|
||||
const res = await this.$request.getOrderOperate({
|
||||
orderId: isDetail ? this.order.orderMasterId : this.order.orderDetailId,
|
||||
orderType: isDetail ? '01' : '02'
|
||||
})
|
||||
this.taskListArr = res.rows;
|
||||
},
|
||||
changePopupState(e) {
|
||||
this.ifShowPageMeta = e.show;
|
||||
|
|
@ -670,6 +741,19 @@
|
|||
applyFittings() {
|
||||
console.log("申请配件")
|
||||
},
|
||||
applyExtraCharge() {
|
||||
console.log("申请charge")
|
||||
this.applyExtraChargeModal = true;
|
||||
},
|
||||
applyExtraChargeClose() {
|
||||
this.applyExtraChargeModal = false;
|
||||
},
|
||||
applyCharge() {
|
||||
this.applyChargeModal = true;
|
||||
},
|
||||
applyChargeClose() {
|
||||
this.applyChargeModal = false;
|
||||
},
|
||||
applyCancelOrder() {
|
||||
let params = {
|
||||
orderInfo: this.servDetail.mainServOrder
|
||||
|
|
@ -708,6 +792,23 @@
|
|||
current: e.currentTarget.dataset.url
|
||||
});
|
||||
},
|
||||
async makeCustomerPhoneCall(order) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: order.customerPhone
|
||||
})
|
||||
if (order.orderDetailId == null) {
|
||||
let res = await this.$request.callCustomer({
|
||||
id: order.orderMasterId,
|
||||
isCall: '02'
|
||||
});
|
||||
} else {
|
||||
this.$request.callDetailCustomer({
|
||||
id: order.orderDetailId,
|
||||
isCall: '02'
|
||||
});
|
||||
}
|
||||
this.loadData();
|
||||
},
|
||||
makePhoneCall(phoneNum) {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: phoneNum
|
||||
|
|
@ -740,4 +841,9 @@
|
|||
margin-left: unset !important;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
|
||||
.bottom-option-list-bar {
|
||||
z-index: 99;
|
||||
position: relative;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@
|
|||
}
|
||||
|
||||
.cu-form-group textarea {
|
||||
margin: 0 0 20rpx 0 !important;
|
||||
margin: 20rpx 0 !important;
|
||||
padding: 20rpx !important;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue