Browse Source

fit: 模型超市-新增/编辑模型时,新增指定下发单位、新增业务类型、涉嫌问题、涉及警种、问题类型的选项;

fit: 人工核验-任务下发,新增指定下发单位、新增业务类型、涉嫌问题、涉及警种、问题类型的选项;
fit: 问题流程办理新增“修改核查内容”功能,二级机构、市局专班可对派出所提交情况进行修改
main
wxc 1 year ago
parent
commit
d4088fbf3e
  1. 12
      src/components/negative/dialog.vue
  2. 171
      src/views/sensitivePerception/Model.vue
  3. 121
      src/views/sensitivePerception/ModelClueManual.vue

12
src/components/negative/dialog.vue

@ -110,7 +110,7 @@
v-if="
components.indexOf(
'negative-verify-description'
) > -1
) > -1 && !verifyEditFlag
"
>
<negative-verify-description />
@ -126,7 +126,7 @@
</template>
<template
v-if="
components.indexOf('negative-verify') > -1
components.indexOf('negative-verify') > -1 || verifyEditFlag
"
>
<negative-verify
@ -310,7 +310,12 @@ const setActionItemRef = (actionKey, el) => {
const confirmationCompletionRef = ref(null);
const activeAction = ref({});
const verifyEditFlag = ref(false)
async function handleExecute(action, data) {
if (action.actionKey === 'update_verify' && !verifyEditFlag.value) {
verifyEditFlag.value = true;
return
}
if (action.validateForm) {
if (action.actionKey !== FlowActionEnum.SAVE) {
try {
@ -342,6 +347,9 @@ async function handleExecute(action, data) {
return;
}
loading.value = true;
if (action.actionKey === 'update_verify') {
verifyEditFlag.value = false;
}
await negativeExecute(props.id, {
workId: work?.value.workId,
actionKey: action.actionKey,

171
src/views/sensitivePerception/Model.vue

@ -141,61 +141,45 @@
>
<el-form label-width="120" ref="formRef" :model="form">
<el-form-item
label="模型类型"
prop="classId"
label="模型名称"
prop="modelName"
:rules="{
required: true,
message: '请选择模型类型',
message: '请输入模型名称',
trigger: ['blur'],
}"
>
<el-select v-model="form.classId" style="width: 340px">
<el-option
v-for="item in classes"
:key="item.id"
:label="item.name"
:value="item.id"
<el-input
placeholder="请输入模型名称"
style="width: 340px"
v-model="form.modelName"
/>
</el-select>
</el-form-item>
<el-form-item
label="风险因素"
label="模型图标"
prop="icon"
:rules="{
required: true,
message: '请选择风险因素',
message: '请选择模型图标',
}"
prop="riskScoreRuleId"
v-if="form.classId === GRJDBLFX_CLASS_ID"
>
<el-tree-select
class="flex-1"
v-model="form.riskScoreRuleId"
:data="treeOptions"
clearable
node-key="id"
:props="{
label: 'riskName',
}"
placeholder="请选择风险因素"
filterable
style="width: 340px"
/>
<model-icon-picker v-model="form.icon" />
</el-form-item>
<el-form-item
label="模型名称"
prop="modelName"
label="模型描述"
prop="remarks"
:rules="{
required: true,
message: '请输入模型名称',
trigger: ['blur'],
message: '请输入模型描述',
}"
>
<el-input
placeholder="请输入模型名称"
style="width: 340px"
v-model="form.modelName"
type="textarea"
:autosize="{ minRows: 4 }"
v-model="form.remarks"
placeholder="请输入"
/>
</el-form-item>
<el-form-item
label="建模方式"
prop="modelingMethod"
@ -214,21 +198,44 @@
</el-select>
</el-form-item>
<el-form-item
label="模型图标"
prop="icon"
label="模型类型"
prop="classId"
:rules="{
required: true,
message: '请选择模型图标',
message: '请选择模型类型',
}"
>
<model-icon-picker v-model="form.icon" />
<el-select v-model="form.classId" style="width: 340px">
<el-option
v-for="item in classes"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label="数据类型"
prop="modelDataType"
label="风险因素"
:rules="{
required: true,
message: '请选择风险因素',
}"
prop="riskScoreRuleId"
v-if="form.classId === GRJDBLFX_CLASS_ID"
>
<el-checkbox value="2" label="预警通知" />
<el-tree-select
class="flex-1"
v-model="form.riskScoreRuleId"
:data="treeOptions"
clearable
node-key="id"
:props="{
label: 'riskName',
}"
placeholder="请选择风险因素"
filterable
style="width: 340px"
/>
</el-form-item>
<el-form-item
label="数据类型"
@ -358,6 +365,19 @@
</el-form-item>
</div>
</el-form-item>
<el-form-item
label="指定办理单位"
prop="departId"
>
<div class="flex gap">
<div style="width: 280px">
<depart-tree-select v-model="form.handleDepartId" />
</div>
<div class="tips mt-10">
<p>指定具体办理单位 指将问题分派给哪个单位办理</p>
</div>
</div>
</el-form-item>
<el-form-item
label="业务类别"
prop="businessTypeCode"
@ -367,7 +387,10 @@
trigger: ['blur'],
}"
>
<el-select v-model="form.businessTypeCode" style="width: 280px">
<el-select
v-model="form.businessTypeCode"
style="width: 280px"
>
<el-option
v-for="item in dict.businessType"
:key="item.id"
@ -414,9 +437,31 @@
/>
</el-select>
</el-form-item>
<el-form-item label="问题类型" prop="">
<problem-type-select />
<div class="flex center mb-12">
<el-button
@click="handleAddProblem()"
plain
type="primary"
size="small"
>
<template #icon>
<icon name="el-icon-Plus" />
</template>
添加问题
</el-button>
</div>
<el-form-item label="问题类型" prop="" v-for="(item, index) in form.problems" :key="index">
<div class="flex v-center">
<problem-type-select v-model="item.threeLevelCode" />
<el-button plain type="danger" size="small" class="ml-20" @click="handleRemoveProblem(index)">
<template #icon>
<icon name="el-icon-Delete" />
</template>
删除问题
</el-button>
</div>
</el-form-item>
<el-form-item
label="办理时限"
prop="timeLimit"
@ -476,21 +521,7 @@
</el-radio-group>
</el-form-item>
</template>
<el-form-item
label="模型描述"
prop="remarks"
:rules="{
required: true,
message: '请输入模型描述',
}"
>
<el-input
type="textarea"
:autosize="{ minRows: 4 }"
v-model="form.remarks"
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="提示">
<div style="line-height: 1.4">
预警数据将以任务形式分批下发至相关单位处理每次下发的预警数据都会在任务分发模块中生成一条记录任务名称将按照模型名称_下发时间的格式命名例如取保候审期间未按要求传讯犯罪嫌疑人_20240919
@ -707,6 +738,9 @@ const dict = catchStore.getDicts([
"approvalFlow",
"modelingMethod",
"modelDataType",
"businessType",
"suspectProblem",
"policeType",
]);
//
@ -755,6 +789,7 @@ const show = ref(false);
const mode = ref("add");
const form = ref({
distributionMethod: "1",
problems: []
});
watch(mode, (val) => {
@ -764,7 +799,10 @@ watch(mode, (val) => {
});
function initForm() {
form.value = { distributionMethod: "1" };
form.value = {
distributionMethod: "1",
problems: []
};
}
const formRef = ref(null);
@ -777,6 +815,15 @@ function handleEdit() {
show.value = true;
mode.value = "edit";
form.value = { ...activeModel.value };
form.value.problems = []
}
function handleAddProblem() {
form.value.problems.push({})
}
function handleRemoveProblem(index) {
form.value.problems.splice(index, 1)
}
async function handleSubmit() {
@ -856,6 +903,8 @@ function handleSelectInvolveProblem(vals) {
};
});
}
</script>
<style lang="scss" scoped>
.menu {

121
src/views/sensitivePerception/ModelClueManual.vue

@ -290,6 +290,107 @@
placeholder="请输入"
/>
</el-form-item>
<el-form-item label="指定办理单位" prop="departId">
<div class="flex gap">
<div style="width: 280px">
<depart-tree-select v-model="form.handleDepartId" />
</div>
<div class="tips mt-10">
<p>指定具体办理单位 指将问题分派给哪个单位办理</p>
</div>
</div>
</el-form-item>
<el-form-item
label="业务类别"
prop="businessTypeCode"
:rules="{
required: true,
message: '请选择业务类别',
trigger: ['blur'],
}"
>
<el-select v-model="form.businessTypeCode" style="width: 280px">
<el-option
v-for="item in dict.businessType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item
label="涉嫌问题"
prop="involveProblem"
:rules="{
required: true,
message: '请选择涉嫌问题',
trigger: ['blur'],
}"
>
<el-select
v-model="form.involveProblemCode"
multiple
@change="handleSelectInvolveProblem"
clearable
style="width: 280px"
>
<el-option
v-for="item in dict.suspectProblem"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="涉及警种" prop="policeType">
<el-select
v-model="form.policeType"
clearable
style="width: 280px"
>
<el-option
v-for="item in dict.policeType"
:key="item.id"
:label="item.dictLabel"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<div class="flex center mb-12">
<el-button
@click="handleAddProblem()"
plain
type="primary"
size="small"
>
<template #icon>
<icon name="el-icon-Plus" />
</template>
添加问题
</el-button>
</div>
<el-form-item
label="问题类型"
prop=""
v-for="(item, index) in form.problems"
:key="index"
>
<div class="flex v-center">
<problem-type-select v-model="item.threeLevelCode" />
<el-button
plain
type="danger"
size="small"
class="ml-20"
@click="handleRemoveProblem(index)"
>
<template #icon>
<icon name="el-icon-Delete" />
</template>
删除问题
</el-button>
</div>
</el-form-item>
<el-form-item
label="办理时限"
prop="timeLimit"
@ -305,6 +406,7 @@
v-model:maxExtensionDuration="form.maxExtensionDuration"
/>
</el-form-item>
<el-form-item
label="下发流程"
prop="distributionFlow"
@ -410,6 +512,9 @@ const dict = catchStore.getDicts([
"timeLimit",
"approvalFlow",
"distributionFlow",
"businessType",
"suspectProblem",
"policeType",
]);
const query = ref({
@ -488,7 +593,7 @@ const filterManualList = computed(() => {
});
const modelOptions = computed(() => {
const items = filterManualList.value.map((item) => {
const items = manualList.value.map((item) => {
return {
value: item.modelId,
label: item.modelName,
@ -515,10 +620,19 @@ function handleShowDistributeDialog() {
const form = ref({
modelClues: [],
thingFiles: [],
problems: []
});
const formRef = ref(null);
const distributeShow = ref(false);
function handleAddProblem() {
form.value.problems.push({})
}
function handleRemoveProblem(index) {
form.value.problems.splice(index, 1)
}
async function handleSubmitManuelModelClueTask() {
await formRef.value.validate();
form.value.modelClues = filterManualList.value;
@ -527,6 +641,7 @@ async function handleSubmitManuelModelClueTask() {
form.value = {
modelClues: [],
thingFiles: [],
problems: []
};
distributeShow.value = false;
manualShow.value = false;
@ -551,7 +666,9 @@ const tableRef = ref();
function handleBathJoin() {
const rows = tableRef.value.getSelectionRows();
rows.forEach((row) => {
if (manualList.value.filter((item) => item.id === row.id).length === 0) {
if (
manualList.value.filter((item) => item.id === row.id).length === 0
) {
manualList.value.push(row);
}
});

Loading…
Cancel
Save