完善页面

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

View File

@ -63,7 +63,7 @@ export default {
components: {},
created() {},
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.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
},

View File

@ -5,7 +5,7 @@ const apis = {
showLoading: true,
},
serviceData: {
url: "/user/workerinfo/datainfo",
url: "/user/workerorder/datainfo",
showLoading: true,
auth: true,
},
@ -114,6 +114,23 @@ const apis = {
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: {
t1: {
url: "/user/workerorderb/orderok",

View File

@ -2,7 +2,7 @@ import Vue from "vue"
let prototype = Vue.prototype;
export default {
orderTypeText(listType, orderType) {
typeText(listType, orderType) {
switch (listType) {
case "t1": return ["购买服务", "#3ABCF6"];
case "t2":
@ -13,6 +13,37 @@ export default {
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 => {
if (response.code == 1) {
let list = [];
if (options.listType == "t1" || options.listType == "t2") {
response.data.forEach(item => {
list.push({
@ -68,10 +98,52 @@ export default {
return new Promise((resolve, reject) => {
prototype.$request(options.request).then(response => {
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);
}).catch(e => { });
}).catch(e => { throw e });
});
},
/**

View File

@ -104,7 +104,7 @@
</view>
</view>
</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">
<text class="price-box">¥ {{ utils.formatNumber(order.price, 2) }}</text>
</view>
@ -239,7 +239,7 @@ export default {
listType: this.listType,
})
.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.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
this.order = order;

View File

@ -138,7 +138,12 @@ export default {
this.$request({
api: "system.serviceData",
}).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() {},

View File

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