完善页面

This commit is contained in:
TOP糯米 2023-03-16 23:24:08 +08:00
parent f5f454a838
commit 8cd7fa2bce
7 changed files with 232 additions and 97 deletions

View File

@ -2,7 +2,7 @@
<view class="component-order-action"> <view class="component-order-action">
<block v-if="order.listType == 't1' || order.listType == 't2'"> <block v-if="order.listType == 't1' || order.listType == 't2'">
<block v-if="order.state == 1"> <block v-if="order.state == 1">
<view class="btn normal">户支付</view> <view class="btn normal">户支付</view>
</block> </block>
<block v-if="order.state == 2"> <block v-if="order.state == 2">
<view class="btn active" @click.stop="confirmPrice"> <view class="btn active" @click.stop="confirmPrice">
@ -10,10 +10,10 @@
</view> </view>
</block> </block>
<block v-if="order.state == 4"> <block v-if="order.state == 4">
<view class="btn normal">户支付尾款</view> <view class="btn normal">户支付尾款</view>
</block> </block>
<block v-if="order.state == 5"> <block v-if="order.state == 5">
<view class="btn normal">户确认</view> <view class="btn normal">户确认</view>
</block> </block>
<block v-if="order.state == 6"> <block v-if="order.state == 6">
<view class="btn normal">已完成</view> <view class="btn normal">已完成</view>
@ -21,7 +21,7 @@
</block> </block>
<block v-if="order.listType == 't3'"> <block v-if="order.listType == 't3'">
<block v-if="order.state == 2"> <block v-if="order.state == 2">
<view class="btn normal">户确认</view> <view class="btn normal">户确认</view>
</block> </block>
<block v-if="order.state == 3"> <block v-if="order.state == 3">
<view class="btn normal">已完成</view> <view class="btn normal">已完成</view>

View File

@ -63,7 +63,7 @@ export default {
components: {}, components: {},
created() {}, created() {},
mounted() { mounted() {
let [typeText, typeTextBg] = this.$models.order.orderTypeText(this.order.listType, this.order.orderType); let [typeText, typeTextBg] = this.$models.order.typeText(this.order.listType, this.order.orderType);
this.typeText = typeText; this.typeText = typeText;
this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb"; this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
}, },

View File

@ -5,7 +5,7 @@ const apis = {
showLoading: true, showLoading: true,
}, },
serviceData: { serviceData: {
url: "/user/workerinfo/datainfo", url: "/user/workerorder/datainfo",
showLoading: true, showLoading: true,
auth: true, auth: true,
}, },
@ -114,6 +114,23 @@ const apis = {
auth: true, auth: true,
}, },
}, },
detail: {
t1: {
url: "/user/workerorderb/orderinfo",
showLoading: true,
auth: true,
},
t2: {
url: "/user/workerorderc/orderinfobyid",
showLoading: true,
auth: true,
},
t3: {
url: "/user/workerorder/getcarorderinfobyid",
showLoading: true,
auth: true,
},
},
finish: { finish: {
t1: { t1: {
url: "/user/workerorderb/orderok", url: "/user/workerorderb/orderok",

View File

@ -2,7 +2,7 @@ import Vue from "vue"
let prototype = Vue.prototype; let prototype = Vue.prototype;
export default { export default {
orderTypeText(listType, orderType) { typeText(listType, orderType) {
switch (listType) { switch (listType) {
case "t1": return ["购买服务", "#3ABCF6"]; case "t1": return ["购买服务", "#3ABCF6"];
case "t2": case "t2":
@ -13,6 +13,37 @@ export default {
case "t3": return ["货运", "#628BE7"]; case "t3": return ["货运", "#628BE7"];
} }
}, },
stateText(listType, orderType, state) {
if (listType == 't1') {
switch (state) {
case 2: return ['服务中'];
case 4: return ['待支付尾款'];
case 5: return ['待客户确认'];
case 6: return ['订单已完成'];
case 7: return ['退款申请审核中'];
case 8: return ['已退款'];
case 9: return ['退款未通过'];
}
} else if (listType == 't2') {
switch (state) {
case 1: return ['待客户支付'];
case 2: return ['服务中'];
case 4: return ['待支付尾款'];
case 5: return ['服务已完成,待确认'];
case 6: return ['订单已完成'];
case 7: return ['退款申请审核中'];
case 8: return ['已退款'];
case 9: return ['退款未通过'];
}
} else if (listType == 't3') {
switch (state) {
case 2: return ['待客户确认'];
case 3: return ['已完成'];
}
}
return ['未知'];
},
/** /**
* 获取列表 * 获取列表
*/ */
@ -21,7 +52,6 @@ export default {
prototype.$request(options.request).then(response => { prototype.$request(options.request).then(response => {
if (response.code == 1) { if (response.code == 1) {
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 => {
list.push({ list.push({
@ -68,10 +98,52 @@ 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) {
return resolve(response.data); let order = {};
if (options.listType == "t1" || options.listType == "t2") {
order = {
listType: options.listType,
id: response.data.id,
orderId: response.data.order,
username: "用户名称",
cate: "待返数据",
content: response.data.desc,
createTime: response.data.time,
serviceTime: response.data.times,
orderType: response.data.types,
state: response.data.status,
price: response.data.money,
orderId: response.data.order,
address: {
address: response.data.address.address,
detail: response.data.address.doorplate,
name: response.data.address.name,
mobile: response.data.address.mobil,
},
};
if (options.listType == "t1") {
order.images = response.data.goods.map((item) => item.thumbnail);
} else {
order.images = response.data.img;
}
} else if (options.listType == "t3") {
order = {
listType: options.listType,
id: response.data.id,
orderId: response.data.order,
username: "用户名称",
cate: "待返数据",
createTime: response.data.times,
serviceTime: response.data.starttime,
pickupAddress: response.data.address,
unloadAddress: response.data.addressb,
state: response.data.status,
price: response.data.money,
};
}
return resolve(order);
} }
return reject(response.msg); return reject(response.msg);
}).catch(e => { }); }).catch(e => { throw e });
}); });
}, },
/** /**

View File

@ -104,7 +104,7 @@
</view> </view>
</view> </view>
</block> </block>
<block v-if="listType == 't1' || (listType == 't2' && order.orderType == 1)"> <block v-if="listType == 't1' || listType == 't3' || (listType == 't2' && order.orderType == 1)">
<view class="detail-section"> <view class="detail-section">
<text class="price-box">¥ {{ utils.formatNumber(order.price, 2) }}</text> <text class="price-box">¥ {{ utils.formatNumber(order.price, 2) }}</text>
</view> </view>
@ -239,7 +239,7 @@ export default {
listType: this.listType, listType: this.listType,
}) })
.then((order) => { .then((order) => {
let [typeText, typeTextBg] = this.$models.order.orderTypeText(this.listType, order.orderType); let [typeText, typeTextBg] = this.$models.order.typeText(this.listType, order.orderType);
this.typeText = typeText; this.typeText = typeText;
this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb"; this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
this.order = order; this.order = order;

View File

@ -138,7 +138,12 @@ export default {
this.$request({ this.$request({
api: "system.serviceData", api: "system.serviceData",
}).then((response) => { }).then((response) => {
console.log(response); if (response.code == 1) {
this.action.item1 = response.data.order1;
this.action.item2 = response.data.order2;
this.action.item3 = response.data.order3;
this.action.item4 = response.data.order4;
}
}); });
}, },
onReady() {}, onReady() {},

View File

@ -4,13 +4,13 @@
<view class="detail-section"> <view class="detail-section">
<view class="order-head"> <view class="order-head">
<view class="order-title"> <view class="order-title">
<text class="type" :style="{ backgroundColor: models.order.getOrderTypeColor(order.orderType) }"> <text class="type" :style="{ backgroundColor: typeTextBg }">
{{ models.order.getOrderTypeText(order.orderType) }} {{ typeText }}
</text> </text>
<text class="text">{{ order.username }}-{{ order.cate }}</text> <text class="text">{{ order.username }}-{{ order.cate }}</text>
</view> </view>
<view class="state" :style="{ color: models.order.getOrderStateTextColor(order.state) }"> <view class="state" :style="{ color: stateTextColor }">
{{ models.order.getOrderStateText(order.state) }} {{ stateText }}
</view> </view>
</view> </view>
<view class="order-body"> <view class="order-body">
@ -23,53 +23,95 @@
</view> </view>
</view> </view>
</view> </view>
<view class="detail-section"> <block v-if="listType == 't1' || listType == 't2'">
<view class="section-title">需求信息</view> <view class="detail-section">
<view class="section-content"> <view class="section-title">需求信息</view>
<view class="demand-item"> <view class="section-content">
<view class="title">需求内容</view> <view class="demand-item">
<view class="content"> <view class="title">需求内容</view>
我想要安装一个书柜需要上墙,我想要 安装一个书柜需要上墙,我想要安装一 <view class="content">
个书柜需要上墙个书柜需要上墙个书柜需要上墙 {{ order.content }}
</view>
</view> </view>
</view> <view class="demand-item">
<view class="demand-item"> <view class="title">上门时间</view>
<view class="title">上门时间</view> <view class="content service-time">
<view class="content service-time"> <text class="datetime">
<text class="datetime"> {{ order.serviceTime }}
{{ order.serviceDateTime.date }} </text>
{{ order.serviceDateTime.time[0] }}-{{ order.serviceDateTime.time[1] }} <text class="iconfont icon-bianji"></text>
</text> </view>
<text class="iconfont icon-bianji"></text>
</view> </view>
</view> <view class="demand-item">
<view class="demand-item"> <view class="demand-images">
<view class="demand-images"> <view class="image-box" v-for="(item, index) in order.images" :key="index">
<view class="image-box" v-for="(item, index) in order.images" :key="index"> <image class="image" :src="item" mode="aspectFill" />
<image class="image" :src="item.src" mode="aspectFill" /> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> <view class="detail-section">
<view class="detail-section"> <view class="section-title">上门地址</view>
<view class="section-title">上门地址</view> <view class="address-box">
<view class="address-box"> <text class="iconfont icon-dingwei"></text>
<text class="iconfont icon-dingwei"></text> <view>
<view> <view class="contact limit-line clamp-1">
<view class="contact limit-line clamp-1"> <text class="name">
<text class="name">测试(先生)</text> {{ order.address.name }}({{ order.address.sex == "男" ? "先生" : "女士" }})
<text class="mobile">13108196080</text> </text>
</view> <text class="mobile">{{ order.address.mobile }}</text>
<view class="detail"> </view>
<text>四川省成都市涪城区剑门门路西段书亦烧 仙草(成都七中店) 测试</text> <view class="detail">
<text>{{ order.address.address }}{{ order.address.detail }}</text>
</view>
</view> </view>
</view> </view>
</view> </view>
</view> </block>
<view class="detail-section"> <block v-if="listType == 't3'">
<text class="price-box">¥ {{ utils.formatNumber(order.price, 2) }}</text> <view class="detail-section">
</view> <view class="section-title">取货时间</view>
<view class="section-content">
<view class="demand-item">
<view class="title">上门时间</view>
<view class="content service-time">
<text class="datetime">
{{ order.serviceTime }}
</text>
<text class="iconfont icon-bianji"></text>
</view>
</view>
</view>
</view>
<view class="detail-section">
<view class="section-title">取货地址</view>
<view class="address-box">
<text class="iconfont icon-dingwei"></text>
<view>
<view class="detail">
<text>{{ order.pickupAddress }}</text>
</view>
</view>
</view>
</view>
<view class="detail-section">
<view class="section-title">卸货地址</view>
<view class="address-box">
<text class="iconfont icon-dingwei"></text>
<view>
<view class="detail">
<text>{{ order.unloadAddress }}</text>
</view>
</view>
</view>
</view>
</block>
<block v-if="listType == 't1' || listType == 't3' || (listType == 't2' && order.orderType == 1)">
<view class="detail-section">
<text class="price-box">¥ {{ utils.formatNumber(order.price, 2) }}</text>
</view>
</block>
</view> </view>
<view class="common-bottom-components" :style="{ bottom: pageConfig.safeAreaInsets.bottom + 'px' }"> <view class="common-bottom-components" :style="{ bottom: pageConfig.safeAreaInsets.bottom + 'px' }">
<view class="service" @click="utils.serviceActions()"> <view class="service" @click="utils.serviceActions()">
@ -77,11 +119,10 @@
<text class="text">客服</text> <text class="text">客服</text>
</view> </view>
<view class="action"> <view class="action">
<order-action :order="order" @confirmPrice="confirmPrice(order.id)" /> <order-action :order="order" @confirmPrice="showPriceModal(order.id)" />
</view> </view>
</view> </view>
<order-confirm-price v-show="showConfirmModal" @close="showConfirmModal = false" @confirm="showConfirmModal = false" /> <order-confirm-price v-show="showConfirmModal" @close="showConfirmModal = false" @confirm="finishOrder" />
<get-post-price v-show="showPriceModal" @close="showPriceModal = false" @confirm="showPriceModal = false" />
</app-layout> </app-layout>
</template> </template>
@ -90,7 +131,6 @@ import AppLayout from "@/components/layout/layout";
import OrderAction from "@/components/order/action"; import OrderAction from "@/components/order/action";
import GetAction from "@/components/get/action"; import GetAction from "@/components/get/action";
import OrderConfirmPrice from "@/components/order/confirm-price"; import OrderConfirmPrice from "@/components/order/confirm-price";
import GetPostPrice from "@/components/get/post-price";
export default { export default {
name: "order-detail", name: "order-detail",
data() { data() {
@ -98,39 +138,14 @@ export default {
utils: this.$utils, utils: this.$utils,
models: this.$models, models: this.$models,
pageConfig: {}, pageConfig: {},
showPriceModal: false,
showConfirmModal: false, showConfirmModal: false,
listType: "", listType: "",
typeText: "", typeText: "",
typeTextBg: "", typeTextBg: "",
stateText: "",
stateTextColor: "",
order: { order: {
id: 1, address: {},
orderId: "xxgfdkgn1223",
cate: "家具安装",
content: "我想要安装一个书柜,需要上墙啊啊啊啊",
createTime: "2022-10-18 10:56:34",
serviceDateTime: {
date: "2022-10-18",
time: ["14:00", "18:00"],
},
orderType: 2,
state: 1,
price: 306,
username: "李先生",
images: [
{
src: require("@/static/temp/cate/1.png"),
},
{
src: require("@/static/temp/cate/1.png"),
},
{
src: require("@/static/temp/cate/1.png"),
},
{
src: require("@/static/temp/cate/1.png"),
},
],
}, },
}; };
}, },
@ -139,9 +154,8 @@ export default {
OrderAction, OrderAction,
GetAction, GetAction,
OrderConfirmPrice, OrderConfirmPrice,
GetPostPrice,
}, },
async onLoad(e) { onLoad(e) {
this.pageConfig = getApp().globalData.pageConfig; this.pageConfig = getApp().globalData.pageConfig;
if (e.id && e.id > 0) { if (e.id && e.id > 0) {
this.id = e.id; this.id = e.id;
@ -149,11 +163,8 @@ export default {
this.$utils.toast("参数错误"); this.$utils.toast("参数错误");
return; return;
} }
this.listType = e.type; this.listType = e.list;
await this.loadDetail(); this.loadDetail();
let [typeText, typeTextBg] = this.$models.order.orderTypeText(this.listType, this.order.orderType);
this.typeText = typeText;
this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
}, },
onShow() {}, onShow() {},
onReady() {}, onReady() {},
@ -172,10 +183,34 @@ export default {
}, },
}); });
}, },
confirmPrice(id) { showPriceModal(id) {
this.$store.commit("order/setConfirmId", id); this.$store.commit("order/setConfirmId", id);
this.showConfirmModal = true; this.showConfirmModal = true;
}, },
/**
* 确认订单
*/
finishOrder(e) {
this.showConfirmModal = false;
this.$models.order
.finishOrder({
request: {
api: "order.finish." + this.listType,
data: {
id: e.id,
money: e.price,
},
},
})
.then((response) => {
this.$utils.toast(response.msg).then(() => {
this.loadDetail();
});
})
.catch((e) => {
this.$utils.toast(e);
});
},
/** /**
* 订单详情 * 订单详情
*/ */
@ -190,8 +225,14 @@ export default {
}, },
listType: this.listType, listType: this.listType,
}) })
.then((response) => { .then((order) => {
console.log(response); let [typeText, typeTextBg] = this.$models.order.typeText(this.listType, order.orderType);
this.typeText = typeText;
this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
let [stateText, stateTextColor] = this.$models.order.stateText(this.listType, order.orderType, order.state);
this.stateText = stateText;
this.stateTextColor = stateTextColor ? stateTextColor : "#999999";
this.order = order;
}); });
}, },
}, },