2022-10-20 16:35:10 +08:00
|
|
|
<template>
|
|
|
|
|
<section class="AiEvaluation">
|
2023-03-31 09:39:25 +08:00
|
|
|
<div v-if="type=='submit'">
|
|
|
|
|
<AiPagePicker v-if="!hasEvaluated" type="custom" :ops="ops" nodeKey="">
|
|
|
|
|
<slot v-if="$slots.default"/>
|
|
|
|
|
<div v-else v-text="placeholder"/>
|
|
|
|
|
</AiPagePicker>
|
|
|
|
|
<slot name="finish" v-else-if="$slots.finish"/>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-else-if="type=='show'">
|
|
|
|
|
<slot v-if="$slots.default" :evaluation="detail"/>
|
2023-03-31 09:45:49 +08:00
|
|
|
<AiGroup v-if="hasEvaluated" description no-border labelColor="#999" v-else>
|
2022-10-20 16:35:10 +08:00
|
|
|
<AiItem label="评级分数">
|
|
|
|
|
<u-rate v-model="detail.score" disabled inactive-icon="star-fill" active-color="#F8B425"/>
|
|
|
|
|
{{ detail.rateText || "" }}
|
|
|
|
|
</AiItem>
|
|
|
|
|
<AiItem label="评价详情" top-label>
|
|
|
|
|
<div v-html="detail.content"/>
|
|
|
|
|
</AiItem>
|
|
|
|
|
<AiItem label="附件" top-label>
|
|
|
|
|
<AiUploader :def="detail.files" disabled/>
|
|
|
|
|
</AiItem>
|
|
|
|
|
</AiGroup>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import AiPagePicker from "../AiPagePicker/AiPagePicker";
|
|
|
|
|
import AiGroup from "../AiGroup/AiGroup";
|
|
|
|
|
import AiItem from "../AiItem/AiItem";
|
|
|
|
|
import AiUploader from "../AiUploader/AiUploader";
|
2023-03-31 09:45:49 +08:00
|
|
|
import AiEmpty from "dvcp_v2_wechat_app/src/components/AiEmpty/AiEmpty";
|
2022-10-20 16:35:10 +08:00
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
name: "AiEvaluation",
|
|
|
|
|
model: {
|
|
|
|
|
prop: "info",
|
|
|
|
|
event: "input"
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
|
info: {default: () => ({})},
|
|
|
|
|
placeholder: {default: "去评价"},
|
|
|
|
|
bid: {default: ""},
|
|
|
|
|
type: {default: "submit"} //可选值: submit:提交评价,show:展示评价
|
|
|
|
|
},
|
2023-03-31 09:45:49 +08:00
|
|
|
components: {AiEmpty, AiUploader, AiItem, AiGroup, AiPagePicker},
|
2022-10-20 16:35:10 +08:00
|
|
|
computed: {
|
|
|
|
|
isShow: v => v.type == 'show',
|
|
|
|
|
hasEvaluated: v => !!v.detail?.id
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
detail: {},
|
|
|
|
|
ops: {
|
|
|
|
|
rateTexts: ['非常不满意', '不满意', '一般', '满意', '非常满意'],
|
|
|
|
|
url: "/components/pages/submitEvaluation?bid=" + this.bid
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
watch: {
|
|
|
|
|
bid: {
|
|
|
|
|
immediate: true,
|
|
|
|
|
handler() {
|
|
|
|
|
this.getDetail()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
getDetail() {
|
|
|
|
|
const bizId = this.bid
|
|
|
|
|
bizId && this.$instance.post("/app/appbusinesscompletionevaluation/queryMyEvaluationByBizId", null, {
|
|
|
|
|
params: {bizId}
|
|
|
|
|
}).then(res => {
|
|
|
|
|
if (res?.data) {
|
|
|
|
|
const info = res.data?.[0]
|
|
|
|
|
this.detail = {...info, rateText: this.rateTexts?.[info.score - 1]}
|
|
|
|
|
this.$emit("input", this.detail)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
</script>
|