From b4ad20eac3500d830abca6d388dcf698e5938d8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?TOP=E7=B3=AF=E7=B1=B3?= <1130395124@qq.com>
Date: Tue, 14 Mar 2023 01:12:30 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8E=A5=E5=8D=95=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/get/action.vue | 18 +-
src/components/get/post-price.vue | 18 +-
src/components/order/item.vue | 12 +-
src/core/apis.js | 55 ++++-
src/core/models.js | 4 +-
src/core/models/get.js | 60 +++++
src/core/models/order.js | 31 +--
src/pages.json | 9 +-
src/pages/get/detail.vue | 374 ++++++++++++++++++++++++++++++
src/pages/get/index.vue | 195 +++++++++-------
src/pages/order/detail.vue | 10 +-
11 files changed, 658 insertions(+), 128 deletions(-)
create mode 100644 src/core/models/get.js
create mode 100644 src/pages/get/detail.vue
diff --git a/src/components/get/action.vue b/src/components/get/action.vue
index 8ab56f1..bfc44a3 100644
--- a/src/components/get/action.vue
+++ b/src/components/get/action.vue
@@ -1,11 +1,15 @@
-
- 立即抢单
-
-
- 立即报价
-
+
+
+ 立即抢单
+
+
+
+
+ 立即报价
+
+
@@ -35,7 +39,7 @@ export default {
destroyed() {},
methods: {
getOrder() {
- console.log("获取" + this.order.id);
+ this.$emit("getOrder");
},
postPrice() {
this.$emit("postPrice");
diff --git a/src/components/get/post-price.vue b/src/components/get/post-price.vue
index dee155a..8b73227 100644
--- a/src/components/get/post-price.vue
+++ b/src/components/get/post-price.vue
@@ -14,7 +14,7 @@
1)哈哈哈哈
2)哈哈哈哈哈哈哈哈
- 确认
+ 确认
@@ -42,16 +42,20 @@ export default {
created() {},
mounted() {},
destroyed() {},
- watch: {},
+ watch: {
+ postId() {
+ this.price = 0;
+ },
+ },
methods: {
closeModal() {
- this.$store.commit("order/setConfirmId", 0);
- this.price = 0;
this.$emit("close");
},
- confirmPrice() {
- console.log("当前id:" + this.postId + ",价格:" + this.price);
- this.$emit("confirm");
+ postPrice() {
+ this.$emit("post", {
+ id: this.postId,
+ price: this.price,
+ });
},
},
};
diff --git a/src/components/order/item.vue b/src/components/order/item.vue
index abfb046..02670ac 100644
--- a/src/components/order/item.vue
+++ b/src/components/order/item.vue
@@ -2,8 +2,8 @@
-
- {{ models.order.getOrderTypeText(order.orderType) }}
+
+ {{ typeText }}
{{ order.username }}-{{ order.cate }}
@@ -49,6 +49,8 @@ export default {
data() {
return {
models: this.$models,
+ typeText: "",
+ typeTextBg: "",
};
},
props: {
@@ -59,7 +61,11 @@ export default {
},
components: {},
created() {},
- mounted() {},
+ mounted() {
+ let [typeText, typeTextBg] = this.$models.order.getOrderTypeText(this.order.listType, this.order.orderType);
+ this.typeText = typeText;
+ this.typeTextBg = typeTextBg ? typeTextBg : "#8b9beb";
+ },
destroyed() {},
methods: {},
};
diff --git a/src/core/apis.js b/src/core/apis.js
index 6134745..960fc99 100644
--- a/src/core/apis.js
+++ b/src/core/apis.js
@@ -37,7 +37,60 @@ const apis = {
carType: {
url: "/wxapp/index/getallcar"
},
- }
+ },
+ get: {
+ list: {
+ t1: {
+ url: "/user/workerorderb/getallorder",
+ showLoading: true,
+ auth: true,
+ },
+ t2: {
+ url: "/user/workerorderc/getallorder",
+ showLoading: true,
+ auth: true,
+ },
+ t3: {
+ url: "/user/workerorder/getallcarorder",
+ showLoading: 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,
+ },
+ },
+ getOrder: {
+ t1: {
+ url: "/user/workerorderb/workerorderbyid",
+ showLoading: true,
+ auth: true,
+ },
+ t2: {
+ url: "/user/workerorderc/joinorder",
+ showLoading: true,
+ auth: true,
+ },
+ t3: {
+ url: "/user/workerorder/workerorderbyid",
+ showLoading: true,
+ auth: true,
+ },
+ }
+ },
}
export default apis
diff --git a/src/core/models.js b/src/core/models.js
index 200779e..e4943da 100644
--- a/src/core/models.js
+++ b/src/core/models.js
@@ -3,11 +3,13 @@ import user from "@/core/models/user";
import worker from "@/core/models/worker";
import system from "@/core/models/system";
import service from "@/core/models/service";
+import get from "@/core/models/get";
export default {
order,
user,
worker,
system,
- service
+ service,
+ get
}
diff --git a/src/core/models/get.js b/src/core/models/get.js
new file mode 100644
index 0000000..25e2830
--- /dev/null
+++ b/src/core/models/get.js
@@ -0,0 +1,60 @@
+import Vue from "vue"
+let prototype = Vue.prototype;
+
+export default {
+ /**
+ * 获取列表
+ */
+ getList(options) {
+ return new Promise((resolve, reject) => {
+ prototype.$request(options.request).then(response => {
+ if (response.code == 1) {
+ let list = [];
+ response.data.forEach(item => {
+ list.push({
+ listType: options.listType,
+ id: item.id,
+ orderId: item.order,
+ username: "用户名称",
+ cate: "待返数据",
+ content: item.desc,
+ createTime: item.time,
+ serviceTime: item.times,
+ orderType: item.types,
+ state: item.status,
+ price: item.money,
+ });
+ });
+ return resolve(list);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ },
+ /**
+ * 获取详情
+ */
+ getDetail(options) {
+ return new Promise((resolve, reject) => {
+ prototype.$request(options.request).then(response => {
+ if (response.code == 1) {
+ return resolve(response.data);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ },
+ /**
+ * 接单
+ */
+ getOrder(options) {
+ return new Promise((resolve, reject) => {
+ prototype.$request(options).then(response => {
+ if (response.code == 1) {
+ return resolve(response.msg);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ }
+}
diff --git a/src/core/models/order.js b/src/core/models/order.js
index e52d360..147c3ae 100644
--- a/src/core/models/order.js
+++ b/src/core/models/order.js
@@ -26,28 +26,15 @@ export default {
// 无法退款
CAN_NOT_REFUND: 8,
},
- getOrderTypeColor(type) {
- switch (type) {
- case this.type.NORMAL:
- return '#0ec4ad';
- case this.state.WORKER_PRICE:
- return '#0ec4ad';
- case this.state.CUSTOM_PRICE:
- return '#0ec4ad';
- default:
- return '#ff0000';
- }
- },
- getOrderTypeText(type) {
- switch (type) {
- case this.type.NORMAL:
- return '一口价';
- case this.state.WORKER_PRICE:
- return '报价';
- case this.state.CUSTOM_PRICE:
- return '议价';
- default:
- return '未知';
+ getOrderTypeText(listType, orderType) {
+ switch (listType) {
+ case "t1": return ["购买服务", "#3ABCF6"];
+ case "t2":
+ if (orderType == 1) {
+ return ["一口价", "#3ABCF6"];
+ }
+ return ["报价"];
+ case "t3": return ["货运", "#628BE7"];
}
},
getOrderStateTextColor(state) {
diff --git a/src/pages.json b/src/pages.json
index 2958e11..56e1c6f 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -69,7 +69,14 @@
{
"path": "pages/get/index",
"style": {
- "navigationBarTitleText": "接单大厅"
+ "navigationBarTitleText": "接单大厅",
+ "enablePullDownRefresh": true
+ }
+ },
+ {
+ "path": "pages/get/detail",
+ "style": {
+ "navigationBarTitleText": "单子详情"
}
}
],
diff --git a/src/pages/get/detail.vue b/src/pages/get/detail.vue
new file mode 100644
index 0000000..989c07f
--- /dev/null
+++ b/src/pages/get/detail.vue
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+
+ {{ typeText }}
+
+ {{ order.username }}-{{ order.cate }}
+
+
+
+
+ 订单号:{{ order.orderId }}
+ 复制
+
+
+ {{ order.createTime }}
+
+
+
+
+
+ 需求信息
+
+
+ 需求内容:
+
+ {{ order.content }}
+
+
+
+ 上门时间:
+
+
+ {{ order.serviceTime }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 上门地址
+
+
+
+
+
+ {{ order.address.name }}({{ order.address.sex == "男" ? "先生" : "女士" }})
+
+ {{ order.address.mobile }}
+
+
+ {{ order.address.address }}{{ order.address.detail }}
+
+
+
+
+
+
+
+ 取货时间
+
+
+ 上门时间:
+
+
+ {{ order.serviceTime }}
+
+
+
+
+
+
+
+
+ ¥ {{ utils.formatNumber(order.price, 2) }}
+
+
+
+
+
+ 客服
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/get/index.vue b/src/pages/get/index.vue
index 4abbca4..2bf4a44 100644
--- a/src/pages/get/index.vue
+++ b/src/pages/get/index.vue
@@ -17,14 +17,18 @@
-
+
¥ 306.00
-
+
@@ -43,7 +47,7 @@
刷新列表
-
+
@@ -63,73 +67,24 @@ export default {
tabHeight: 0,
tabList: [
{
- id: 1,
- name: "一口价订单",
- list: [
- {
- id: 1,
- orderId: "xxgfdkgn1223",
- cate: "家具安装",
- content: "我想要安装一个书柜,需要上墙啊啊啊啊",
- createTime: "2022-10-18 10:56:34",
- serviceTime: "2022-10-18 10:56:34",
- orderType: 1,
- state: 1,
- price: 306,
- username: "李先生",
- },
- {
- id: 2,
- orderId: "xxgfdkgn1223",
- cate: "家具安装",
- content: "我想要安装一个书柜,需要上墙啊啊啊啊",
- createTime: "2022-10-18 10:56:34",
- serviceTime: "2022-10-18 10:56:34",
- orderType: 1,
- state: 1,
- price: 306,
- username: "李先生",
- },
- {
- id: 3,
- orderId: "xxgfdkgn1223",
- cate: "家具安装",
- content: "我想要安装一个书柜,需要上墙啊啊啊啊",
- createTime: "2022-10-18 10:56:34",
- serviceTime: "2022-10-18 10:56:34",
- orderType: 1,
- state: 1,
- price: 306,
- username: "李先生",
- },
- ],
- },
- {
- id: 2,
- name: "报价订单",
- list: [
- {
- id: 2,
- orderId: "xxgfdkgn1223",
- cate: "家具安装",
- content: "我想要安装一个书柜,需要上墙啊啊啊啊",
- createTime: "2022-10-18 10:56:34",
- serviceTime: "2022-10-18 10:56:34",
- orderType: 2,
- state: 1,
- price: 306,
- username: "李先生",
- },
- ],
- },
- {
- id: 3,
- name: "指派订单",
+ listType: "t1",
+ name: "购买订单",
+ page: 1,
+ more: true,
list: [],
},
{
- id: 4,
+ listType: "t2",
+ name: "报/议价订单",
+ page: 1,
+ more: true,
+ list: [],
+ },
+ {
+ listType: "t3",
name: "配送订单",
+ page: 1,
+ more: true,
list: [],
},
],
@@ -142,23 +97,28 @@ export default {
GetPostPrice,
},
onLoad() {
- this.$nextTick(() => {
- this.setTabHeight();
- });
+ this.switchTab(0);
},
onShow() {},
onReady() {},
- onReachBottom() {},
- onPullDownRefresh() {},
+ onReachBottom() {
+ this.loadData();
+ },
+ onPullDownRefresh() {
+ this.switchTab(this.tabIndex);
+ uni.stopPullDownRefresh();
+ },
methods: {
+ /**
+ * 切换列表
+ */
switchTab(index) {
this.tabIndex = index;
- this.$nextTick(() => {
- this.setTabHeight();
- });
- },
- changeTab(e) {
- this.switchTab(e.detail.current);
+ let currentTab = this.tabList[index];
+ currentTab.page = 1;
+ currentTab.more = true;
+ currentTab.list = [];
+ this.loadData();
},
setTabHeight() {
let query = uni.createSelectorQuery().in(this);
@@ -169,18 +129,95 @@ export default {
}
});
},
+ /**
+ * 加载数据
+ */
+ loadData() {
+ let currentTab = this.tabList[this.tabIndex];
+ return new Promise((resolve, reject) => {
+ if (!currentTab.more) {
+ return;
+ }
+ this.$models.get
+ .getList({
+ request: {
+ api: "get.list." + currentTab.listType,
+ data: {
+ page: currentTab.page,
+ },
+ },
+ listType: currentTab.listType,
+ })
+ .then((list) => {
+ if (list.length == 0) {
+ currentTab.more = false;
+ } else {
+ currentTab.page++;
+ currentTab.list = currentTab.list.concat(list);
+ }
+ this.$nextTick(() => {
+ this.setTabHeight();
+ });
+ });
+ });
+ },
+ /**
+ * 报价
+ */
postPrice(id) {
this.$store.commit("order/setPostId", id);
this.showPriceModal = true;
},
+ /**
+ * 确认价格
+ */
+ rcvPostPrice(e) {
+ this.showPriceModal = false;
+ this.getOrder({
+ id: e.id,
+ listType: "t2",
+ price: e.price,
+ });
+ },
+ /**
+ * 接单
+ */
+ getOrder(order) {
+ let requestData = {
+ id: order.id,
+ };
+ if (order.price) {
+ requestData.money = order.price;
+ }
+ this.$models.get
+ .getOrder({
+ api: "get.getOrder." + order.listType,
+ data: requestData,
+ })
+ .then((message) => {
+ this.$utils.toast(message).then(() => {
+ this.switchTab(this.tabIndex);
+ });
+ })
+ .catch((e) => {
+ this.$utils.toast(e);
+ });
+ },
setting() {
console.log("设置");
},
+ /**
+ * 刷新列表
+ */
refresh() {
- console.log("刷新");
+ this.switchTab(this.tabIndex);
},
+ /**
+ * 查看详情
+ */
toDetail(id) {
- this.$utils.toPage("/pages/order/detail?type=preview&id=" + id);
+ let currentTab = this.tabList[this.tabIndex];
+ this.$utils.toPage("/pages/get/detail?list=" + currentTab.listType + "&id=" + id);
},
},
};
diff --git a/src/pages/order/detail.vue b/src/pages/order/detail.vue
index f50bdda..6b5cb5f 100644
--- a/src/pages/order/detail.vue
+++ b/src/pages/order/detail.vue
@@ -72,7 +72,7 @@
¥ {{ utils.formatNumber(order.price, 2) }}
-
+
客服
@@ -97,13 +97,13 @@ 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";
-import { mapState } from "vuex";
export default {
name: "order-detail",
data() {
return {
utils: this.$utils,
models: this.$models,
+ pageConfig: {},
showPriceModal: false,
showConfirmModal: false,
type: "detail",
@@ -145,12 +145,8 @@ export default {
OrderConfirmPrice,
GetPostPrice,
},
- computed: {
- ...mapState({
- config: (state) => state.system.config,
- }),
- },
onLoad(e) {
+ this.pageConfig = getApp().globalData.pageConfig;
if (e.id && e.id > 0) {
this.id = e.id;
} else {