<template>
|
<FYTable
|
id="fyTable"
|
@search="onSearch"
|
:data="tableData"
|
:pagination="false"
|
ref="tableRef"
|
@cell-click="cellClick"
|
:cell-class-name="cellClassName"
|
@table-paste="handlePaste"
|
>
|
<template #options>
|
<!-- 区县 -->
|
<FYOptionLocation
|
:allOption="false"
|
:level="3"
|
:checkStrictly="false"
|
v-model:value="formSearch.locations"
|
></FYOptionLocation>
|
<!-- 场景类型 -->
|
<FYOptionScene
|
:allOption="false"
|
:type="2"
|
v-model:value="formSearch.scenetype"
|
></FYOptionScene>
|
<!-- 时间 -->
|
<FYOptionTime
|
:initValue="false"
|
type="month"
|
v-model:value="formSearch.time"
|
></FYOptionTime>
|
</template>
|
|
<template #options-expand>
|
<el-form :inline="true">
|
<CompQuickSet @quick-set="setOptions"></CompQuickSet>
|
</el-form>
|
<el-descriptions
|
v-if="this.tableData.length > 0"
|
title=""
|
:column="1"
|
direction="vertical"
|
border
|
>
|
<el-descriptions-item label="联合执法清单">
|
{{ listSummary }}
|
</el-descriptions-item>
|
</el-descriptions>
|
</template>
|
<template #buttons>
|
<FYDownloadTableButton
|
label="下载清单"
|
table-id="fyTable"
|
:file-name="fileName"
|
:disabled="downloadDisabled"
|
></FYDownloadTableButton>
|
</template>
|
<template #table-column="{ size }">
|
<el-table-column fixed="left" label="序号" width="53">
|
<template #default="{ row }">
|
{{ row.index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column fixed="left" label="编号" width="53" prop="sceneIndex">
|
</el-table-column>
|
<el-table-column
|
prop="sceneName"
|
:show-overflow-tooltip="true"
|
label="名称"
|
width="300"
|
>
|
</el-table-column>
|
<el-table-column prop="evaluation.scenseaddress" label="地址" />
|
<el-table-column prop="_problems" label="问题" width="300">
|
<template #default="{ row }">
|
<el-icon class="is-loading" v-if="row._loading">
|
<Loading color="#409eff" />
|
</el-icon>
|
<div v-else>
|
<template v-if="row._problems.length > 0">
|
<div v-for="(p, i) in row._problems" :key="p.guid">
|
<el-text>{{ i + 1 }}、</el-text>
|
<el-text>{{ p.problemname }}</el-text>
|
</div>
|
</template>
|
<el-text v-else>/</el-text>
|
</div>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column
|
prop="subTaskTime"
|
label="巡查日期"
|
width="110"
|
sortable="custom"
|
:formatter="timeFormat"
|
/> -->
|
<!-- <el-table-column
|
prop="evaluation.resultscorebef"
|
label="得分"
|
width="90"
|
/> -->
|
<el-table-column prop="" label="监测数据" width="81">
|
<template #default="{ row }">
|
<el-icon class="is-loading" v-if="row._loading">
|
<Loading color="#409eff" />
|
</el-icon>
|
<el-text v-else>/</el-text>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column
|
prop="evaluation.resultscorebef"
|
label="环信码"
|
width="100"
|
>
|
<template #default="{ row }">
|
<span :style="`color: ${toCode(row).color};`">{{
|
toCode(row).name
|
}}</span>
|
</template>
|
</el-table-column> -->
|
|
<el-table-column prop="dname" label="区县" width="90" />
|
<el-table-column prop="tname" label="街道" width="110" />
|
<el-table-column prop="_contacts" label="联系人" width="70">
|
<template #default="{ row }">
|
<el-icon class="is-loading" v-if="row._loading2">
|
<Loading color="#409eff" />
|
</el-icon>
|
<el-text v-else>{{ row._contacts }}</el-text>
|
</template>
|
</el-table-column>
|
<el-table-column prop="_contactst" label="联系电话" width="112">
|
<template #default="{ row }">
|
<el-icon class="is-loading" v-if="row._loading2">
|
<Loading color="#409eff" />
|
</el-icon>
|
<el-text v-else>{{ row._contactst }}</el-text>
|
</template>
|
</el-table-column>
|
<!-- <el-table-column prop="biArea" label="集中区" width="110" />
|
<el-table-column prop="biManagementCompany" label="物业" min-width="110"/> -->
|
<!-- <el-table-column fixed="right" align="right" label="操作" width="160">
|
<template #default="{ row }">
|
<el-button type="primary" size="small" @click="editRow(row)"
|
>查看</el-button
|
>
|
</template>
|
</el-table-column> -->
|
</template>
|
</FYTable>
|
</template>
|
|
<script>
|
/**
|
* 联合执法清单
|
*/
|
import dayjs from 'dayjs';
|
import evaluateApi from '@/api/fysp/evaluateApi';
|
import problemApi from '@/api/fysp/problemApi';
|
import sceneApi from '@/api/fysp/sceneApi';
|
import { envCreditCode } from '@/constants/index';
|
import { useTablePaste } from '@/composables/tablePaste';
|
|
export default {
|
setup() {
|
const {
|
cellClick,
|
cellClassName,
|
handlePaste,
|
setTableData,
|
addRefreshEvent,
|
tableData
|
} = useTablePaste({
|
score1: 8,
|
score2: 9
|
});
|
return {
|
cellClick,
|
cellClassName,
|
handlePaste,
|
setTableData,
|
addRefreshEvent,
|
tableData
|
};
|
},
|
data() {
|
return {
|
formSearch: {
|
locations: {},
|
scenetype: {},
|
time: dayjs().add(-1, 'M').date(1).toDate()
|
},
|
townFilters: [],
|
// 原始数据,用于排序取消后
|
orginData: [],
|
dlLoading: false
|
};
|
},
|
computed: {
|
area() {
|
const { locations, scenetype, time } = this.formSearch;
|
return {
|
provincecode: locations.pCode,
|
provincename: locations.pName,
|
citycode: locations.cCode,
|
cityname: locations.cName,
|
districtcode: locations.dCode,
|
districtname: locations.dName,
|
starttime: dayjs(time).format('YYYY-MM-DD HH:mm:ss'),
|
scensetypeid: scenetype.value
|
};
|
},
|
listSummary() {
|
if (this.tableData.length > 0) {
|
const { locations, scenetype, time } = this.formSearch;
|
return `根据${locations.dName}${dayjs(time).format(
|
'YYYY年MM月'
|
)}的现场整改情况以及自动评分结果,并结合历史巡查记录,得出以下综合得分最差的10家${
|
scenetype.label
|
}作为联合执法备选清单。`;
|
} else {
|
return ``;
|
}
|
},
|
downloadDisabled() {
|
if (this.tableData.length == 0) {
|
return true;
|
} else {
|
let b = false;
|
this.tableData.forEach((e) => {
|
b = b || e._loading || e._loading2;
|
});
|
return b;
|
}
|
},
|
fileName() {
|
const { locations, scenetype, time } = this.formSearch;
|
return `${locations.dName}${dayjs(time).format(
|
'YYYY年MM月'
|
)}联合执法清单`;
|
}
|
},
|
methods: {
|
editRow(row) {
|
this.$router.push(`evalutationEdit/${row.subTaskId}`);
|
},
|
setOptions(param) {
|
this.formSearch.locations = param.locations;
|
this.formSearch.scenetype = param.scenetype;
|
this.formSearch.sourceType = param.sourceType;
|
this.$refs.tableRef.onSearch();
|
},
|
onSearch(page, func) {
|
this.$refs.tableRef.clearSort();
|
// this.fetchEvaluationRule(this.area).then(() => {
|
evaluateApi.fetchAutoEvaluation(this.area).then((res) => {
|
if (res.data) {
|
res.data.sort((a, b) => {
|
const s1 = a.evaluation ? parseInt(a.evaluation.resultscorebef) : 0;
|
const s2 = b.evaluation ? parseInt(b.evaluation.resultscorebef) : 0;
|
return s1 - s2;
|
});
|
this.tableData = res.data
|
.filter((d) => {
|
return (
|
d.evaluation != null &&
|
parseInt(d.evaluation.resultscorebef) < 90
|
);
|
})
|
.slice(0, 10);
|
this.tableData.forEach((e) => {
|
e._loading = true;
|
problemApi
|
.getProBySubtask(e.subTaskId)
|
.then((res) => {
|
e._problems = res;
|
})
|
.finally(() => {
|
e._loading = false;
|
});
|
|
e._loading2 = true;
|
sceneApi
|
.getSceneDetail(e.sceneId)
|
.then((res) => {
|
//场景
|
if (res.data.scense) {
|
e._contacts = res.data.scense.contacts;
|
e._contactst = res.data.scense.contactst;
|
}
|
})
|
.finally(() => {
|
e._loading2 = false;
|
});
|
});
|
// this.orginData = useCloned(this.tableData).cloned;
|
if (typeof func === 'function') {
|
func();
|
}
|
} else {
|
this.tableData = [];
|
// this.orginData = [];
|
if (typeof func === 'function') {
|
func();
|
}
|
}
|
});
|
// });
|
},
|
toCode(row, column) {
|
if (row.evaluation) {
|
return envCreditCode(row.evaluation.resultscorebef);
|
} else {
|
return '';
|
}
|
},
|
timeFormat(row, column) {
|
const time = row.subTaskTime;
|
if (time) {
|
return dayjs(time).format('MM-DD');
|
} else {
|
return '';
|
}
|
},
|
filterHandler(value, row, column) {
|
const property = column['property'];
|
return row[property] === value;
|
},
|
},
|
mounted() {
|
this.addRefreshEvent(this.$refs.tableRef.doLayout);
|
}
|
};
|
</script>
|
<style scoped></style>
|