Browse Source

fit: 击查看预警模型时,风险问题相关的记录显示“查看预警问题”和“查看风险问题”跳转至相关列表时,显示对应预警模型产生的数据;

fit: 调整所有信息展示界面,将Lable和内容的显示区别开;
fit: 点击“修改核查结果”后按钮改为“保存核查结果”,点击修改核查结果后点击“审批通过”提示“是否保存此次核查结果内容修改”,点击确认进行内容保存并提交审批。
fit: 警员中心,增加逻辑删除,删除时要填写原因。并将功能开放给二级、三级机构使用;
fit: 综合查询:新增问题涉及人员信息查询功能
fit: 我的待办(我的已办):增加至和综合查询一样的搜索条件
main
wxc 1 year ago
parent
commit
2029458b01
  1. 5
      src/api/system/police.ts
  2. 2
      src/components/negative/confirmation-completion.vue
  3. 6
      src/components/negative/dialog.vue
  4. 2
      src/style/public.scss
  5. 72
      src/views/sensitivePerception/Model.vue
  6. 13
      src/views/system/Police.vue
  7. 266
      src/views/work/Done.vue
  8. 230
      src/views/work/Query.vue
  9. 298
      src/views/work/Todo.vue

5
src/api/system/police.ts

@ -21,9 +21,10 @@ export function updatePolice(body) {
}); });
} }
export function delPolice(id) { export function delPolice(id, body) {
return request.del({ return request.del({
url: `/police/${id}` url: `/police/${id}`,
body
}); });
} }

2
src/components/negative/confirmation-completion.vue

@ -203,7 +203,7 @@
</el-form> </el-form>
</div> </div>
<footer class="flex end mt-40"> <footer class="flex end mt-40">
<el-button size="large">取消</el-button> <el-button size="large" @click="show = false">取消</el-button>
<el-button type="primary" size="large" @click="submit" <el-button type="primary" size="large" @click="submit"
>认定办结</el-button >认定办结</el-button
> >

6
src/components/negative/dialog.vue

@ -175,7 +175,7 @@
item.actionKey === item.actionKey ===
FlowActionEnum.THREE_SIGN_RETURN)) FlowActionEnum.THREE_SIGN_RETURN))
" "
>{{ item.buttonLabel }}</el-button >{{ item.actionKey === 'update_verify' && verifyEditFlag ? '保存核查内容' : item.buttonLabel }}</el-button
> >
</div> </div>
</footer> </footer>
@ -317,6 +317,10 @@ async function handleExecute(action, data) {
verifyEditFlag.value = true; verifyEditFlag.value = true;
return return
} }
if (action.actionKey !== 'update_verify' && verifyEditFlag.value) {
feedback.confirm('请先“保存核查内容”再操作')
return
}
if (action.validateForm) { if (action.validateForm) {
if (action.actionKey !== FlowActionEnum.SAVE) { if (action.actionKey !== FlowActionEnum.SAVE) {
try { try {

2
src/style/public.scss

@ -374,7 +374,7 @@ svg + span {
label { label {
width: var(--label-width); width: var(--label-width);
text-align: right; text-align: right;
color: #666; color: #999;
} }
> span { > span {

72
src/views/sensitivePerception/Model.vue

@ -353,7 +353,11 @@
DistributionCycle.WEEKLY DistributionCycle.WEEKLY
" "
> >
<el-select style="width: 120px" clearable v-model="form.distributionCycleDayOfWeek"> <el-select
style="width: 120px"
clearable
v-model="form.distributionCycleDayOfWeek"
>
<el-option <el-option
v-for="(item, index) in WEEKS" v-for="(item, index) in WEEKS"
:key="index" :key="index"
@ -686,8 +690,15 @@
<h4 style="margin: 10px 0" class="text-primary">预警记录</h4> <h4 style="margin: 10px 0" class="text-primary">预警记录</h4>
<div style="min-height: 300px"> <div style="min-height: 300px">
<div class="table-container"> <div class="table-container">
<el-table :data="tableData" size="small"> <el-table
<el-table-column label="同步时间" prop="createTime" /> :data="tableData"
size="small"
>
<template v-if="activeModel.classId !== GRJDBLFX_CLASS_ID">
<el-table-column
label="同步时间"
prop="createTime"
/>
<el-table-column <el-table-column
label="预警条数" label="预警条数"
prop="size" prop="size"
@ -710,6 +721,49 @@
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
</template>
<template v-else>
<el-table-column
label="开始时间"
prop="startTime"
/>
<el-table-column
label="结束时间"
prop="endTime"
/>
<el-table-column
label="新增条数"
prop="insertSize"
align="center"
/>
<el-table-column
label="更新条数"
prop="updateSize"
align="center"
/>
<el-table-column label="状态" align="center">
<template #default="{ row }">
<el-tag
type="success"
v-if="row.state === 1"
>成功</el-tag
>
<el-tag
type="primary"
v-if="row.state === 0"
>进行中</el-tag
>
<el-tooltip
effect="dark"
:content="row.errMsg"
placement="top-start"
v-if="row.state === -1"
>
<el-tag type="danger">失败</el-tag>
</el-tooltip>
</template>
</el-table-column>
</template>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -724,12 +778,6 @@
</footer> </footer>
</el-dialog> </el-dialog>
<el-dialog
title="线索详细信息配置"
v-model="detailConfigShow"
width="800px"
>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { import {
@ -803,8 +851,8 @@ onMounted(() => {
classes.value = data; classes.value = data;
}); });
listRiskScoreRuleTree().then((data) => { listRiskScoreRuleTree().then((data) => {
treeOptions.value = data treeOptions.value = data;
}) });
}); });
function handleChangeClass(id) { function handleChangeClass(id) {
@ -861,8 +909,8 @@ async function handleSubmit() {
activeModel.value = await updateModel(form.value); activeModel.value = await updateModel(form.value);
} }
getList(); getList();
initForm();
show.value = false; show.value = false;
initForm();
feedback.msgSuccess("操作成功"); feedback.msgSuccess("操作成功");
} }

13
src/views/system/Police.vue

@ -612,8 +612,17 @@ function getWorkYear(employmentDate) {
} }
async function handleDel(row) { async function handleDel(row) {
await feedback.confirm(`确定要删除 ${row.name}`); const result = await feedback.prompt(`删除原因`, `确定要删除 ${row.name}`, {
await delPolice(row.id); inputType: 'textarea',
inputPlaceholder: '请输入',
inputErrorMessage: '请输入删除原因',
inputValidator: (val) => {
return val ? true: false;
}
})
await delPolice(row.id, {
reason: result.value
});
feedback.msgSuccess("操作成功"); feedback.msgSuccess("操作成功");
getList(); getList();
} }

266
src/views/work/Done.vue

@ -1,63 +1,253 @@
<template> <template>
<div class="container"> <div class="container">
<header> <header>
<el-form :label-width="114"> <el-form :label-width="120">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="问题发生时间"> <el-form-item label="问题发现时间">
<date-time-range-picker-ext v-model="query.happenTime"/> <date-time-range-picker-ext
</el-form-item> v-model="query.discoveryTime"
</el-col> />
<el-col :span="6">
<el-form-item label="问题来源">
<dict-select name="problemSources" v-model="query.problemSourcesCode" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="业务类别">
<dict-select name="businessType" v-model="query.businessType" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="涉嫌问题"> <el-form-item label="问题发生时间">
<dict-select name="suspectProblem" v-model="query.involveProblem" /> <date-time-range-picker-ext
v-model="query.happenTime"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="问题内容"> <el-form-item label="问题录入时间">
<el-input placeholder="请输入问题内容" v-model="query.thingDesc" clearable/> <date-time-range-picker-ext
v-model="query.crtTime"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> </el-row>
<el-form-item label="涉及单位"> <div class="form-row flex">
<label class="text-center">问题信息</label>
<div class="flex wrap query-box">
<el-input
placeholder="问题编号 / 样本源头编号"
v-model="query.originId"
clearable
style="width: 200px"
size="small"
/>
<el-input
placeholder="事情简要描述"
v-model="query.thingDesc"
clearable
style="width: 280px"
size="small"
/>
<el-select
size="small"
style="width: 146px"
placeholder="业务类别"
clearable
v-model="query.businessTypeCode"
>
<el-option
v-for="item in dict.businessType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
<el-tree-select
:data="dictProblemSources"
:props="{ value: 'id' }"
node-key="id"
v-model="query.problemSourcesCode"
clearable
filterable
size="small"
style="width: 180px"
placeholder="问题来源"
/>
<el-select
size="small"
style="width: 146px"
placeholder="专项督察"
clearable
v-model="query.specialSupervision"
>
<el-option
v-for="item in dict.specialSupervision"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
<el-input
placeholder="通报期数"
size="small"
style="width: 146px"
v-model="query.reportNumber"
clearable
/>
<div style="width: 180px">
<depart-tree-select <depart-tree-select
v-model="query.involveDepartId" v-model="query.involveDepartId"
:check-strictly="false" placeholder="涉及单位"
size="small"
/> />
</el-form-item> </div>
</el-col>
<el-col :span="6"> </div>
<el-form-item label="办理单位"> </div>
<div class="form-row flex">
<label class="text-center">核查情况</label>
<div class="flex wrap query-box">
<div style="width: 180px">
<depart-tree-select <depart-tree-select
v-model="query.handleThreeDepartId" v-model="query.handleDepartId"
:check-strictly="false" placeholder="办理单位"
size="small"
/> />
</el-form-item> </div>
</el-col> <el-select
<el-col :span="6"> size="small"
<el-form-item label="办理状态"> style="width: 120px"
<dict-select name="processingStatus" v-model="query.processingStatus" /> placeholder="是否属实"
</el-form-item> clearable
</el-col> v-model="query.checkStatus"
</el-row> >
<el-option
v-for="item in dict.inspectCase"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
<el-select
size="small"
style="width: 120px"
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>
<div class="flex gap-4">
<el-select
v-model="query.blameKey"
style="width: 120px"
@change="delete query.blameValue"
size="small"
>
<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
size="small"
style="width: 160px"
/>
</div>
</div>
</div>
<div class="form-row flex">
<label class="text-center">其他选项</label>
<div class="flex wrap query-box">
<el-select
size="small"
style="width: 120px"
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>
<el-select
size="small"
style="width: 150px"
placeholder="流程阶段"
clearable
v-model="query.flowKey"
>
<el-option
v-for="item in flowNodes"
:key="item.flowKey"
:label="item.flowName"
:value="item.flowKey"
/>
</el-select>
<el-select
size="small"
style="width: 120px"
placeholder="是否超时"
clearable
v-model="query.timeoutFlag"
>
<el-option label="未超时" :value="false" />
<el-option label="已超时" :value="true" />
</el-select>
<el-select
size="small"
style="width: 120px"
placeholder="申请延期"
clearable
v-model="query.extensionFlag"
>
<el-option label="已申请" :value="true" />
<el-option label="未申请" :value="false" />
</el-select>
<el-select
size="small"
style="width: 146px"
placeholder="下发单位的层级"
clearable
v-model="query.crtDepartLevel"
>
<el-option label="市局下发" :value="0" />
<el-option label="二级机构下发" :value="2" />
</el-select>
<div class="flex gap-4">
<el-select
v-model="query.responderKey"
style="width: 120px"
@change="delete query.responderValue"
size="small"
>
<el-option value="name" label="姓名" />
<el-option value="phone" label="电话" />
</el-select>
<el-input
placeholder="投诉反映人"
v-model="query.responderValue"
clearable
size="small"
style="width: 160px"
/>
</div>
</div>
</div>
</el-form> </el-form>
<div class="mb-25 flex end"> <div class="flex end mt-20 mb-26">
<div> <div>
<el-button type="primary" @click="getList"> <el-button type="primary" @click="getList">
<template #icon> <template #icon
<icon name="el-icon-Search" /> ><icon name="el-icon-Search"
</template> /></template>
查询</el-button 查询</el-button
> >
<el-button @click="reset">重置</el-button> <el-button @click="reset">重置</el-button>

230
src/views/work/Query.vue

@ -1,18 +1,6 @@
<template> <template>
<div class="container"> <div class="container">
<header> <header>
<div class="crumbs flex gap wrap">
<el-tag
type="info"
closable
v-for="item in queryCrumbs"
:key="item.key"
@close="removeQueryItem(item.key)"
>
<span>{{ item.label }}</span>
<span class="text-primary">{{ item.text }}</span>
</el-tag>
</div>
<el-form :label-width="120"> <el-form :label-width="120">
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
@ -36,65 +24,38 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> </el-row>
<el-form-item label="样本源头编号"> <div class="form-row flex">
<label class="text-center">问题信息</label>
<div class="flex wrap query-box">
<el-input <el-input
placeholder="请输入" placeholder="问题编号 / 样本源头编号"
v-model="query.originId" v-model="query.originId"
clearable clearable
style="width: 200px"
size="small"
/> />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="涉及单位">
<depart-tree-select
v-model="query.involveDepartId"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="办理单位">
<depart-tree-select
v-model="query.handleDepartId"
/>
</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 <el-input
placeholder="请输入" placeholder="事情简要描述"
v-model="query.responderValue" v-model="query.thingDesc"
clearable clearable
style="width: 280px"
size="small"
/> />
</div> <el-select
</el-form-item> size="small"
</el-col> style="width: 146px"
<el-col :span="6"> placeholder="业务类别"
<el-form-item label="事情简述">
<el-input
placeholder="请输入"
v-model="query.thingDesc"
clearable clearable
v-model="query.businessTypeCode"
>
<el-option
v-for="item in dict.businessType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/> />
</el-form-item> </el-select>
</el-col>
</el-row>
<div class="form-row flex">
<label class="text-center">其他选项</label>
<div class="flex wrap query-box">
<el-tree-select <el-tree-select
:data="dictProblemSources" :data="dictProblemSources"
:props="{ value: 'id' }" :props="{ value: 'id' }"
@ -106,26 +67,53 @@
style="width: 180px" style="width: 180px"
placeholder="问题来源" placeholder="问题来源"
/> />
<el-select <el-select
size="small" size="small"
style="width: 146px" style="width: 146px"
placeholder="业务类别" placeholder="专项督察"
clearable clearable
v-model="query.businessTypeCode" v-model="query.specialSupervision"
> >
<el-option <el-option
v-for="item in dict.businessType" v-for="item in dict.specialSupervision"
:key="item.id" :key="item.id"
:label="item.dictLabel" :label="item.dictLabel"
:value="item.dictValue" :value="item.dictValue"
/> />
</el-select> </el-select>
<el-input
placeholder="通报期数"
size="small"
style="width: 146px"
v-model="query.reportNumber"
clearable
/>
<div style="width: 180px">
<depart-tree-select
v-model="query.involveDepartId"
placeholder="涉及单位"
size="small"
/>
</div>
</div>
</div>
<div class="form-row flex">
<label class="text-center">核查情况</label>
<div class="flex wrap query-box">
<div style="width: 180px">
<depart-tree-select
v-model="query.handleDepartId"
placeholder="办理单位"
size="small"
/>
</div>
<el-select <el-select
size="small" size="small"
style="width: 120px" style="width: 120px"
placeholder="核查情况" placeholder="是否属实"
clearable clearable
v-model="query.checkStatus" v-model="query.checkStatus"
> >
@ -150,6 +138,30 @@
:value="item.dictValue" :value="item.dictValue"
/> />
</el-select> </el-select>
<div class="flex gap-4">
<el-select
v-model="query.blameKey"
style="width: 120px"
@change="delete query.blameValue"
size="small"
>
<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
size="small"
style="width: 160px"
/>
</div>
</div>
</div>
<div class="form-row flex">
<label class="text-center">其他选项</label>
<div class="flex wrap query-box">
<el-select <el-select
size="small" size="small"
style="width: 120px" style="width: 120px"
@ -202,35 +214,31 @@
<el-select <el-select
size="small" size="small"
style="width: 146px" style="width: 146px"
placeholder="专项督察" placeholder="下发单位的层级"
clearable clearable
v-model="query.specialSupervision" v-model="query.crtDepartLevel"
> >
<el-option <el-option label="市局下发" :value="0" />
v-for="item in dict.specialSupervision" <el-option label="二级机构下发" :value="2" />
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select> </el-select>
<el-input placeholder="通报期数" size="small" style="width: 146px" v-model="query.reportNumber" clearable /> <div class="flex gap-4">
<!-- <el-input placeholder="任务ID" size="small" style="width: 146px" clearable /> -->
<el-select <el-select
v-model="query.responderKey"
style="width: 120px"
@change="delete query.responderValue"
size="small" size="small"
style="width: 146px"
placeholder="下发单位的层级"
clearable
v-model="query.crtDepartLevel"
> >
<el-option <el-option value="name" label="姓名" />
label="市局下发" <el-option value="phone" label="电话" />
:value="0"
/>
<el-option
label="二级机构下发"
:value="2"
/>
</el-select> </el-select>
<el-input
placeholder="投诉反映人"
v-model="query.responderValue"
clearable
size="small"
style="width: 160px"
/>
</div>
</div> </div>
</div> </div>
</el-form> </el-form>
@ -251,7 +259,11 @@
</header> </header>
<main> <main>
<div class="table-container" v-loading="loading"> <div class="table-container" v-loading="loading">
<el-table :data="list" @sort-change="handleTableSort" ref="tableRef"> <el-table
:data="list"
@sort-change="handleTableSort"
ref="tableRef"
>
<el-table-column type="expand"> <el-table-column type="expand">
<template #default="{ row }"> <template #default="{ row }">
<div class="row mt-10"> <div class="row mt-10">
@ -343,7 +355,6 @@
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column label="办理单位" show-overflow-tooltip> <el-table-column label="办理单位" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<span <span
@ -521,8 +532,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row > <el-row>
<el-col :span="12" v-if="formData.problemSourcesCode === ProblemSources.ZXDC"> <el-col
:span="12"
v-if="
formData.problemSourcesCode === ProblemSources.ZXDC
"
>
<el-form-item <el-form-item
label="专项督察" label="专项督察"
prop="specialSupervision" prop="specialSupervision"
@ -545,7 +561,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12" v-if="form.problemSourcesCode === ProblemSources.ZXDC || form.problemSourcesCode === ProblemSources.XCDC"> <el-col
:span="12"
v-if="
form.problemSourcesCode === ProblemSources.ZXDC ||
form.problemSourcesCode === ProblemSources.XCDC
"
>
<el-form-item <el-form-item
label="通报期数" label="通报期数"
prop="reportNumber" prop="reportNumber"
@ -783,23 +805,23 @@ function getList() {
function handleTableSort(orderObj) { function handleTableSort(orderObj) {
if (orderObj.order) { if (orderObj.order) {
query.value.order = orderObj.order query.value.order = orderObj.order;
query.value.orderProp = orderObj.prop query.value.orderProp = orderObj.prop;
} else { } else {
query.value.order = '' query.value.order = "";
query.value.orderProp = '' query.value.orderProp = "";
} }
getList() getList();
} }
const tableRef = ref() const tableRef = ref();
function reset() { function reset() {
query.value = { query.value = {
current: 1, current: 1,
size: 10, size: 10,
responderKey: "name", responderKey: "name",
}; };
tableRef.value.clearSort() tableRef.value.clearSort();
getList(); getList();
// //
router.push("/query"); router.push("/query");
@ -829,9 +851,9 @@ function updateQuery() {
query.value.crtTime = []; query.value.crtTime = [];
} }
if (route.query.extensionFlag === "true") { if (route.query.extensionFlag === "true") {
query.value.extensionFlag = true query.value.extensionFlag = true;
} else { } else {
query.value.extensionFlag = ''; query.value.extensionFlag = "";
} }
} }
@ -907,6 +929,4 @@ function handleSelectInvolveProblem(vals) {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>

298
src/views/work/Todo.vue

@ -1,8 +1,15 @@
<template> <template>
<div class="container"> <div class="container">
<header> <header>
<el-form :label-width="114"> <el-form :label-width="120">
<el-row> <el-row>
<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-col :span="6">
<el-form-item label="问题发生时间"> <el-form-item label="问题发生时间">
<date-time-range-picker-ext <date-time-range-picker-ext
@ -11,22 +18,36 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="问题来源"> <el-form-item label="问题录入时间">
<el-tree-select <date-time-range-picker-ext
:data="dictProblemSources" v-model="query.crtTime"
:props="{ value: 'id' }"
node-key="id"
v-model="query.problemSourcesCode"
clearable
filterable
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> </el-row>
<el-form-item label="业务类别"> <div class="form-row flex">
<label class="text-center">问题信息</label>
<div class="flex wrap query-box">
<el-input
placeholder="问题编号 / 样本源头编号"
v-model="query.originId"
clearable
style="width: 200px"
size="small"
/>
<el-input
placeholder="事情简要描述"
v-model="query.thingDesc"
clearable
style="width: 280px"
size="small"
/>
<el-select <el-select
v-model="query.businessTypeCode" size="small"
style="width: 146px"
placeholder="业务类别"
clearable clearable
v-model="query.businessTypeCode"
> >
<el-option <el-option
v-for="item in dict.businessType" v-for="item in dict.businessType"
@ -35,62 +56,61 @@
:value="item.dictValue" :value="item.dictValue"
/> />
</el-select> </el-select>
</el-form-item> <el-tree-select
</el-col> :data="dictProblemSources"
<el-col :span="6"> :props="{ value: 'id' }"
<el-form-item label="涉嫌问题"> node-key="id"
<el-select v-model="query.involveProblem" clearable> v-model="query.problemSourcesCode"
clearable
filterable
size="small"
style="width: 180px"
placeholder="问题来源"
/>
<el-select
size="small"
style="width: 146px"
placeholder="专项督察"
clearable
v-model="query.specialSupervision"
>
<el-option <el-option
v-for="item in dict.suspectProblem" v-for="item in dict.specialSupervision"
:key="item.id" :key="item.id"
:label="item.dictLabel" :label="item.dictLabel"
:value="item.dictLabel" :value="item.dictValue"
/> />
</el-select> </el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="问题内容">
<el-input <el-input
placeholder="请输入问题内容" placeholder="通报期数"
v-model="query.thingDesc" size="small"
style="width: 146px"
v-model="query.reportNumber"
clearable clearable
/> />
</el-form-item> <div style="width: 180px">
</el-col>
<el-col :span="6">
<el-form-item label="涉及单位">
<depart-tree-select <depart-tree-select
v-model="query.involveDepartId" v-model="query.involveDepartId"
:check-strictly="false" placeholder="涉及单位"
/> size="small"
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="办理单位">
<depart-tree-select
v-model="query.handleThreeDepartId"
:check-strictly="false"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="办理状态">
<dict-select
name="processingStatus"
v-model="query.processingStatus"
/> />
</el-form-item> </div>
</el-col> </div>
<el-col :span="6"> </el-col> </div>
</el-row>
<div class="form-row flex"> <div class="form-row flex">
<label class="text-center">其他选项</label> <label class="text-center">核查情况</label>
<div class="flex wrap query-box"> <div class="flex wrap query-box">
<div style="width: 180px">
<depart-tree-select
v-model="query.handleDepartId"
placeholder="办理单位"
size="small"
/>
</div>
<el-select <el-select
size="small" size="small"
style="width: 120px" style="width: 120px"
placeholder="核查情况" placeholder="是否属实"
clearable clearable
v-model="query.checkStatus" v-model="query.checkStatus"
> >
@ -102,39 +122,141 @@
/> />
</el-select> </el-select>
<el-select <el-select
placeholder="处置结果"
size="small" size="small"
style="width: 180px" style="width: 120px"
v-model="query.handleResultCode" placeholder="是否整改"
clearable clearable
multiple v-model="query.isRectifyCode"
> >
<el-option
v-for="item in dict.isRectify"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
<div class="flex gap-4">
<el-select
v-model="query.blameKey"
style="width: 120px"
@change="delete query.blameValue"
size="small"
>
<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
size="small"
style="width: 160px"
/>
</div>
<el-select placeholder="处置结果"
v-model="query.handleResultCode"
clearable
size="small"
style="width: 280px" multiple>
<el-option <el-option
v-for="item in dict.handleResult" v-for="item in dict.handleResult"
:key="item.dictValue" :key="item.id"
:label="item.dictLabel" :label="item.dictLabel"
:value="item.dictValue" :value="item.dictValue"
/> />
</el-select> </el-select>
</div> </div>
</div> </div>
</el-form> <div class="form-row flex">
<div class="mb-25 flex between"> <label class="text-center">其他选项</label>
<div> <div class="flex wrap query-box">
<el-button <el-select
type="primary" size="small"
@click="addShow = true" style="width: 120px"
v-perms="['negative:add']" placeholder="办理状态"
><template #icon> clearable
<icon name="el-icon-Plus" /> </template v-model="query.processingStatus"
>问题下发</el-button multiple
> >
<el-option
v-for="item in dict.processingStatus"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
<el-select
size="small"
style="width: 150px"
placeholder="流程阶段"
clearable
v-model="query.flowKey"
>
<el-option
v-for="item in flowNodes"
:key="item.flowKey"
:label="item.flowName"
:value="item.flowKey"
/>
</el-select>
<el-select
size="small"
style="width: 120px"
placeholder="是否超时"
clearable
v-model="query.timeoutFlag"
>
<el-option label="未超时" :value="false" />
<el-option label="已超时" :value="true" />
</el-select>
<el-select
size="small"
style="width: 120px"
placeholder="申请延期"
clearable
v-model="query.extensionFlag"
>
<el-option label="已申请" :value="true" />
<el-option label="未申请" :value="false" />
</el-select>
<el-select
size="small"
style="width: 146px"
placeholder="下发单位的层级"
clearable
v-model="query.crtDepartLevel"
>
<el-option label="市局下发" :value="0" />
<el-option label="二级机构下发" :value="2" />
</el-select>
<div class="flex gap-4">
<el-select
v-model="query.responderKey"
style="width: 120px"
@change="delete query.responderValue"
size="small"
>
<el-option value="name" label="姓名" />
<el-option value="phone" label="电话" />
</el-select>
<el-input
placeholder="投诉反映人"
v-model="query.responderValue"
clearable
size="small"
style="width: 160px"
/>
</div>
</div>
</div> </div>
</el-form>
<div class="flex end mt-20 mb-26">
<div> <div>
<el-button type="primary" @click="getList"> <el-button type="primary" @click="getList">
<template #icon> <template #icon
<icon name="el-icon-Search" /> ><icon name="el-icon-Search"
</template> /></template>
查询</el-button 查询</el-button
> >
<el-button @click="reset">重置</el-button> <el-button @click="reset">重置</el-button>
@ -197,7 +319,11 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="问题发现时间" prop="discoveryTime" width="160" /> <el-table-column
label="问题发现时间"
prop="discoveryTime"
width="150"
/>
<el-table-column label="问题来源" prop="problemSources" /> <el-table-column label="问题来源" prop="problemSources" />
<el-table-column label="业务类别" prop="businessTypeName" /> <el-table-column label="业务类别" prop="businessTypeName" />
<el-table-column label="涉嫌问题"> <el-table-column label="涉嫌问题">
@ -223,7 +349,12 @@
> >
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="核查情况" prop="checkStatusName" width="100" align="center" /> <el-table-column
label="核查情况"
prop="checkStatusName"
width="100"
align="center"
/>
<el-table-column label="办理状态"> <el-table-column label="办理状态">
<template #default="{ row }"> <template #default="{ row }">
<el-tag>{{ <el-tag>{{
@ -234,6 +365,25 @@
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="流程限时" width="150" align="center">
<template #default="{ row }">
<countdown
:time="row.remainingDuration"
v-if="
row.remainingDuration &&
row.processingStatus !==
ProcessingStatus.COMPLETED
"
/>
<el-tag
v-else-if="row.handleTimeout"
type="danger"
effect="dark"
>办理超时
{{ formatTimeText(row.handleTimeout) }}</el-tag
>
</template>
</el-table-column>
<el-table-column label="流程节点"> <el-table-column label="流程节点">
<template #default="{ row }"> <template #default="{ row }">
<el-tag v-if="row.flowKey">{{ <el-tag v-if="row.flowKey">{{
@ -282,8 +432,8 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { listTodos } from "@/api/work"; import { listTodos } from "@/api/work";
import { ProcessingStatus } from "@/enums/flowEnums";
import { getDictLable, getInvolveProblem } from "@/utils/util"; import { getDictLable, getInvolveProblem, formatTimeText } from "@/utils/util";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";

Loading…
Cancel
Save