diff --git a/src/core/apis.js b/src/core/apis.js
index 1db6936..c28db68 100644
--- a/src/core/apis.js
+++ b/src/core/apis.js
@@ -93,6 +93,16 @@ export default {
},
goodsDetail: {
url: "/index/goodsinfobyid",
+ showLoading: true,
}
},
+ order: {
+ pay: {
+ url: "/wxpay/payordera",
+ showLoading: true,
+ },
+ createOrder: {
+ url: "/order/submitordera",
+ },
+ }
}
diff --git a/src/core/models.js b/src/core/models.js
index 28abc40..bb212c7 100644
--- a/src/core/models.js
+++ b/src/core/models.js
@@ -1,9 +1,11 @@
import order from "@/core/models/order";
import user from "@/core/models/user";
import worker from "@/core/models/worker";
+import service from "@/core/models/service";
export default {
order,
user,
worker,
+ service,
}
diff --git a/src/core/models/order.js b/src/core/models/order.js
index f887ad5..06e8b99 100644
--- a/src/core/models/order.js
+++ b/src/core/models/order.js
@@ -1,3 +1,6 @@
+import Vue from "vue"
+let prototype = Vue.prototype;
+
export default {
type: {
NORMAL: 1,
@@ -73,5 +76,32 @@ export default {
default:
return '未知状态';
}
+ },
+ createOrder(order) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "order.createOrder",
+ data: order,
+ }).then((response) => {
+ if (response.code == 1) {
+ return resolve(response.data);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ },
+ payOrder(id) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "order.pay",
+ data: {
+ id: id
+ }
+ }).then(response => {
+ console.log(response);
+ }).catch(e => {
+ throw e
+ });
+ });
}
}
diff --git a/src/core/models/service.js b/src/core/models/service.js
index 52efbf3..bbca6f9 100644
--- a/src/core/models/service.js
+++ b/src/core/models/service.js
@@ -13,5 +13,21 @@ export default {
}
}).catch(e => { });
});
+ },
+ getServiceDetail(id) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "service.goodsDetail",
+ data: {
+ id: id,
+ },
+ }).then((response) => {
+ if (response.code == 1) {
+ return resolve(response.data);
+ }
+
+ return reject(response.msg);
+ });
+ })
}
}
diff --git a/src/pages/order/create.vue b/src/pages/order/create.vue
index 3c22ada..b19bf1e 100644
--- a/src/pages/order/create.vue
+++ b/src/pages/order/create.vue
@@ -38,7 +38,7 @@
留言
@@ -48,7 +48,7 @@
- ¥306.00
+ ¥ {{ utils.formatNumber(total) }}
去支付
@@ -67,27 +67,17 @@ export default {
name: "order-create",
data() {
return {
+ utils: this.$utils,
pageConfig: {},
addressId: 0,
addressText: "",
datetime: "",
- message: "",
+ content: "",
insurance: false,
isAgree: false,
- serviceList: [
- {
- id: 2,
- name: "空调安装",
- cover: require("@/static/temp/cate/1.png"),
- buyNumber: 1,
- },
- {
- id: 3,
- name: "空调拆卸",
- cover: require("@/static/temp/cate/2.png"),
- buyNumber: 1,
- },
- ],
+ total: 0,
+ orderData: [],
+ serviceList: [],
};
},
components: {
@@ -102,9 +92,31 @@ export default {
insurancePrice: (state) => state.service.insurancePrice,
}),
},
- onLoad() {
+ onLoad(e) {
this.pageConfig = getApp().globalData.pageConfig;
this.$store.dispatch("service/insurancePrice");
+ if (!e.orderData) {
+ this.$utils.toast("参数错误");
+ return;
+ }
+ this.orderData = JSON.parse(decodeURIComponent(e.orderData));
+ this.orderData.forEach((item) => {
+ this.$models.service.getServiceDetail(item.id).then((response) => {
+ let cover = "";
+ if (response.goods.image.length > 0) {
+ cover = response.goods.image[0];
+ }
+ this.serviceList.push({
+ id: response.goods.id,
+ name: response.goods.post_title,
+ times: response.goods.post_hits,
+ cover: cover,
+ content: response.goods.post_content,
+ price: response.goods.money,
+ });
+ this.total += parseFloat(response.goods.money);
+ });
+ });
},
onShow() {},
onReady() {},
@@ -125,20 +137,36 @@ export default {
},
});
},
- selectDateTime() {
- console.log("选择时间");
- },
changeInsuranceState(state) {
+ if (state) {
+ this.total += this.insurancePrice;
+ } else {
+ this.total -= this.insurancePrice;
+ }
this.insurance = state;
},
pay() {
if (!this.isAgree) {
uni.showToast({
- title: "请先阅读并同意《熊熊安装服务协议》《隐私政策》",
+ title: "请先阅读并同意《服务协议》《隐私政策》",
icon: "none",
});
return;
}
+ this.$models.order
+ .createOrder({
+ ids: this.orderData,
+ addid: this.addressId,
+ times: this.datetime,
+ baoxian: this.insurance ? 1 : 0,
+ desc: this.content,
+ })
+ .then((id) => {
+ this.$models.order.payOrder(id);
+ })
+ .catch((e) => {
+ this.$utils.toast(e);
+ });
},
},
};
diff --git a/src/pages/service/detail.vue b/src/pages/service/detail.vue
index 6744e0b..c8f2ccb 100644
--- a/src/pages/service/detail.vue
+++ b/src/pages/service/detail.vue
@@ -61,7 +61,11 @@
-
+
¥{{ detail.price }}
@@ -112,40 +116,41 @@ export default {
return;
}
- this.getDetail();
+ this.$models.service.getServiceDetail(this.id).then((response) => {
+ this.detail = {
+ title: response.goods.post_title,
+ times: response.goods.post_hits,
+ images: response.goods.image,
+ content: response.goods.post_content,
+ price: response.goods.money,
+ };
+ this.$nextTick(() => {
+ this.setTabHeight();
+ });
+ });
},
onShow() {},
onReady() {},
onReachBottom() {},
onPullDownRefresh() {},
methods: {
- getDetail() {
- this.$request({
- api: "service.goodsDetail",
- data: {
- id: this.id,
- },
- }).then((response) => {
- this.detail = {
- title: response.data.goods.post_title,
- times: response.data.goods.post_hits,
- images: response.data.goods.image,
- content: response.data.goods.post_content,
- price: response.data.goods.money,
- };
- this.$nextTick(() => {
- this.setTabHeight();
- });
- });
- },
share() {
uni.showToast({
title: "分享",
icon: "none",
});
},
+ /**
+ * 创建订单
+ */
createOrder() {
- this.$utils.toPage("/pages/order/create");
+ let orderdata = [
+ {
+ id: this.id,
+ count: 1,
+ },
+ ];
+ this.$utils.toPage("/pages/order/create?orderData=" + encodeURIComponent(JSON.stringify(orderdata)));
},
changeTab(e) {
this.tabIndex = e.detail.current;