diff --git a/src/components/appraise/group.vue b/src/components/appraise/group.vue
index 9983e2a..9c5fb3a 100644
--- a/src/components/appraise/group.vue
+++ b/src/components/appraise/group.vue
@@ -1,42 +1,46 @@
-
- 全部
-
-
- 有图
-
-
- 文字
+
+ {{ item.name }} ({{ item.count }})
-
-
-
-
-
-
- {{ item.nickname }}
- {{ item.createTime }}
-
- {{ item.area }}
- 服务人员:{{ item.worker }}
-
-
-
+
+
+
+
+
+
+
+ {{ v.nickname }}
+ {{ v.createTime }}
+
+ {{ v.area }}
+ 服务人员:{{ v.worker }}
+
+
+
+
-
-
- {{ tag }}
-
-
-
-
-
-
-
+
+ {{ tag }}
+
+
+
+
+
+
+
+
@@ -52,29 +56,15 @@ export default {
data() {
return {
utils: this.$utils,
- tabHeight: 0,
- cate: 0,
- list: [
- {
- id: 1,
- avatar: "https://xiongxiong.vipwjf.com/upload/portal/20230215/93a0f7f676b470c40e25cc3b5c16db3e.png",
- nickname: "李先生",
- createTime: "2022-10-20 22:48:13",
- tags: ["技术专业", "技术专业", "技术专业"],
- area: "四川省绵阳市",
- worker: "李师傅",
- grade: 5,
- images: [
- "https://xiongxiong.vipwjf.com/upload/portal/20230215/93a0f7f676b470c40e25cc3b5c16db3e.png",
- "https://xiongxiong.vipwjf.com/upload/portal/20230215/93a0f7f676b470c40e25cc3b5c16db3e.png",
- "https://xiongxiong.vipwjf.com/upload/portal/20230215/93a0f7f676b470c40e25cc3b5c16db3e.png",
- "https://xiongxiong.vipwjf.com/upload/portal/20230215/93a0f7f676b470c40e25cc3b5c16db3e.png",
- ],
- content: "测试评价内容",
- },
- ],
+ currentCate: 0,
};
},
+ props: {
+ cate: {
+ type: Array,
+ default: [],
+ },
+ },
components: {
UniRate,
},
@@ -82,9 +72,16 @@ export default {
mounted() {},
destroyed() {},
methods: {
+ /**
+ * 修改分类
+ */
changeCate(index) {
- this.cateIndex = index;
+ this.currentCate = index;
+ this.$emit("changeCate", this.cate[index], index);
},
+ /**
+ * 预览图片
+ */
previewImage(list, index) {
uni.previewImage({
urls: list,
@@ -98,110 +95,110 @@ export default {
\ No newline at end of file
diff --git a/src/components/appraise/section.vue b/src/components/appraise/section.vue
index 29541d6..a52c7f4 100644
--- a/src/components/appraise/section.vue
+++ b/src/components/appraise/section.vue
@@ -7,7 +7,7 @@
@@ -17,31 +17,21 @@ import AppraiseGroup from "@/components/appraise/group";
export default {
name: "appraise-section",
data() {
- return {
- total: 12345,
- tags: [
- {
- name: "技术专业",
- count: 100,
- },
- {
- name: "礼貌热情",
- count: 100,
- },
- {
- name: "认真负责",
- count: 100,
- },
- {
- name: "快速完工",
- count: 100,
- },
- {
- name: "按时上门",
- count: 100,
- },
- ],
- };
+ return {};
+ },
+ props: {
+ total: {
+ type: [Number, String],
+ default: 0,
+ },
+ tags: {
+ type: Array,
+ default: [],
+ },
+ cate: {
+ type: Array,
+ default: [],
+ },
},
components: {
AppraiseGroup,
@@ -49,7 +39,14 @@ export default {
created() {},
mounted() {},
destroyed() {},
- methods: {},
+ methods: {
+ /**
+ * 修改分类
+ */
+ changeCate(cate, index) {
+ this.$emit("changeCate", cate, index);
+ },
+ },
};
diff --git a/src/core/apis.js b/src/core/apis.js
index cccf9a5..3822e00 100644
--- a/src/core/apis.js
+++ b/src/core/apis.js
@@ -286,5 +286,19 @@ export default {
showLoading: true,
auth: true,
}
- }
+ },
+ appraise: {
+ count: {
+ service: {
+ url: "/wxapp/index/seeworkerevaluation",
+ showLoading: true,
+ }
+ },
+ list: {
+ service: {
+ url: "/wxapp/index/goodsevaluation",
+ showLoading: true,
+ }
+ }
+ },
}
diff --git a/src/core/models.js b/src/core/models.js
index 9fecd52..fcf35e3 100644
--- a/src/core/models.js
+++ b/src/core/models.js
@@ -4,6 +4,7 @@ import worker from "@/core/models/worker";
import service from "@/core/models/service";
import cart from "@/core/models/cart";
import system from "@/core/models/system";
+import appraise from "@/core/models/appraise";
export default {
order,
@@ -12,4 +13,5 @@ export default {
service,
cart,
system,
+ appraise,
}
diff --git a/src/core/models/appraise.js b/src/core/models/appraise.js
new file mode 100644
index 0000000..62b6c1a
--- /dev/null
+++ b/src/core/models/appraise.js
@@ -0,0 +1,55 @@
+import Vue from "vue"
+let prototype = Vue.prototype;
+
+export default {
+ count: {
+ service(id) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "appraise.count.service",
+ data: {
+ id: id,
+ }
+ }).then(response => {
+ if (response.code == 1) {
+ return resolve(response.data);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ }
+ },
+ list: {
+ /**
+ * 服务评价
+ */
+ service(data) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "appraise.list.service",
+ data: data
+ }).then(response => {
+ if (response.code == 1) {
+ let list = [];
+ response.data.forEach((data) => {
+ list.push({
+ id: data.id,
+ avatar: data.u_avatar,
+ nickname: data.u_name,
+ createTime: data.time,
+ tags: data.msg.split(","),
+ area: "-",
+ worker: data.wid,
+ grade: data.score,
+ images: data.img,
+ content: data.desc,
+ });
+ });
+ return resolve(list);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ }
+ },
+}
diff --git a/src/pages/service/detail.vue b/src/pages/service/detail.vue
index 6a0548c..8978aa5 100644
--- a/src/pages/service/detail.vue
+++ b/src/pages/service/detail.vue
@@ -61,7 +61,12 @@
-
+
@@ -76,10 +81,9 @@ export default {
data() {
return {
pageConfig: {},
- tabIndex: 1, // 1评价
- tabHeight: 0,
+ tabIndex: 0, // 1评价
currentBanner: 1,
- pageTitle: "服务详情",
+ pageTitle: "",
timer: null,
id: 0,
detail: {
@@ -89,13 +93,19 @@ export default {
content: "",
price: 0,
},
+ currentAppraiseCateIndex: 0,
+ appraise: {
+ total: 0,
+ tags: [],
+ cate: [],
+ },
};
},
components: {
AppLayout,
AppAppraiseSection,
},
- onLoad(e) {
+ async onLoad(e) {
this.pageConfig = getApp().globalData.pageConfig;
if (e.id) {
@@ -105,6 +115,7 @@ export default {
return;
}
+ // 详情
this.$models.service.getServiceDetail(this.id).then((response) => {
this.detail = {
title: response.goods.post_title,
@@ -114,12 +125,43 @@ export default {
price: response.goods.money,
};
});
+
+ // 评价
+ await this.$models.appraise.count.service(this.id).then((data) => {
+ data.tags.forEach((item) => {
+ this.appraise.tags.push({
+ count: item.count,
+ name: item.name,
+ });
+ });
+ data.cate.forEach((item) => {
+ this.appraise.cate.push({
+ name: item.name,
+ count: item.count,
+ status: item.status,
+ page: 1,
+ more: true,
+ list: [],
+ });
+ });
+ this.appraise.total = this.appraise.cate[0].count;
+ this.changeAppraiseCate(this.appraise.cate[0], 0);
+ });
},
onShow() {},
onReady() {},
- onReachBottom() {},
+ onReachBottom() {
+ if (this.tabIndex == 0) return;
+ let currentCate = this.appraise.cate[this.currentAppraiseCateIndex];
+ if (currentCate.more) {
+ this.loadAppraiseData(currentCate);
+ }
+ },
onPullDownRefresh() {},
methods: {
+ /**
+ * 分享
+ */
share() {
uni.showToast({
title: "分享",
@@ -146,12 +188,47 @@ export default {
];
this.$utils.toPage("/pages/order/create?orderData=" + encodeURIComponent(JSON.stringify(orderdata)));
},
+ /**
+ * 切换详情/评价
+ */
changeTab(e) {
this.tabIndex = e.detail.current;
},
+ /**
+ * 滑动banner
+ */
changeBanner(e) {
this.currentBanner = e.detail.current + 1;
},
+ /**
+ * 切换评价分类
+ */
+ changeAppraiseCate(currentCate, index) {
+ this.currentAppraiseCateIndex = index;
+ currentCate.list = [];
+ currentCate.more = true;
+ currentCate.page = 1;
+ this.loadAppraiseData(currentCate);
+ },
+ /**
+ * 加载评价数据
+ */
+ loadAppraiseData(currentCate) {
+ this.$models.appraise.list
+ .service({
+ id: this.id,
+ status: currentCate.status,
+ page: currentCate.page,
+ })
+ .then((list) => {
+ if (list.length > 0) {
+ currentCate.page++;
+ currentCate.list = currentCate.list.concat(list);
+ } else {
+ currentCate.more = false;
+ }
+ });
+ },
},
};