|
|
|
|
@ -14,101 +14,83 @@
|
|
|
|
|
</el-tag> |
|
|
|
|
</div> |
|
|
|
|
<el-form :label-width="120"> |
|
|
|
|
<div class="form-row flex v-center"> |
|
|
|
|
<label class="text-center">常规选项</label> |
|
|
|
|
<div> |
|
|
|
|
<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-form-item label="问题发生时间"> |
|
|
|
|
<date-time-range-picker-ext |
|
|
|
|
v-model="query.happenTime" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="问题录入时间"> |
|
|
|
|
<date-time-range-picker-ext |
|
|
|
|
v-model="query.crtTime" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="样本源头编号"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="query.originId" |
|
|
|
|
clearable |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<div class="form-row flex v-center"> |
|
|
|
|
<label class="text-center">问题选项</label> |
|
|
|
|
<div> |
|
|
|
|
<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-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-form-item label="问题发生时间"> |
|
|
|
|
<date-time-range-picker-ext |
|
|
|
|
v-model="query.happenTime" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="问题录入时间"> |
|
|
|
|
<date-time-range-picker-ext |
|
|
|
|
v-model="query.crtTime" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="样本源头编号"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="query.originId" |
|
|
|
|
clearable |
|
|
|
|
/> |
|
|
|
|
</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 |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="query.responderValue" |
|
|
|
|
clearable |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="事情简述"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="query.thingDesc" |
|
|
|
|
clearable |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
<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="事情简述"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="query.thingDesc" |
|
|
|
|
clearable |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<query-select-row |
|
|
|
|
v-for="(item, index) in queryItems" |
|
|
|
|
:key="index" |
|
|
|
|
@ -213,6 +195,16 @@
|
|
|
|
|
<el-option label="未超时" :value="false" /> |
|
|
|
|
<el-option label="已超时" :value="true" /> |
|
|
|
|
</el-select> |
|
|
|
|
<el-select |
|
|
|
|
size="small" |
|
|
|
|
style="width: 146px" |
|
|
|
|
placeholder="申请延期" |
|
|
|
|
clearable |
|
|
|
|
v-model="query.extensionFlag" |
|
|
|
|
> |
|
|
|
|
<el-option label="已申请" :value="true" /> |
|
|
|
|
<el-option label="未申请" :value="false" /> |
|
|
|
|
</el-select> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</el-form> |
|
|
|
|
@ -449,11 +441,7 @@
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
<el-dialog v-model="editShow" title="问题编辑" width="900px"> |
|
|
|
|
<el-form |
|
|
|
|
label-width="148" |
|
|
|
|
:model="formData" |
|
|
|
|
ref="formRef" |
|
|
|
|
> |
|
|
|
|
<el-form label-width="148" :model="formData" ref="formRef"> |
|
|
|
|
<div style="margin-bottom: 80px"> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
@ -471,7 +459,8 @@
|
|
|
|
|
v-model="formData.problemSourcesCode" |
|
|
|
|
@change=" |
|
|
|
|
(nodeData) => |
|
|
|
|
(formData.problemSources = nodeData.label) |
|
|
|
|
(formData.problemSources = |
|
|
|
|
nodeData.label) |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
@ -505,7 +494,49 @@
|
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
|
<el-row v-if="form.problemSourcesCode === ProblemSources.ZXDC"> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="专项督察" |
|
|
|
|
prop="specialSupervision" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择专项督察', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-select |
|
|
|
|
v-model="form.specialSupervision" |
|
|
|
|
clearable |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in dict.specialSupervision" |
|
|
|
|
:key="item.id" |
|
|
|
|
:label="item.dictLabel" |
|
|
|
|
:value="item.dictValue" |
|
|
|
|
/> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="通报期数" |
|
|
|
|
prop="reportNumber" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择通报期数', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="form.reportNumber" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="涉及案件/警情编号" |
|
|
|
|
@ -585,14 +616,19 @@
|
|
|
|
|
:check-strictly="true" |
|
|
|
|
@node-click=" |
|
|
|
|
(row) => |
|
|
|
|
(formData.involveDepartName = row.shortName) |
|
|
|
|
(formData.involveDepartName = |
|
|
|
|
row.shortName) |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row |
|
|
|
|
v-if="ProblemSources_XFTS.includes(formData.problemSourcesCode)" |
|
|
|
|
v-if=" |
|
|
|
|
ProblemSources_XFTS.includes( |
|
|
|
|
formData.problemSourcesCode |
|
|
|
|
) |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="投诉反映人" prop="responderName"> |
|
|
|
|
@ -665,10 +701,7 @@
|
|
|
|
|
</el-form> |
|
|
|
|
<footer class="flex end"> |
|
|
|
|
<el-button @click="editShow = false" size="large">取消</el-button> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
@click="handleSumbit" |
|
|
|
|
size="large" |
|
|
|
|
<el-button type="primary" @click="handleSumbit" size="large" |
|
|
|
|
>确定</el-button |
|
|
|
|
> |
|
|
|
|
</footer> |
|
|
|
|
@ -677,15 +710,17 @@
|
|
|
|
|
<script setup> |
|
|
|
|
import moment from "moment"; |
|
|
|
|
import { ElLoading } from "element-plus"; |
|
|
|
|
import { listNegative, negativeExport, delNegative, updateNegative } from "@/api/work/negative"; |
|
|
|
|
import { |
|
|
|
|
listNegative, |
|
|
|
|
negativeExport, |
|
|
|
|
delNegative, |
|
|
|
|
updateNegative, |
|
|
|
|
} from "@/api/work/negative"; |
|
|
|
|
import { getDictLable, formatTimeText, getInvolveProblem } from "@/utils/util"; |
|
|
|
|
import feedback from "@/utils/feedback"; |
|
|
|
|
|
|
|
|
|
import { ProcessingStatus } from "@/enums/flowEnums"; |
|
|
|
|
import { |
|
|
|
|
|
|
|
|
|
ProblemSources_XFTS, |
|
|
|
|
} from "@/enums/dictEnums"; |
|
|
|
|
import { ProblemSources_XFTS, ProblemSources } from "@/enums/dictEnums"; |
|
|
|
|
|
|
|
|
|
import useCatchStore from "@/stores/modules/catch"; |
|
|
|
|
|
|
|
|
|
@ -697,6 +732,7 @@ const dict = catchStore.getDicts([
|
|
|
|
|
"processingStatus", |
|
|
|
|
"suspectProblem", |
|
|
|
|
"policeType", |
|
|
|
|
"specialSupervision", |
|
|
|
|
]); |
|
|
|
|
const flowNodes = catchStore.getFlowNodes(); |
|
|
|
|
const dictProblemSources = catchStore.getDictProblemSources(); |
|
|
|
|
@ -756,6 +792,11 @@ function updateQuery() {
|
|
|
|
|
} else { |
|
|
|
|
query.value.crtTime = []; |
|
|
|
|
} |
|
|
|
|
if (route.query.extensionFlag === "true") { |
|
|
|
|
query.value.extensionFlag = true |
|
|
|
|
} else { |
|
|
|
|
query.value.extensionFlag = ''; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
|
@ -792,22 +833,42 @@ async function handleDel(row) {
|
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const editShow = ref(false) |
|
|
|
|
const formData = ref({}) |
|
|
|
|
const formRef = ref(null) |
|
|
|
|
const editShow = ref(false); |
|
|
|
|
const formData = ref({}); |
|
|
|
|
const formRef = ref(null); |
|
|
|
|
|
|
|
|
|
function handleEdit(row) { |
|
|
|
|
formData.value = {...row} |
|
|
|
|
editShow.value = true |
|
|
|
|
console.log(row); |
|
|
|
|
editShow.value = true; |
|
|
|
|
formData.value = { ...row }; |
|
|
|
|
if (row.involveProblem) { |
|
|
|
|
formData.value.involveProblem = JSON.parse(row.involveProblem); |
|
|
|
|
formData.value.involveProblemCode = JSON.parse(row.involveProblem).map( |
|
|
|
|
(item) => item.dictValue |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async function handleSumbit() { |
|
|
|
|
await formRef.value.validate() |
|
|
|
|
await updateNegative(formData.value) |
|
|
|
|
editShow.value = false |
|
|
|
|
await formRef.value.validate(); |
|
|
|
|
await updateNegative(formData.value); |
|
|
|
|
editShow.value = false; |
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function handleSelectInvolveProblem(vals) { |
|
|
|
|
formData.value.involveProblem = vals.map((val) => { |
|
|
|
|
const dictItem = dict.suspectProblem.filter( |
|
|
|
|
(item) => item.dictValue === val |
|
|
|
|
)[0]; |
|
|
|
|
return { |
|
|
|
|
dictType: "suspectProblem", |
|
|
|
|
dictLabel: dictItem.dictLabel, |
|
|
|
|
dictValue: dictItem.dictValue, |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
.form-row { |
|
|
|
|
|