<template>
|
<div class="man_val_exam">
|
<v-header
|
title="报事报修"
|
:bar="bar"
|
search
|
@on-search="onSearch"
|
></v-header>
|
<div class="tab">
|
<v-tool-table :trs="trs" :tds="tds">
|
<template v-slot:btn="item">
|
<div class="table_flex">
|
<!-- {{item.scope.state}} -->
|
<span
|
class="col_primary"
|
v-if="item.scope.repairStatus === 0"
|
@click="onSend(item.scope)"
|
>审核</span
|
>
|
<span class="col_primary" @click="onShow(item.scope)">查看</span>
|
<span class="col_primary" @click="onDel(item.scope)">删除</span>
|
</div>
|
</template>
|
<template v-slot:time="item">
|
<b>{{ is_time(item.scope.createAt) }}</b>
|
</template>
|
<template v-slot:repairStatus="item">
|
<b>{{ is_type(+item.scope.repairStatus) }}</b>
|
</template>
|
<template v-slot:replyScore="item">
|
<span v-for="i in item.scope.replyScore" :key="i">⭐</span>
|
</template>
|
</v-tool-table>
|
</div>
|
<v-tool-page :item="paged" @on-page="onPage"></v-tool-page>
|
</div>
|
</template>
|
|
<script>
|
import { mapState } from "vuex";
|
import { dateTime } from "../../../utils/common";
|
export default {
|
props: {},
|
components: {},
|
data() {
|
return {
|
showTextList: ["极差", "失望", "一般", "满意", "非常满意"],
|
bar: [
|
{
|
title: "处理状态",
|
name: "status",
|
type: "select",
|
list: [
|
{ label: "待处理", value: "0" },
|
{ label: "待评价", value: "1" },
|
{ label: "已评价", value: "2" },
|
],
|
},
|
{ title: "上报人姓名", name: "username" },
|
{ title: "手机号", name: "phone" },
|
{
|
title: "上报小区",
|
name: "areaId",
|
type: "select",
|
list: [],
|
},
|
{ title: "上报时间", name: "time", type: "times" },
|
{ title: "处理人", name: "systemName" },
|
],
|
trs: [
|
{ text: "序号", val: "id", width: "50px" },
|
{ text: "上报人姓名", val: "repairName" },
|
{ text: "上报小区", val: "areaName" },
|
{ text: "手机号", val: "repairPhone" },
|
{ text: "楼栋单元门牌号", val: "repairPosition" },
|
{ text: "上报内容", val: "repairContent" },
|
{ text: "上报时间", val: "createTime" },
|
{ text: "处理状态", val: "btn", slot: "repairStatus" },
|
{ text: "评分", val: "btn", slot: "replyScore" },
|
{ text: "处理人", val: "feedback" },
|
{ text: "处理时间", val: "feedbackTime" },
|
{ text: "操作", val: "btn", width: "150px" },
|
],
|
tds: [],
|
paged: { page: 0, total: 0, r: 0, limit: 10 },
|
os: {},
|
search: {},
|
areaId: "",
|
user:{}
|
};
|
},
|
computed: {
|
...mapState({ vuex_page: "pageReset" }),
|
},
|
watch: {
|
vuex_page: {
|
handler(n) {
|
if (n.page === this.$route.path) {
|
this.init();
|
}
|
},
|
deep: true,
|
},
|
},
|
methods: {
|
is_time(v) {
|
return demo.timeout(new Date(v).getTime(), "alls", "-");
|
},
|
is_type(v) {
|
return ["待处理", "待评价", "已评价"][v] || v + 1;
|
},
|
// 审核
|
onSend(v) {
|
this.$router.push(`/repairDetails?id=${v.id}`);
|
},
|
onShow(v) {
|
this.$router.push(`/repairDetails?id=${v.id}&del=1`);
|
},
|
onDel(v) {
|
this.$js.model("", "是否删除", (res) => {
|
if (res) {
|
this.$api.get("propertyRepair/del?id=" + v.id, {}, (e) => {
|
demo.toast("删除成功");
|
this.init();
|
});
|
}
|
});
|
},
|
onSearch(v) {
|
v.time ? (v.beginTime = v.time[0]) : (v.beginTime = "");
|
v.time ? (v.endTime = v.time[1]) : (v.endTime = "");
|
delete v.time;
|
this.search = demo.copy(v);
|
this.paged.page = 1;
|
this.init();
|
},
|
// 分页点击
|
onPage(v) {
|
if (v.page === this.paged.page && v.page && !v.reset) {
|
return 0;
|
}
|
this.paged.page = v.page;
|
this.paged.limit = v.limit;
|
this.init();
|
},
|
getCommunityList() {
|
this.$api.post("villagemanager/pagevillage", {}, (e) => {
|
e.data.records.forEach((item) => {
|
item.label = item.name;
|
item.value = item.villageId;
|
});
|
this.bar[3].list = e.data.records;
|
const repairType = e.data.records.some((item) => {
|
return item.villageId == this.areaId;
|
});
|
if (repairType) {
|
this.bar.forEach((it, ix) => {
|
if (it.title === "上报小区") {
|
this.bar.splice(ix, 1);
|
}
|
});
|
}
|
});
|
},
|
// 获取数据
|
init() {
|
let v = demo.copy(
|
Object.assign(this.os, this.search, {
|
page: this.paged.page,
|
size: this.paged.limit,
|
propertyCheck:1,
|
paramId: "",
|
propertyId:this.user.propertyId
|
})
|
);
|
this.$api.post("propertyRepair/queryAllProperty", v, (e) => {
|
this.paged.total = e.total;
|
this.paged.r++;
|
this.tds = e.records || [];
|
this.tds.forEach((item) => {
|
item.feedbackTime = dateTime(item.feedbackTime);
|
item.createTime = dateTime(item.createTime);
|
item.replyScore = item.replyScore ? item.replyScore : 0;
|
});
|
});
|
},
|
},
|
mounted() {
|
this.areaId = demo.$session.get("user").areaId;
|
this.user = demo.$session.get("user")
|
this.getCommunityList();
|
},
|
};
|
</script>
|