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
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> |