diff --git a/src/components/order/action.vue b/src/components/order/action.vue index f57a534..6411ed7 100644 --- a/src/components/order/action.vue +++ b/src/components/order/action.vue @@ -7,22 +7,22 @@ order.state == $models.order.state.NO_SELECT_WORKER " > - + 取消订单 - + 评价师傅 - + 申请退款 - + 重新申请 diff --git a/src/components/order/item.vue b/src/components/order/item.vue index 7c0d3bc..1876337 100644 --- a/src/components/order/item.vue +++ b/src/components/order/item.vue @@ -1,9 +1,8 @@ @@ -102,7 +134,6 @@ export default { .state-text { font-size: 30rpx; font-weight: bold; - color: #000000; } .more { font-size: 26rpx; @@ -141,8 +172,60 @@ export default { .row:last-child { margin-bottom: 0; } + .worker-box { + width: 100%; + } } .order-footer { width: 100%; } +.worker-list-group { + width: 100%; + display: flex; + justify-content: space-between; + align-items: flex-end; + padding: 20rpx 0 10rpx 0; + .list-group { + display: flex; + } + .list-item:first-child { + margin-left: 0; + } + .list-item { + display: flex; + align-items: center; + flex-direction: column; + margin-left: 36rpx; + .cover { + width: 110rpx; + height: 110rpx; + box-sizing: border-box; + border-radius: 50%; + overflow: hidden; + margin-bottom: 8rpx; + } + .price { + font-size: 26rpx; + font-weight: bold; + color: #ec7655; + } + } + .more-worker { + display: flex; + align-items: center; + .text { + font-size: 26rpx; + font-weight: bold; + color: #666666; + } + .iconfont { + font-size: 32rpx; + color: #a7a7a7; + } + } +} +.worker-item-box { + width: 100%; + padding: 20rpx 0 10rpx 0; +} \ No newline at end of file diff --git a/src/components/worker/item.vue b/src/components/worker/item.vue new file mode 100644 index 0000000..4b78d34 --- /dev/null +++ b/src/components/worker/item.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/src/core/models.js b/src/core/models.js index d8bf091..28abc40 100644 --- a/src/core/models.js +++ b/src/core/models.js @@ -1,7 +1,9 @@ import order from "@/core/models/order"; import user from "@/core/models/user"; +import worker from "@/core/models/worker"; export default { order, user, + worker, } diff --git a/src/core/models/order.js b/src/core/models/order.js index c73a336..4c6eec7 100644 --- a/src/core/models/order.js +++ b/src/core/models/order.js @@ -13,7 +13,21 @@ export default { NO_APPRAISE: 3, ALL_FINISH: 4, }, - parseOrderStateText(state) { + getOrderStateTextColor(state) { + switch (state) { + case this.state.NO_PAY: + return '#000000'; + case this.state.NO_PRICE: + return '#000000'; + case this.state.NO_SELECT_WORKER: + return '#000000'; + case this.state.NO_SERVICE: + return '#000000'; + default: + return '#ff0000'; + } + }, + getOrderStateText(state) { switch (state) { case this.state.NO_PAY: return '待支付'; diff --git a/src/core/models/worker.js b/src/core/models/worker.js new file mode 100644 index 0000000..2417af0 --- /dev/null +++ b/src/core/models/worker.js @@ -0,0 +1,26 @@ +export default { + type: { + NORMAL: 1, + SETTLE: 2, + }, + getWorkerTypeTextColor(type) { + switch (type) { + case this.type.NORMAL: + return '#179C43'; + case this.type.SETTLE: + return '#D9A019'; + default: + return '#999999'; + } + }, + getWorkerTypeText(type) { + switch (type) { + case this.type.NORMAL: + return '普通师傅'; + case this.type.SETTLE: + return '入驻师傅'; + default: + return '未知'; + } + } +} \ No newline at end of file diff --git a/src/pages/order/detail.vue b/src/pages/order/detail.vue index 4abd9f6..8cb6891 100644 --- a/src/pages/order/detail.vue +++ b/src/pages/order/detail.vue @@ -1,6 +1,35 @@ @@ -9,18 +38,146 @@ import AppLayout from "@/components/layout/layout"; export default { name: "order-detail", data() { - return {}; + return { + tabIndex: 0, + tabHeight: 0, + order: { + id: 1, + orderId: "xxgfdkgn1223", + cate: "家具安装", + explain: "我想要安装一个书柜,需要上墙啊啊啊啊", + createTime: "2022-10-18 10:56:34", + serviceTime: "2022-10-18 10:56:34", + orderType: 2, + state: 1, + worker: { + id: 1, + name: "张师傅", + cover: require("@/static/temp/order/1.png"), + price: 306.0, + type: 1, + times: 687, + favorable_rate: 99.8, + grade: 4.5, + }, + workerList: [ + { + id: 1, + name: "张师傅", + cover: require("@/static/temp/order/1.png"), + price: 306.0, + type: 1, + times: 687, + favorable_rate: 99.8, + grade: 4.5, + }, + { + id: 1, + name: "王师傅", + cover: require("@/static/temp/order/1.png"), + price: 306.0, + type: 1, + times: 687, + favorable_rate: 99.8, + grade: 4.5, + }, + { + id: 1, + name: "李师傅", + cover: require("@/static/temp/order/1.png"), + price: 306.0, + type: 1, + times: 687, + favorable_rate: 99.8, + grade: 4.5, + }, + ], + }, + }; }, components: { AppLayout, }, - onLoad() {}, + onLoad(e) { + if (e.type && e.type == "detail") { + this.switchTab(1); + } else { + this.switchTab(0); + } + }, onShow() {}, onReady() {}, onReachBottom() {}, onPullDownRefresh() {}, - methods: {}, + methods: { + switchTab(index) { + this.tabIndex = index; + this.$nextTick(() => { + this.setTabHeight(); + }); + }, + changeTab(e) { + this.switchTab(e.detail.current); + }, + setTabHeight() { + let element = ".tab" + this.tabIndex; + let query = uni.createSelectorQuery().in(this); + query.select(element).boundingClientRect(); + query.exec((res) => { + if (res && res[0]) { + this.tabHeight = res[0].height; + } + }); + }, + }, }; - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/order/order.vue b/src/pages/order/order.vue index ba440a3..6fb82e0 100644 --- a/src/pages/order/order.vue +++ b/src/pages/order/order.vue @@ -1,6 +1,6 @@