完成用户端评价

This commit is contained in:
TOP糯米 2023-03-29 20:42:31 +08:00
parent 60fea0b715
commit f0a4f02647
5 changed files with 179 additions and 25 deletions

View File

@ -291,13 +291,17 @@ export default {
count: {
service: {
url: "/wxapp/index/seeworkerevaluation",
showLoading: true,
},
worker: {
url: "/wxapp/orderb/seeworkerevaluation",
}
},
list: {
service: {
url: "/wxapp/index/goodsevaluation",
showLoading: true,
},
worker: {
url: "/wxapp/orderb/allevaluation",
}
}
},

View File

@ -17,6 +17,21 @@ export default {
return reject(response.msg);
}).catch(e => { });
});
},
worker(id) {
return new Promise((resolve, reject) => {
prototype.$request({
api: "appraise.count.worker",
data: {
id: id,
}
}).then(response => {
if (response.code == 1) {
return resolve(response.data);
}
return reject(response.msg);
}).catch(e => { });
});
}
},
list: {
@ -50,6 +65,37 @@ export default {
return reject(response.msg);
}).catch(e => { });
});
},
/**
* 师傅评价
*/
worker(data) {
return new Promise((resolve, reject) => {
prototype.$request({
api: "appraise.list.worker",
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 => { });
});
}
},
}

View File

@ -7,9 +7,12 @@ export default {
case 0: return ['待审核', '#ff0000'];
case 1: return ['普通师傅', '#bfbfbf'];
case 2: return ['入驻师傅', '#d9a019'];
default: return ['未知'];
default: return ['未知', '#000000'];
}
},
/**
* 师傅详情
*/
workerDetail(uid) {
return new Promise((resolve, reject) => {
prototype.$request({
@ -18,7 +21,25 @@ export default {
uid: uid,
}
}).then(response => {
console.log(response);
if (response.code == 1) {
let worker = {
times: response.data.count,
favorableRate: response.data.good,
grade: response.data.score,
worker: {},
}
if (prototype.$utils.isType(response.data.worker, "object")) {
worker.worker = {
id: response.data.worker.id,
uid: response.data.worker.uid,
name: response.data.worker.name,
type: response.data.worker.status,
avatar: response.data.worker.avatar,
}
}
return resolve(worker);
}
return reject(response.msg);
}).catch(e => { });
});
}

View File

@ -27,7 +27,7 @@
<text class="title">报价金额</text>
<text class="number">¥ {{ utils.formatNumber(item.price, 2) }}</text>
</view>
<view class="detail" @click="workerDetail(item.id)">
<view class="detail" @click="workerDetail(item.uid)">
<worker-item :data="item" :showPrice="false" />
</view>
<view class="action">
@ -230,7 +230,7 @@ export default {
*/
showWorker() {
if (this.$utils.isType(this.order.worker, "object") && this.$utils.isType(this.order.worker.id, "number")) {
this.$utils.toPage("/pages/worker/detail?id=" + this.order.worker.id);
this.workerDetail(this.order.worker.uid);
} else {
this.switchTab(0);
}

View File

@ -3,67 +3,150 @@
<view class="worker-header">
<view class="worker-base">
<view class="head">
<image class="cover" :src="cover" mode="aspectFill" />
<image class="cover" :src="info.worker.avatar" mode="aspectFill" />
</view>
<view class="desc">
<view class="name">
<text>{{ name }}</text>
<text>{{ info.worker.name }}</text>
</view>
<view class="type" :style="{ color: models.worker.getWorkerTypeTextColor(type) }">
<text>{{ models.worker.getWorkerTypeText(type) }}</text>
<view class="type" :style="{ color: typeTextColor }">
<text>{{ typeText }}</text>
</view>
</view>
</view>
<view class="service-info">
<view class="section">
服务<text class="num">{{ times }}</text>
服务<text class="num">{{ info.times }}</text>
<text class="unit"></text>
</view>
<view class="section">
好评率<text class="num">{{ favorable_rate }}</text>
好评率<text class="num">{{ info.favorableRate }}</text>
<text class="unit">%</text>
</view>
<view class="section">
评分<text class="num">{{ grade }}</text>
评分<text class="num">{{ info.grade }}</text>
</view>
</view>
</view>
<view class="appraise-body">
<app-appraise-section
:total="appraise.total"
:tags="appraise.tags"
:cate="appraise.cate"
@changeCate="changeAppraiseCate"
/>
</view>
</app-layout>
</template>
<script>
import AppLayout from "@/components/layout/layout";
import AppAppraiseSection from "@/components/appraise/section";
export default {
name: "worker-detail",
data() {
return {
models: this.$models,
typeText: "",
typeTextColor: "",
info: {
times: 0,
favorableRate: 0,
grade: 0,
worker: {
uid: 0,
id: 0,
name: "",
type: 0,
cover: "",
times: 0,
favorable_rate: 0,
grade: 0,
avatar: "",
},
},
currentAppraiseCateIndex: 0,
appraise: {
total: 0,
tags: [],
cate: [],
},
};
},
components: {
AppLayout,
AppAppraiseSection,
},
onLoad(e) {
async onLoad(e) {
if (!e.id) {
return this.$utils.tosat("参数错误").then(() => {
this.$utils.toPage("", "", "back");
});
}
this.id = e.id;
let [typeText, typeTextColor] = this.$models.worker.workerTypeText(this.data.type);
await this.$models.worker.workerDetail(e.id).then((data) => {
this.info = data;
let [typeText, typeTextColor] = this.$models.worker.workerTypeText(data.worker.type);
this.typeText = typeText;
this.typeTextColor = typeTextColor;
});
//
await this.$models.appraise.count.worker(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() {
let currentCate = this.appraise.cate[this.currentAppraiseCateIndex];
if (currentCate.more) {
this.loadAppraiseData(currentCate);
}
},
onPullDownRefresh() {},
methods: {},
methods: {
/**
* 切换评价分类
*/
changeAppraiseCate(currentCate, index) {
this.currentAppraiseCateIndex = index;
currentCate.list = [];
currentCate.more = true;
currentCate.page = 1;
this.loadAppraiseData(currentCate);
},
/**
* 加载评价数据
*/
loadAppraiseData(currentCate) {
this.$models.appraise.list
.worker({
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;
}
});
},
},
};
</script>