From 9fff9695b38aa12292498ac9675d001105e728d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?TOP=E7=B3=AF=E7=B1=B3?= <1130395124@qq.com> Date: Thu, 16 Mar 2023 01:52:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=94=A8=E6=88=B7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/order/item.vue | 10 ++-- src/core/libs/utils.js | 28 +++++++++++ src/core/models/order.js | 94 ++++++++++++++++++++++++----------- src/pages/order/detail.vue | 55 ++++++++++++-------- 4 files changed, 134 insertions(+), 53 deletions(-) diff --git a/src/components/order/item.vue b/src/components/order/item.vue index f1e67aa..281a765 100644 --- a/src/components/order/item.vue +++ b/src/components/order/item.vue @@ -91,10 +91,12 @@ export default { WorkerItem, }, async created() { - for (let index = 0; index < 3; index++) { - if (this.order.workerList[index]) { - this.previewWorkerList.push(this.order.workerList[index]); - } else break; + if (this.$utils.isType(this.order.workerList, "array")) { + for (let index = 0; index < 3; index++) { + if (this.order.workerList[index]) { + this.previewWorkerList.push(this.order.workerList[index]); + } else break; + } } let [stateText, stateDesc, stateTextColor] = await this.$models.order.stateText( this.order.listType, diff --git a/src/core/libs/utils.js b/src/core/libs/utils.js index 5d531e0..2e04e2f 100644 --- a/src/core/libs/utils.js +++ b/src/core/libs/utils.js @@ -266,6 +266,33 @@ function chooseImage(count) { }); } +function isType(param, type) { + let t = ''; + switch (type) { + case "number": + t = "[object Number]"; + break; + case "object": + t = "[object Object]"; + break; + case "array": + t = "[object Array]"; + break; + case "string": + t = "[object String]"; + break; + case "null": + t = "[object Null]"; + break; + case "undefined": + t = "[object Undefined]"; + break; + default: + throw "没有比对的类型"; + } + return Object.prototype.toString.call(param) === t; +} + export default { time, datetime, @@ -281,4 +308,5 @@ export default { formatNumber, serviceActions, chooseImage, + isType, } diff --git a/src/core/models/order.js b/src/core/models/order.js index 41028cb..5a7a9c4 100644 --- a/src/core/models/order.js +++ b/src/core/models/order.js @@ -100,6 +100,7 @@ export default { let list = []; if (options.listType == 't1' || options.listType == 't2') { response.data.forEach((item) => { + // 基础数据 let order = { listType: options.listType, id: item.id, @@ -113,7 +114,8 @@ export default { state: item.status, workerList: [], }; - if (item.shifu) { + // 师傅 + if (prototype.$utils.isType(item.shifu, "object")) { order.worker = { id: item.shifu.id, name: item.shifu.name, @@ -125,6 +127,7 @@ export default { price: item.money, } } + // 师傅列表 if (options.listType == 't2' && item.shifus.length > 0) { item.shifus.forEach(worker => { order.workerList.push({ @@ -143,15 +146,14 @@ export default { listType: options.listType, id: item.id, orderId: item.order, - cate: "待返数据", + cate: "货运订单", content: item.desc, - createTime: item.time, - serviceTime: item.times, + createTime: item.times, + serviceTime: item.starttime, orderType: item.types, price: item.money, state: item.status, worker: item.shifu, - workerList: [], }; list.push(order); }); @@ -159,7 +161,7 @@ export default { return resolve(list); } return reject(response.msg); - }).catch(e => { }); + }).catch(e => { throw e }); }); }, /** @@ -169,40 +171,76 @@ export default { return new Promise((resolve, reject) => { prototype.$request(options.request).then(response => { if (response.code == 1) { - let order = {}; + let order = {}, data = response.data; if (options.listType == 't1' || options.listType == 't2') { + // 基础信息 order = { - id: response.data.id, - address: response.data.address, - orderId: response.data.order, + id: data.id, + orderId: data.order, cate: "待返数据", - content: response.data.desc, - createTime: response.data.time, - serviceTime: response.data.times, - orderType: response.data.types, - state: response.data.status, - images: response.data.img, + content: data.desc, + createTime: data.time, + serviceTime: data.times, + orderType: data.types, + state: data.status, + images: prototype.$utils.isType(data.img, "array") ? data.img : [], + worker: {}, workerList: [], }; + // 地址 + order.address = { + id: data.address.id, + address: data.address.address, + detail: data.address.doorplate, + name: data.address.name, + mobile: data.address.mobil, + gender: data.address.sex == "男" ? 1 : 2, + } + // 师傅 + if (prototype.$utils.isType(data.shifu, "object")) { + order.worker = { + id: data.shifu.id, + name: data.shifu.name, + avatar: data.shifu.avatar, + type: data.shifu.status, + price: data.money, + } + } + // 师傅列表 + if (options.listType == 't2' && data.shifus.length > 0) { + data.shifus.forEach(worker => { + order.workerList.push({ + id: worker.id, + name: worker.name, + avatar: worker.avatar, + price: worker.money, + createTime: worker.date, + times: worker.data.count, + favorableRate: worker.data.good, + grade: worker.data.score, + type: worker.data.status, + }) + }); + } } else if (options.listType == 't3') { order = { - id: response.data.id, - address: response.data.address, - orderId: response.data.order, - cate: "待返数据", - content: response.data.desc, - createTime: response.data.time, - serviceTime: response.data.times, - orderType: response.data.types, - state: response.data.status, - images: response.data.img, - workerList: [], + id: 1, + orderId: 2, + cate: "货运订单", + content: 4, + createTime: 5, + serviceTime: 6, + orderType: 7, + state: 8, + images: 9, }; } return resolve(order); } return reject(response.msg); - }).catch(e => { }); + }).catch(e => { + throw e + }); }); }, } diff --git a/src/pages/order/detail.vue b/src/pages/order/detail.vue index cca1131..6a18d00 100644 --- a/src/pages/order/detail.vue +++ b/src/pages/order/detail.vue @@ -24,22 +24,27 @@ > - - - - 2022-10-18 10:56:34 - - 报价金额 - ¥ 306.00 - - - - - - 选择师傅 + + 暂无师傅报价 + + + + + + {{ item.createTime }} + + 报价金额 + ¥ {{ utils.formatNumber(item.price, 2) }} + + + + + + 选择师傅 + - + @@ -79,12 +84,12 @@ - {{ order.address.name }}({{ order.address.sex == "男" ? "先生" : "女士" }}) + {{ order.address.name }}({{ order.address.gender == 1 ? "先生" : "女士" }}) - {{ order.address.mobil }} + {{ order.address.mobile }} - {{ order.address.address }}{{ order.address.doorplate }} + {{ order.address.address }}{{ order.address.detail }} @@ -161,15 +166,14 @@ export default { this.$utils.toPage("", {}, "back"); }); } + if (e.list) { + this.listType = e.list; + } if (e.tab && e.tab == "detail") { this.switchTab(1); } else { this.switchTab(0); } - if (e.list) { - this.listType = e.list; - } - this.loadDetail(); }, onShow() {}, @@ -253,6 +257,9 @@ export default { this.stateDesc = stateDesc; this.stateTextColor = stateTextColor; this.order = detail; + this.$nextTick(() => { + this.setTabHeight(); + }); }) .catch((e) => { this.$utils.toast(e).then(() => { @@ -319,6 +326,12 @@ export default { } .detail-tab { width: 100%; + .no-worker { + color: #999999; + font-size: 28rpx; + line-height: 200rpx; + text-align: center; + } } .worker-group { width: 100%;