完善用户订单列表

This commit is contained in:
TOP糯米 2023-03-16 01:52:59 +08:00
parent 11a402a8f2
commit 9fff9695b3
4 changed files with 134 additions and 53 deletions

View File

@ -91,10 +91,12 @@ export default {
WorkerItem, WorkerItem,
}, },
async created() { async created() {
for (let index = 0; index < 3; index++) { if (this.$utils.isType(this.order.workerList, "array")) {
if (this.order.workerList[index]) { for (let index = 0; index < 3; index++) {
this.previewWorkerList.push(this.order.workerList[index]); if (this.order.workerList[index]) {
} else break; this.previewWorkerList.push(this.order.workerList[index]);
} else break;
}
} }
let [stateText, stateDesc, stateTextColor] = await this.$models.order.stateText( let [stateText, stateDesc, stateTextColor] = await this.$models.order.stateText(
this.order.listType, this.order.listType,

View File

@ -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 { export default {
time, time,
datetime, datetime,
@ -281,4 +308,5 @@ export default {
formatNumber, formatNumber,
serviceActions, serviceActions,
chooseImage, chooseImage,
isType,
} }

View File

@ -100,6 +100,7 @@ export default {
let list = []; let list = [];
if (options.listType == 't1' || options.listType == 't2') { if (options.listType == 't1' || options.listType == 't2') {
response.data.forEach((item) => { response.data.forEach((item) => {
// 基础数据
let order = { let order = {
listType: options.listType, listType: options.listType,
id: item.id, id: item.id,
@ -113,7 +114,8 @@ export default {
state: item.status, state: item.status,
workerList: [], workerList: [],
}; };
if (item.shifu) { // 师傅
if (prototype.$utils.isType(item.shifu, "object")) {
order.worker = { order.worker = {
id: item.shifu.id, id: item.shifu.id,
name: item.shifu.name, name: item.shifu.name,
@ -125,6 +127,7 @@ export default {
price: item.money, price: item.money,
} }
} }
// 师傅列表
if (options.listType == 't2' && item.shifus.length > 0) { if (options.listType == 't2' && item.shifus.length > 0) {
item.shifus.forEach(worker => { item.shifus.forEach(worker => {
order.workerList.push({ order.workerList.push({
@ -143,15 +146,14 @@ export default {
listType: options.listType, listType: options.listType,
id: item.id, id: item.id,
orderId: item.order, orderId: item.order,
cate: "待返数据", cate: "货运订单",
content: item.desc, content: item.desc,
createTime: item.time, createTime: item.times,
serviceTime: item.times, serviceTime: item.starttime,
orderType: item.types, orderType: item.types,
price: item.money, price: item.money,
state: item.status, state: item.status,
worker: item.shifu, worker: item.shifu,
workerList: [],
}; };
list.push(order); list.push(order);
}); });
@ -159,7 +161,7 @@ export default {
return resolve(list); return resolve(list);
} }
return reject(response.msg); return reject(response.msg);
}).catch(e => { }); }).catch(e => { throw e });
}); });
}, },
/** /**
@ -169,40 +171,76 @@ export default {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
prototype.$request(options.request).then(response => { prototype.$request(options.request).then(response => {
if (response.code == 1) { if (response.code == 1) {
let order = {}; let order = {}, data = response.data;
if (options.listType == 't1' || options.listType == 't2') { if (options.listType == 't1' || options.listType == 't2') {
// 基础信息
order = { order = {
id: response.data.id, id: data.id,
address: response.data.address, orderId: data.order,
orderId: response.data.order,
cate: "待返数据", cate: "待返数据",
content: response.data.desc, content: data.desc,
createTime: response.data.time, createTime: data.time,
serviceTime: response.data.times, serviceTime: data.times,
orderType: response.data.types, orderType: data.types,
state: response.data.status, state: data.status,
images: response.data.img, images: prototype.$utils.isType(data.img, "array") ? data.img : [],
worker: {},
workerList: [], 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') { } else if (options.listType == 't3') {
order = { order = {
id: response.data.id, id: 1,
address: response.data.address, orderId: 2,
orderId: response.data.order, cate: "货运订单",
cate: "待返数据", content: 4,
content: response.data.desc, createTime: 5,
createTime: response.data.time, serviceTime: 6,
serviceTime: response.data.times, orderType: 7,
orderType: response.data.types, state: 8,
state: response.data.status, images: 9,
images: response.data.img,
workerList: [],
}; };
} }
return resolve(order); return resolve(order);
} }
return reject(response.msg); return reject(response.msg);
}).catch(e => { }); }).catch(e => {
throw e
});
}); });
}, },
} }

View File

@ -24,22 +24,27 @@
> >
<swiper-item> <swiper-item>
<view class="detail-tab tab0"> <view class="detail-tab tab0">
<!-- 师傅列表 --> <block v-if="listType == 't2' && order.orderType == 2 && order.workerList.length == 0">
<view class="worker-group"> <view class="no-worker"> 暂无师傅报价 </view>
<view class="worker-item" v-for="(item, index) in order.workerList" :key="index"> </block>
<view class="datetime"> 2022-10-18 10:56:34</view> <!-- 报价订单未选择师傅展示师傅列表 -->
<view class="price"> <block v-if="utils.isType(order.workerList, 'array') && order.workerList.length > 0">
<text class="title">报价金额</text> <view class="worker-group">
<text class="number">¥ 306.00</text> <view class="worker-item" v-for="(item, index) in order.workerList" :key="index">
</view> <view class="datetime">{{ item.createTime }}</view>
<view class="detail" @click="workerDetail(item.id)"> <view class="price">
<worker-item :data="item" /> <text class="title">报价金额</text>
</view> <text class="number">¥ {{ utils.formatNumber(item.price, 2) }}</text>
<view class="action"> </view>
<view class="btn" @click="chooseWorker(item.id)">选择师傅</view> <view class="detail" @click="workerDetail(item.id)">
<worker-item :data="item" :showPrice="false" />
</view>
<view class="action">
<view class="btn" @click="chooseWorker(item.id)">选择师傅</view>
</view>
</view> </view>
</view> </view>
</view> </block>
</view> </view>
</swiper-item> </swiper-item>
<swiper-item> <swiper-item>
@ -79,12 +84,12 @@
<view> <view>
<view class="contact limit-line clamp-1"> <view class="contact limit-line clamp-1">
<text class="name"> <text class="name">
{{ order.address.name }}({{ order.address.sex == "男" ? "先生" : "女士" }}) {{ order.address.name }}({{ order.address.gender == 1 ? "先生" : "女士" }})
</text> </text>
<text class="mobile">{{ order.address.mobil }}</text> <text class="mobile">{{ order.address.mobile }}</text>
</view> </view>
<view class="detail"> <view class="detail">
<text>{{ order.address.address }}{{ order.address.doorplate }}</text> <text>{{ order.address.address }}{{ order.address.detail }}</text>
</view> </view>
</view> </view>
</view> </view>
@ -161,15 +166,14 @@ export default {
this.$utils.toPage("", {}, "back"); this.$utils.toPage("", {}, "back");
}); });
} }
if (e.list) {
this.listType = e.list;
}
if (e.tab && e.tab == "detail") { if (e.tab && e.tab == "detail") {
this.switchTab(1); this.switchTab(1);
} else { } else {
this.switchTab(0); this.switchTab(0);
} }
if (e.list) {
this.listType = e.list;
}
this.loadDetail(); this.loadDetail();
}, },
onShow() {}, onShow() {},
@ -253,6 +257,9 @@ export default {
this.stateDesc = stateDesc; this.stateDesc = stateDesc;
this.stateTextColor = stateTextColor; this.stateTextColor = stateTextColor;
this.order = detail; this.order = detail;
this.$nextTick(() => {
this.setTabHeight();
});
}) })
.catch((e) => { .catch((e) => {
this.$utils.toast(e).then(() => { this.$utils.toast(e).then(() => {
@ -319,6 +326,12 @@ export default {
} }
.detail-tab { .detail-tab {
width: 100%; width: 100%;
.no-worker {
color: #999999;
font-size: 28rpx;
line-height: 200rpx;
text-align: center;
}
} }
.worker-group { .worker-group {
width: 100%; width: 100%;