完善用户订单列表

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,
},
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,

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

View File

@ -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
});
});
},
}

View File

@ -24,22 +24,27 @@
>
<swiper-item>
<view class="detail-tab tab0">
<!-- 师傅列表 -->
<view class="worker-group">
<view class="worker-item" v-for="(item, index) in order.workerList" :key="index">
<view class="datetime"> 2022-10-18 10:56:34</view>
<view class="price">
<text class="title">报价金额</text>
<text class="number">¥ 306.00</text>
</view>
<view class="detail" @click="workerDetail(item.id)">
<worker-item :data="item" />
</view>
<view class="action">
<view class="btn" @click="chooseWorker(item.id)">选择师傅</view>
<block v-if="listType == 't2' && order.orderType == 2 && order.workerList.length == 0">
<view class="no-worker"> 暂无师傅报价 </view>
</block>
<!-- 报价订单未选择师傅展示师傅列表 -->
<block v-if="utils.isType(order.workerList, 'array') && order.workerList.length > 0">
<view class="worker-group">
<view class="worker-item" v-for="(item, index) in order.workerList" :key="index">
<view class="datetime">{{ item.createTime }}</view>
<view class="price">
<text class="title">报价金额</text>
<text class="number">¥ {{ utils.formatNumber(item.price, 2) }}</text>
</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>
</block>
</view>
</swiper-item>
<swiper-item>
@ -79,12 +84,12 @@
<view>
<view class="contact limit-line clamp-1">
<text class="name">
{{ order.address.name }}({{ order.address.sex == "男" ? "先生" : "女士" }})
{{ order.address.name }}({{ order.address.gender == 1 ? "先生" : "女士" }})
</text>
<text class="mobile">{{ order.address.mobil }}</text>
<text class="mobile">{{ order.address.mobile }}</text>
</view>
<view class="detail">
<text>{{ order.address.address }}{{ order.address.doorplate }}</text>
<text>{{ order.address.address }}{{ order.address.detail }}</text>
</view>
</view>
</view>
@ -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%;