|
|
|
|
@ -361,14 +361,6 @@
|
|
|
|
|
>办理超时 |
|
|
|
|
{{ formatTimeText(row.handleTimeout) }}</el-tag |
|
|
|
|
> |
|
|
|
|
<el-tag |
|
|
|
|
v-else-if=" |
|
|
|
|
row.processingStatus === |
|
|
|
|
ProcessingStatus.COMPLETED |
|
|
|
|
" |
|
|
|
|
type="success" |
|
|
|
|
>未超时</el-tag |
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column label="办理状态" width="110"> |
|
|
|
|
@ -408,7 +400,7 @@
|
|
|
|
|
}}</span> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column label="操作" width="120"> |
|
|
|
|
<el-table-column label="操作" width="160"> |
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
@ -416,6 +408,13 @@
|
|
|
|
|
@click="handleAction(row)" |
|
|
|
|
>详情</el-button |
|
|
|
|
> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
link |
|
|
|
|
@click="handleEdit(row)" |
|
|
|
|
v-perms="['negative:edit']" |
|
|
|
|
>编辑</el-button |
|
|
|
|
> |
|
|
|
|
<el-button |
|
|
|
|
type="danger" |
|
|
|
|
link |
|
|
|
|
@ -448,15 +447,246 @@
|
|
|
|
|
:id="activeNegativeId" |
|
|
|
|
@close="show = false" |
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
<el-dialog v-model="editShow" title="问题编辑" width="900px"> |
|
|
|
|
<el-form |
|
|
|
|
label-width="148" |
|
|
|
|
:model="formData" |
|
|
|
|
ref="formRef" |
|
|
|
|
> |
|
|
|
|
<div style="margin-bottom: 80px"> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="问题来源" |
|
|
|
|
prop="problemSourcesCode" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择问题来源', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<dict-select |
|
|
|
|
name="problemSources" |
|
|
|
|
v-model="formData.problemSourcesCode" |
|
|
|
|
@change=" |
|
|
|
|
(nodeData) => |
|
|
|
|
(formData.problemSources = nodeData.label) |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="业务类别" |
|
|
|
|
prop="businessTypeCode" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择业务类别', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-select |
|
|
|
|
v-model="formData.businessTypeCode" |
|
|
|
|
@change=" |
|
|
|
|
(val) => |
|
|
|
|
(formData.businessTypeName = |
|
|
|
|
dict.businessType.filter( |
|
|
|
|
(item) => item.dictValue === val |
|
|
|
|
)[0].dictLabel) |
|
|
|
|
" |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in dict.businessType" |
|
|
|
|
: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="caseNumber" |
|
|
|
|
> |
|
|
|
|
<el-input |
|
|
|
|
v-model="formData.caseNumber" |
|
|
|
|
placeholder="请输入" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="涉嫌问题" |
|
|
|
|
prop="involveProblem" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择涉嫌问题', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-select |
|
|
|
|
v-model="formData.involveProblemCode" |
|
|
|
|
multiple |
|
|
|
|
@change="handleSelectInvolveProblem" |
|
|
|
|
clearable |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in dict.suspectProblem" |
|
|
|
|
:key="item.id" |
|
|
|
|
:label="item.dictLabel" |
|
|
|
|
:value="item.dictValue" |
|
|
|
|
/> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item-ext |
|
|
|
|
label="涉及警种" |
|
|
|
|
content="囊括了市局除分县市局以外的所有业务警种,便于后期统计分析业务条线的问题。" |
|
|
|
|
prop="policeType" |
|
|
|
|
> |
|
|
|
|
<el-select |
|
|
|
|
v-model="formData.policeType" |
|
|
|
|
@change=" |
|
|
|
|
(val) => |
|
|
|
|
(formData.policeTypeName = |
|
|
|
|
dict.policeType.filter( |
|
|
|
|
(item) => item.dictValue === val |
|
|
|
|
)[0].dictLabel) |
|
|
|
|
" |
|
|
|
|
clearable |
|
|
|
|
> |
|
|
|
|
<el-option |
|
|
|
|
v-for="item in dict.policeType" |
|
|
|
|
:key="item.id" |
|
|
|
|
:label="item.dictLabel" |
|
|
|
|
:value="item.dictValue" |
|
|
|
|
/> |
|
|
|
|
</el-select> |
|
|
|
|
</el-form-item-ext> |
|
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="问题涉及单位" |
|
|
|
|
prop="involveDepartId" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择问题涉及单位', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<depart-tree-select |
|
|
|
|
v-model="formData.involveDepartId" |
|
|
|
|
:check-strictly="true" |
|
|
|
|
@node-click=" |
|
|
|
|
(row) => |
|
|
|
|
(formData.involveDepartName = row.shortName) |
|
|
|
|
" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row |
|
|
|
|
v-if="ProblemSources_XFTS.includes(formData.problemSourcesCode)" |
|
|
|
|
> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="投诉反映人" prop="responderName"> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="formData.responderName" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="联系电话" prop="contactPhone"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="formData.contactPhone" |
|
|
|
|
placeholder="请输入" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item |
|
|
|
|
label="问题发现时间" |
|
|
|
|
prop="discoveryTime" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请选择问题发现时间', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-date-picker |
|
|
|
|
v-model="formData.discoveryTime" |
|
|
|
|
type="datetime" |
|
|
|
|
placeholder="请选择" |
|
|
|
|
value-format="YYYY-MM-DD HH:mm" |
|
|
|
|
time-format="HH:mm" |
|
|
|
|
style="width: 100%" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="12"> |
|
|
|
|
<el-form-item label="问题发生时间" prop="happenTime"> |
|
|
|
|
<el-date-picker |
|
|
|
|
v-model="formData.happenTime" |
|
|
|
|
type="datetime" |
|
|
|
|
placeholder="请选择" |
|
|
|
|
value-format="YYYY-MM-DD HH:mm" |
|
|
|
|
time-format="HH:mm" |
|
|
|
|
style="width: 100%" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
<el-form-item |
|
|
|
|
label="事情简要描述" |
|
|
|
|
prop="thingDesc" |
|
|
|
|
:rules="{ |
|
|
|
|
required: true, |
|
|
|
|
message: '请输入事情简要描述', |
|
|
|
|
trigger: ['blur'], |
|
|
|
|
}" |
|
|
|
|
> |
|
|
|
|
<el-input |
|
|
|
|
type="textarea" |
|
|
|
|
placeholder="请输入" |
|
|
|
|
v-model="formData.thingDesc" |
|
|
|
|
:autosize="{ minRows: 4 }" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</div> |
|
|
|
|
</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 |
|
|
|
|
> |
|
|
|
|
</footer> |
|
|
|
|
</el-dialog> |
|
|
|
|
</template> |
|
|
|
|
<script setup> |
|
|
|
|
import moment from "moment"; |
|
|
|
|
import { ElLoading } from "element-plus"; |
|
|
|
|
import { listNegative, negativeExport, delNegative } 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 useCatchStore from "@/stores/modules/catch"; |
|
|
|
|
|
|
|
|
|
const catchStore = useCatchStore(); |
|
|
|
|
@ -465,6 +695,8 @@ const dict = catchStore.getDicts([
|
|
|
|
|
"inspectCase", |
|
|
|
|
"isRectify", |
|
|
|
|
"processingStatus", |
|
|
|
|
"suspectProblem", |
|
|
|
|
"policeType", |
|
|
|
|
]); |
|
|
|
|
const flowNodes = catchStore.getFlowNodes(); |
|
|
|
|
const dictProblemSources = catchStore.getDictProblemSources(); |
|
|
|
|
@ -505,7 +737,7 @@ const route = useRoute();
|
|
|
|
|
watch( |
|
|
|
|
() => route.query, |
|
|
|
|
() => { |
|
|
|
|
updateQuery() |
|
|
|
|
updateQuery(); |
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
@ -527,7 +759,7 @@ function updateQuery() {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
|
updateQuery() |
|
|
|
|
updateQuery(); |
|
|
|
|
getList(); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
@ -559,6 +791,23 @@ async function handleDel(row) {
|
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const editShow = ref(false) |
|
|
|
|
const formData = ref({}) |
|
|
|
|
const formRef = ref(null) |
|
|
|
|
|
|
|
|
|
function handleEdit(row) { |
|
|
|
|
formData.value = {...row} |
|
|
|
|
editShow.value = true |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
async function handleSumbit() { |
|
|
|
|
await formRef.value.validate() |
|
|
|
|
await updateNegative(formData.value) |
|
|
|
|
editShow.value = false |
|
|
|
|
feedback.msgSuccess("操作成功"); |
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
</script> |
|
|
|
|
<style lang="scss" scoped> |
|
|
|
|
.form-row { |
|
|
|
|
|