数字督察一体化平台-前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

277 lines
9.3 KiB

<template>
<div class="container">
<header>
<el-form :label-width="114">
<el-row>
<el-col :span="6">
<el-form-item label="信件编号">
<el-input
placeholder="请输入"
v-model="query.originId"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="投诉人">
<div class="flex gap">
<el-select
v-model="query.responderKey"
style="width: 160px"
@change="delete query.responderValue"
>
<el-option value="name" label="姓名" />
<el-option value="phone" label="电话" />
</el-select>
<el-input
placeholder="请输入"
v-model="query.responderValue"
clearable
/>
</div>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="登记时间">
<date-time-range-picker-ext
v-model="query.discoveryTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="具体内容">
<el-input
placeholder="请输入"
v-model="query.thingDesc"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="mb-25 flex between">
<div>
<el-button type="primary" @click="show = true"
>数据导入</el-button
>
<el-badge
:value="distributeList.length"
class="ml-10"
v-if="distributeList.length"
>
<el-button type="primary" @click="distributeShow = true"
>问题下发</el-button
>
</el-badge>
</div>
<div>
<el-button type="primary" @click="getList">
<template #icon>
<icon name="el-icon-Search" />
</template>
查询</el-button
>
<el-button @click="reset">重置</el-button>
</div>
</div>
</header>
<div class="table-container">
<el-table :data="list">
<el-table-column
label="信件编号"
prop="originId"
show-overflow-tooltip
/>
<el-table-column
label="投诉渠道"
prop="channelForFilingComplaints"
/>
<el-table-column
label="受理层级"
prop="acceptanceLevel"
show-overflow-tooltip
/>
<el-table-column
label="登记时间"
width="discoveryTime"
show-overflow-tooltip
/>
<el-table-column
label="投诉人"
prop="responderName"
width="90"
/>
<el-table-column label="电话" prop="responderPhone" />
<el-table-column
label="初重信访"
prop="initialPetition"
align="center"
width="90"
/>
<el-table-column
label="缠访闹访"
prop="entanglementVisits"
align="center"
width="90"
/>
<el-table-column label="群众集访" prop="massVisits" />
<el-table-column label="涉嫌问题" prop="involveProblem" />
<el-table-column
label="被投诉机构"
prop="involveDepartName"
show-overflow-tooltip
/>
<el-table-column
label="具体内容"
prop="thingDesc"
show-overflow-tooltip
/>
<el-table-column label="状态">
<template #default="{ row }">
<el-tag>{{
getDictLable(
dict.distributionState,
row.distributionState
)
}}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="200">
<template #default="{ row }">
<template
v-if="
row.distributionState ===
DistributionState.UNDISTRIBUTED
"
>
<el-button
type="primary"
link
@click="handleAddDistribute(row)"
v-if="
distributeList.filter(
(item) => item.originId === row.originId
).length === 0
"
>加入问题下发</el-button
>
<el-button
type="info"
link
v-else
@click="handleRemoveDistribute(row)"
>移除</el-button
>
</template>
<el-button type="danger" link @click="handleDel(row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
<el-pagination
@size-change="getList"
@current-change="getList"
:current-page="query.current"
:page-sizes="[10, 20, 50]"
v-model:page-size="query.size"
v-model:current-page="query.current"
layout="total, sizes, prev, pager, next"
:total="total"
>
</el-pagination>
</div>
</div>
<data-import
v-model="show"
title="公安部信访投诉 数据导入"
:problemSourcesCode="ProblemSources.GABXF"
@close="show = false"
@update="getList"
/>
<data-distrbute
v-model:show="distributeShow"
v-model:data="distributeList"
@update="getList"
/>
</template>
<script setup>
import { BASE_PATH } from "@/api/request";
import {
importPetitionComplaint,
listPetitionComplaint,
addPetitionComplaint,
delPetitionComplaint,
} from "@/api/data/petitionComplaint";
import { ProblemSources, DistributionState } from "@/enums/dictEnums";
import feedback from "@/utils/feedback";
import { getDictLable } from "@/utils/util";
import useCatchStore from "@/stores/modules/catch";
const catchStore = useCatchStore();
const dict = catchStore.getDicts([
"distributionState",
"timeLimit",
"approvalFlow",
"distributionFlow",
"distributionState",
]);
const query = ref({
size: 10,
current: 1,
responderKey: "name",
problemSourcesCode: ProblemSources.GABXF,
});
const list = ref([]);
const total = ref(0);
function getList() {
listPetitionComplaint(query.value).then((data) => {
list.value = data.records;
total.value = data.total;
});
}
function reset() {
query.value = {
size: 10,
current: 1,
responderKey: "name",
problemSourcesCode: ProblemSources.GABXF,
};
getList();
}
getList();
const show = ref(false);
async function handleDel(row) {
await feedback.confirm("确定要删除该数据?");
await delPetitionComplaint(row.originId);
getList();
}
const distributeShow = ref(false)
const distributeList = ref([])
function handleAddDistribute(row) {
distributeList.value.push(row);
}
function handleRemoveDistribute(row) {
distributeList.value.splice(
distributeList.value.findIndex(
(item) => item.originId === row.originId
),
1
);
}
</script>
<style lang="scss" scoped>
</style>