15 changed files with 2450 additions and 349 deletions
@ -0,0 +1,43 @@
|
||||
<template> |
||||
<div class="loading-wrapper flex center v-center" v-show="loading"> |
||||
<div class="loading-box flex column v-center center"> |
||||
<icon name="el-icon-Loading" :size="100" /> |
||||
<div class="mt-8 loading-text">{{ loadingText }}</div> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
<script setup> |
||||
|
||||
defineProps({ |
||||
loading: { |
||||
type: Boolean, |
||||
defalut: true |
||||
}, |
||||
loadingText: { |
||||
type: String, |
||||
defalut: '' |
||||
} |
||||
}) |
||||
|
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.loading-wrapper { |
||||
position: fixed; |
||||
top: 0; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
z-index: 99999; |
||||
} |
||||
.loading-box { |
||||
width: 162px; |
||||
height: 162px; |
||||
background: #9D9DA0; |
||||
border-radius: 16px; |
||||
color: #ccc; |
||||
font-size: 16px; |
||||
} |
||||
.loading-text { |
||||
color: #fff; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,316 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header> |
||||
<el-form :label-width="80"> |
||||
<el-row> |
||||
<el-col :span="6"> </el-col> |
||||
</el-row> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">基本信息</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 340px"> |
||||
<el-form-item label="报警时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.discoveryTime" |
||||
/> |
||||
</el-form-item> |
||||
</div> |
||||
<el-input |
||||
placeholder="期数" |
||||
style="width: 146px" |
||||
v-model="query.reportNumber" |
||||
clearable |
||||
/> |
||||
<el-input |
||||
placeholder="具体问题情况" |
||||
v-model="query.thingDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<el-input |
||||
placeholder="警情编号" |
||||
v-model="query.caseNumber" |
||||
clearable |
||||
style="width: 200px" |
||||
/> |
||||
</div> |
||||
</div> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">核查情况</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.involveDepartId" |
||||
placeholder="涉及单位" |
||||
/> |
||||
</div> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.handleDepartId" |
||||
placeholder="办理单位" |
||||
/> |
||||
</div> |
||||
<el-select |
||||
style="width: 146px" |
||||
placeholder="是否整改" |
||||
clearable |
||||
v-model="query.isRectifyCode" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.isRectify" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
<el-input |
||||
placeholder="回复情况" |
||||
v-model="query.checkStatusDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<div class="flex gap-4"> |
||||
<el-select |
||||
v-model="query.blameKey" |
||||
style="width: 90px" |
||||
@change="delete query.blameValue" |
||||
> |
||||
<el-option value="name" label="姓名" /> |
||||
<el-option value="empNo" label="警号" /> |
||||
<el-option value="idCode" label="身份证" /> |
||||
</el-select> |
||||
<el-input |
||||
placeholder="问责人员(民警、辅警)" |
||||
v-model="query.blameValue" |
||||
clearable |
||||
style="width: 190px" |
||||
/> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">其他选项</label> |
||||
<div class="flex wrap query-box"> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="自查或他查" |
||||
clearable |
||||
v-model="query.crtDepartLevel" |
||||
> |
||||
<el-option label="他查" :value="0" /> |
||||
<el-option label="自查" :value="2" /> |
||||
</el-select> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="办理状态" |
||||
clearable |
||||
v-model="query.processingStatus" |
||||
multiple |
||||
> |
||||
<el-option |
||||
v-for="item in dict.processingStatus" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
<div class="flex between mt-20 mb-26"> |
||||
<div> |
||||
<!-- <el-button type="primary" @click="handleExport" |
||||
>数据导出</el-button |
||||
> --> |
||||
</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> |
||||
<main> |
||||
<div class="table-container" v-loading="loading"> |
||||
<el-table :data="list" ref="tableRef"> |
||||
<el-table-column |
||||
label="期数" |
||||
prop="reportNumber" |
||||
width="80" |
||||
/> |
||||
<el-table-column |
||||
label="涉及单位" |
||||
prop="involveDepartName" |
||||
width="160" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="办理单位" |
||||
show-overflow-tooltip |
||||
width="160" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span |
||||
>{{ row.handleSecondDepartName |
||||
}}{{ row.handleThreeDepartName }}</span |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="报警时间" |
||||
prop="discoveryTime" |
||||
width="150" |
||||
/> |
||||
<el-table-column |
||||
label="警情编号" |
||||
prop="caseNumber" |
||||
width="220" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="自查或他查" |
||||
width="100" |
||||
align="center" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
row.crtDepartLevel === 0 ? "他查" : "自查" |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="具体问题情况" |
||||
prop="thingDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="核查情况" |
||||
prop="checkStatusDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="整改情况" |
||||
prop="rectifyDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column label="办理状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag |
||||
:type=" |
||||
row.processingStatus === |
||||
ProcessingStatus.COMPLETED |
||||
? 'success' |
||||
: 'primary' |
||||
" |
||||
v-if="row.processingStatus" |
||||
>{{ |
||||
getDictLable( |
||||
dict.processingStatus, |
||||
row.processingStatus |
||||
) |
||||
}}</el-tag |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="80" fixed="right"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleAction(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]" |
||||
:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</main> |
||||
</div> |
||||
|
||||
<negative-dialog |
||||
v-model="show" |
||||
:id="activeNegativeId" |
||||
@close="show = false" |
||||
ref="negativeDialogRef" |
||||
/> |
||||
</template> |
||||
<script setup> |
||||
import { ProcessingStatus } from "@/enums/flowEnums"; |
||||
import { listNegativeHdjq } from "@/api/books"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"businessType", |
||||
"inspectCase", |
||||
"isRectify", |
||||
"processingStatus", |
||||
"suspectProblem", |
||||
"policeType", |
||||
"specialSupervision", |
||||
]); |
||||
|
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}); |
||||
|
||||
const list = ref([]); |
||||
const total = ref(0); |
||||
|
||||
const loading = ref(false); |
||||
function getList() { |
||||
loading.value = true; |
||||
listNegativeHdjq(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
loading.value = false; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
onMounted(() => { |
||||
getList(); |
||||
}); |
||||
|
||||
const show = ref(false); |
||||
const activeNegativeId = ref(""); |
||||
|
||||
function handleAction(row) { |
||||
show.value = true; |
||||
activeNegativeId.value = row.id; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
@ -0,0 +1,316 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header> |
||||
<el-form :label-width="80"> |
||||
<el-row> |
||||
<el-col :span="6"> </el-col> |
||||
</el-row> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">基本信息</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 340px"> |
||||
<el-form-item label="受理时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.discoveryTime" |
||||
/> |
||||
</el-form-item> |
||||
</div> |
||||
<el-input |
||||
placeholder="具体问题情况" |
||||
v-model="query.thingDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="初访重访" |
||||
clearable |
||||
v-model="query.initialPetition" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.initialPetition" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">核查情况</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.involveDepartId" |
||||
placeholder="涉及单位" |
||||
/> |
||||
</div> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.handleDepartId" |
||||
placeholder="办理单位" |
||||
/> |
||||
</div> |
||||
<el-input |
||||
placeholder="处理情况简要描述" |
||||
v-model="query.checkStatusDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<div class="flex gap-4"> |
||||
<el-select |
||||
v-model="query.blameKey" |
||||
style="width: 90px" |
||||
@change="delete query.blameValue" |
||||
> |
||||
<el-option value="name" label="姓名" /> |
||||
<el-option value="empNo" label="警号" /> |
||||
<el-option value="idCode" label="身份证" /> |
||||
</el-select> |
||||
<el-input |
||||
placeholder="问责人员(民警、辅警)" |
||||
v-model="query.blameValue" |
||||
clearable |
||||
style="width: 190px" |
||||
/> |
||||
</div> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="办理状态" |
||||
clearable |
||||
v-model="query.processingStatus" |
||||
multiple |
||||
> |
||||
<el-option |
||||
v-for="item in dict.processingStatus" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
<div class="flex between mt-20 mb-26"> |
||||
<div> |
||||
<!-- <el-button type="primary" @click="handleExport" |
||||
>数据导出</el-button |
||||
> --> |
||||
</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> |
||||
<main> |
||||
<div class="table-container" v-loading="loading"> |
||||
<el-table :data="list" ref="tableRef"> |
||||
<el-table-column |
||||
label="投诉渠道" |
||||
prop="channelForFilingComplaints" |
||||
width="90" |
||||
align="center" |
||||
/> |
||||
<el-table-column |
||||
label="受理层级" |
||||
prop="acceptanceLevel" |
||||
width="90" |
||||
/> |
||||
<el-table-column |
||||
label="受理时间" |
||||
prop="discoveryTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="投诉人" |
||||
prop="responderName" |
||||
width="90" |
||||
/> |
||||
<el-table-column |
||||
label="投诉人电话" |
||||
prop="responderPhone" |
||||
width="120" |
||||
/> |
||||
<el-table-column |
||||
label="被投诉单位" |
||||
prop="involveDepartName" |
||||
width="160" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="办理单位" |
||||
show-overflow-tooltip |
||||
width="160" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span |
||||
>{{ row.handleSecondDepartName |
||||
}}{{ row.handleThreeDepartName }}</span |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="具体内容" |
||||
prop="thingDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="问题类别" |
||||
prop="involveProblem" |
||||
width="200" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
getInvolveProblem( |
||||
row.involveProblem, |
||||
dict.suspectProblem |
||||
) || "/" |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="业务类别" |
||||
prop="businessTypeName" |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="处理情况简要描述" |
||||
prop="checkStatusDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column label="初重信访" align="center" width="85"> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
getDictLable( |
||||
dict.initialPetition, |
||||
row.initialPetition |
||||
) |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="群众集访" width="85" align="center"> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.massVisits === true">是</span> |
||||
<span v-if="row.massVisits === false">否</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="办理状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag |
||||
:type=" |
||||
row.processingStatus === |
||||
ProcessingStatus.COMPLETED |
||||
? 'success' |
||||
: 'primary' |
||||
" |
||||
v-if="row.processingStatus" |
||||
>{{ |
||||
getDictLable( |
||||
dict.processingStatus, |
||||
row.processingStatus |
||||
) |
||||
}}</el-tag |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="80" fixed="right"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleAction(row)" |
||||
v-if="row.id" |
||||
>详情</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]" |
||||
:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</main> |
||||
</div> |
||||
|
||||
<negative-dialog |
||||
v-model="show" |
||||
:id="activeNegativeId" |
||||
@close="show = false" |
||||
ref="negativeDialogRef" |
||||
/> |
||||
</template> |
||||
<script setup> |
||||
import { ProcessingStatus } from "@/enums/flowEnums"; |
||||
import { ProblemSources } from "@/enums/dictEnums"; |
||||
import { listNegativeXf } from "@/api/books"; |
||||
import { getDictLable, getInvolveProblem } from "@/utils/util"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"initialPetition", |
||||
"processingStatus", |
||||
"suspectProblem" |
||||
]); |
||||
|
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}); |
||||
|
||||
const list = ref([]); |
||||
const total = ref(0); |
||||
|
||||
const loading = ref(false); |
||||
function getList() { |
||||
loading.value = true; |
||||
listNegativeXf(query.value, ProblemSources.GABXF).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
loading.value = false; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
onMounted(() => { |
||||
getList(); |
||||
}); |
||||
|
||||
const show = ref(false); |
||||
const activeNegativeId = ref(""); |
||||
|
||||
function handleAction(row) { |
||||
show.value = true; |
||||
activeNegativeId.value = row.id; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
@ -0,0 +1,316 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header> |
||||
<el-form :label-width="80"> |
||||
<el-row> |
||||
<el-col :span="6"> </el-col> |
||||
</el-row> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">基本信息</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 340px"> |
||||
<el-form-item label="受理时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.discoveryTime" |
||||
/> |
||||
</el-form-item> |
||||
</div> |
||||
<el-input |
||||
placeholder="具体问题情况" |
||||
v-model="query.thingDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="初访重访" |
||||
clearable |
||||
v-model="query.initialPetition" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.initialPetition" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">核查情况</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.involveDepartId" |
||||
placeholder="涉及单位" |
||||
/> |
||||
</div> |
||||
<div style="width: 160px"> |
||||
<depart-tree-select |
||||
v-model="query.handleDepartId" |
||||
placeholder="办理单位" |
||||
/> |
||||
</div> |
||||
<el-input |
||||
placeholder="处理情况简要描述" |
||||
v-model="query.checkStatusDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<div class="flex gap-4"> |
||||
<el-select |
||||
v-model="query.blameKey" |
||||
style="width: 90px" |
||||
@change="delete query.blameValue" |
||||
> |
||||
<el-option value="name" label="姓名" /> |
||||
<el-option value="empNo" label="警号" /> |
||||
<el-option value="idCode" label="身份证" /> |
||||
</el-select> |
||||
<el-input |
||||
placeholder="问责人员(民警、辅警)" |
||||
v-model="query.blameValue" |
||||
clearable |
||||
style="width: 190px" |
||||
/> |
||||
</div> |
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="办理状态" |
||||
clearable |
||||
v-model="query.processingStatus" |
||||
multiple |
||||
> |
||||
<el-option |
||||
v-for="item in dict.processingStatus" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
<div class="flex between mt-20 mb-26"> |
||||
<div> |
||||
<!-- <el-button type="primary" @click="handleExport" |
||||
>数据导出</el-button |
||||
> --> |
||||
</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> |
||||
<main> |
||||
<div class="table-container" v-loading="loading"> |
||||
<el-table :data="list" ref="tableRef"> |
||||
<el-table-column |
||||
label="投诉渠道" |
||||
prop="channelForFilingComplaints" |
||||
width="90" |
||||
align="center" |
||||
/> |
||||
<el-table-column |
||||
label="受理层级" |
||||
prop="acceptanceLevel" |
||||
width="90" |
||||
/> |
||||
<el-table-column |
||||
label="受理时间" |
||||
prop="discoveryTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="投诉人" |
||||
prop="responderName" |
||||
width="90" |
||||
/> |
||||
<el-table-column |
||||
label="投诉人电话" |
||||
prop="responderPhone" |
||||
width="120" |
||||
/> |
||||
<el-table-column |
||||
label="被投诉单位" |
||||
prop="involveDepartName" |
||||
width="160" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="办理单位" |
||||
show-overflow-tooltip |
||||
width="160" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span |
||||
>{{ row.handleSecondDepartName |
||||
}}{{ row.handleThreeDepartName }}</span |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="具体内容" |
||||
prop="thingDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="问题类别" |
||||
prop="involveProblem" |
||||
width="200" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
getInvolveProblem( |
||||
row.involveProblem, |
||||
dict.suspectProblem |
||||
) || "/" |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="业务类别" |
||||
prop="businessTypeName" |
||||
width="200" |
||||
/> |
||||
<el-table-column |
||||
label="处理情况简要描述" |
||||
prop="checkStatusDesc" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
/> |
||||
<el-table-column label="初重信访" align="center" width="85"> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
getDictLable( |
||||
dict.initialPetition, |
||||
row.initialPetition |
||||
) |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="群众集访" width="85" align="center"> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.massVisits === true">是</span> |
||||
<span v-if="row.massVisits === false">否</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="办理状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag |
||||
:type=" |
||||
row.processingStatus === |
||||
ProcessingStatus.COMPLETED |
||||
? 'success' |
||||
: 'primary' |
||||
" |
||||
v-if="row.processingStatus" |
||||
>{{ |
||||
getDictLable( |
||||
dict.processingStatus, |
||||
row.processingStatus |
||||
) |
||||
}}</el-tag |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="80" fixed="right"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleAction(row)" |
||||
v-if="row.id" |
||||
>详情</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]" |
||||
:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</main> |
||||
</div> |
||||
|
||||
<negative-dialog |
||||
v-model="show" |
||||
:id="activeNegativeId" |
||||
@close="show = false" |
||||
ref="negativeDialogRef" |
||||
/> |
||||
</template> |
||||
<script setup> |
||||
import { ProcessingStatus } from "@/enums/flowEnums"; |
||||
import { ProblemSources } from "@/enums/dictEnums"; |
||||
import { listNegativeXf } from "@/api/books"; |
||||
import { getDictLable, getInvolveProblem } from "@/utils/util"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"initialPetition", |
||||
"processingStatus", |
||||
"suspectProblem", |
||||
]); |
||||
|
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}); |
||||
|
||||
const list = ref([]); |
||||
const total = ref(0); |
||||
|
||||
const loading = ref(false); |
||||
function getList() { |
||||
loading.value = true; |
||||
listNegativeXf(query.value, ProblemSources.GJXFPT).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
loading.value = false; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
onMounted(() => { |
||||
getList(); |
||||
}); |
||||
|
||||
const show = ref(false); |
||||
const activeNegativeId = ref(""); |
||||
|
||||
function handleAction(row) { |
||||
show.value = true; |
||||
activeNegativeId.value = row.id; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
@ -0,0 +1,258 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header> |
||||
<el-form :label-width="140"> |
||||
<el-row> |
||||
<el-col :span="6"> </el-col> |
||||
</el-row> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">基本信息</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 400px"> |
||||
<el-form-item label="监督发现问题时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.discoveryTime" |
||||
/> |
||||
</el-form-item> |
||||
</div> |
||||
<el-input |
||||
placeholder="问题内容" |
||||
v-model="query.thingDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
|
||||
<el-select |
||||
style="width: 160px" |
||||
placeholder="办理状态" |
||||
clearable |
||||
v-model="query.processingStatus" |
||||
multiple |
||||
> |
||||
<el-option |
||||
v-for="item in dict.processingStatus" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</div> |
||||
</div> |
||||
<div class="form-row flex"> |
||||
<label class="text-center">核查情况</label> |
||||
<div class="flex wrap query-box"> |
||||
<div style="width: 190px"> |
||||
<depart-tree-select |
||||
v-model="query.handleDepartId" |
||||
placeholder="监督机构" |
||||
/> |
||||
</div> |
||||
<div style="width: 190px"> |
||||
<depart-tree-select |
||||
v-model="query.involveDepartId" |
||||
placeholder="被监督机构" |
||||
/> |
||||
</div> |
||||
<el-input |
||||
placeholder="回复情况" |
||||
v-model="query.checkStatusDesc" |
||||
clearable |
||||
style="width: 260px" |
||||
/> |
||||
<div class="flex gap-4"> |
||||
<el-select |
||||
v-model="query.blameKey" |
||||
style="width: 90px" |
||||
@change="delete query.blameValue" |
||||
> |
||||
<el-option value="name" label="姓名" /> |
||||
<el-option value="empNo" label="警号" /> |
||||
<el-option value="idCode" label="身份证" /> |
||||
</el-select> |
||||
<el-input |
||||
placeholder="问责人员(民警、辅警)" |
||||
v-model="query.blameValue" |
||||
clearable |
||||
style="width: 190px" |
||||
/> |
||||
|
||||
</div> |
||||
</div> |
||||
</div> |
||||
</el-form> |
||||
<div class="flex between mt-20 mb-26"> |
||||
<div> |
||||
<!-- <el-button type="primary" @click="handleExport" |
||||
>数据导出</el-button |
||||
> --> |
||||
</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> |
||||
<main> |
||||
<div class="table-container" v-loading="loading"> |
||||
<el-table :data="list" ref="tableRef"> |
||||
<el-table-column type="index" width="50" /> |
||||
<el-table-column |
||||
label="监督机构" |
||||
show-overflow-tooltip |
||||
width="160" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span |
||||
>{{ row.handleSecondDepartName |
||||
}}{{ row.handleThreeDepartName }}</span |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="被监督机构" |
||||
prop="involveDepartName" |
||||
width="160" |
||||
show-overflow-tooltip |
||||
/> |
||||
|
||||
<el-table-column |
||||
label="监督发现问题时间" |
||||
prop="discoveryTime" |
||||
width="150" |
||||
/> |
||||
<el-table-column |
||||
label="问题内容" |
||||
prop="thingDesc" |
||||
show-overflow-tooltip |
||||
/> |
||||
|
||||
<el-table-column |
||||
label="回复情况" |
||||
prop="checkStatusDesc" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="是否属实" |
||||
prop="checkStatusName" |
||||
width="120" |
||||
/> |
||||
|
||||
<el-table-column label="办理状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag |
||||
:type=" |
||||
row.processingStatus === |
||||
ProcessingStatus.COMPLETED |
||||
? 'success' |
||||
: 'primary' |
||||
" |
||||
v-if="row.processingStatus" |
||||
>{{ |
||||
getDictLable( |
||||
dict.processingStatus, |
||||
row.processingStatus |
||||
) |
||||
}}</el-tag |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="80" fixed="right"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleAction(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]" |
||||
:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</main> |
||||
</div> |
||||
|
||||
<negative-dialog |
||||
v-model="show" |
||||
:id="activeNegativeId" |
||||
@close="show = false" |
||||
ref="negativeDialogRef" |
||||
/> |
||||
</template> |
||||
<script setup> |
||||
import { ProcessingStatus } from "@/enums/flowEnums"; |
||||
import { listNegativeXcdc } from "@/api/books"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"businessType", |
||||
"inspectCase", |
||||
"isRectify", |
||||
"processingStatus", |
||||
"suspectProblem", |
||||
"policeType", |
||||
"specialSupervision", |
||||
]); |
||||
|
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}); |
||||
|
||||
const list = ref([]); |
||||
const total = ref(0); |
||||
|
||||
const loading = ref(false); |
||||
function getList() { |
||||
loading.value = true; |
||||
listNegativeXcdc(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
loading.value = false; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
blameKey: "name", |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
onMounted(() => { |
||||
getList(); |
||||
}); |
||||
|
||||
const show = ref(false); |
||||
const activeNegativeId = ref(""); |
||||
|
||||
function handleAction(row) { |
||||
show.value = true; |
||||
activeNegativeId.value = row.id; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
Loading…
Reference in new issue