Browse Source

fix--临时保存切换

master
buaixuexideshitongxue 2 weeks ago
parent
commit
4cc00f6f91
  1. 7
      src/api/sensitivePerception/modelClue.ts
  2. 378
      src/views/sensitivePerception/ModelClueTotal.vue

7
src/api/sensitivePerception/modelClue.ts

@ -26,3 +26,10 @@ export function updateDepartModelClue(id, body) {
body body
}); });
} }
export function checkUntrueModelClue(id, distributionState) {
return request.post({
url: `/model/clues/checkUntrue`,
body: { id, distributionState }
});
}

378
src/views/sensitivePerception/ModelClueTotal.vue

@ -312,23 +312,24 @@
<div class="h100"> <div class="h100">
<el-row :gutter="20" class="h100"> <el-row :gutter="20" class="h100">
<el-col :span="6"> <el-col :span="6">
<model-tree v-model="modelClueManualQuery.modelIds" /> <model-tree v-model="modelClueManualQueryUndistributed.modelIds" />
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<!-- 查询表单 -->
<header> <header>
<el-form :label-width="140"> <el-form :label-width="140">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="预警时间"> <el-form-item label="预警时间">
<date-time-range-picker-ext <date-time-range-picker-ext
v-model="modelClueManualQuery.createTime" v-model="currentManualQuery.createTime"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="涉及单位"> <el-form-item label="涉及单位">
<depart-tree-select <depart-tree-select
v-model="modelClueManualQuery.involveDepartId" v-model="currentManualQuery.involveDepartId"
:check-strictly="false" :check-strictly="false"
/> />
</el-form-item> </el-form-item>
@ -337,144 +338,110 @@
<el-form-item label="预警内容"> <el-form-item label="预警内容">
<el-input <el-input
placeholder="请输入" placeholder="请输入"
v-model="modelClueManualQuery.thingDesc" v-model="currentManualQuery.thingDesc"
clearable clearable
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<!-- 按钮行 -->
<div class="flex between mb-20"> <div class="flex between mb-20">
<div class="flex gap"> <div class="flex gap" v-if="modelClueManualInnerTab === 'undistributed'">
<el-button type="primary" @click="handleBathJoin"> <el-button type="primary" @click="handleBathJoin">
<template #icon> <template #icon>
<icon name="el-icon-Plus" /> <icon name="el-icon-Plus" />
</template> </template>
批量加入</el-button 批量加入</el-button>
>
<el-badge :value="manualList.length"> <el-badge :value="manualList.length">
<el-button <el-button
type="primary" type="primary"
:disabled="manualList.length === 0" :disabled="manualList.length === 0"
@click="manualShow = true" @click="manualShow = true"
>分发列表</el-button >分发列表</el-button>
>
</el-badge> </el-badge>
</div> </div>
<div v-else></div>
<div> <div>
<el-button type="primary" @click="getModelClueManualList"> <el-button type="primary" @click="currentGetListFunc()">
<template #icon> <template #icon>
<icon name="el-icon-Search" /> <icon name="el-icon-Search" />
</template> </template>
查询</el-button 查询</el-button>
> <el-button @click="currentResetFunc()">重置</el-button>
<el-button @click="resetModelClueManual">重置</el-button>
</div> </div>
</div> </div>
</header> </header>
<!-- 子tab -->
<el-tabs v-model="modelClueManualInnerTab" class="mb-20">
<el-tab-pane label="未分发" name="undistributed" />
<el-tab-pane label="已分发" name="distributed" />
<el-tab-pane label="已处置" name="disposed" />
<el-tab-pane label="查否" name="untrue" />
</el-tabs>
<!-- 共享表格 -->
<div class="table-container" v-loading="modelClueManualLoading"> <div class="table-container" v-loading="modelClueManualLoading">
<el-table :data="modelClueManualList" ref="tableRef" max-height="600"> <el-table :data="currentManualTableData" :ref="(el) => { tableRefs[modelClueManualInnerTab] = el }" max-height="500">
<el-table-column type="selection" width="55" /> <!-- 未分发带选择列 -->
<el-table-column <el-table-column type="selection" width="55" v-if="modelClueManualInnerTab === 'undistributed'" />
label="预警时间" <el-table-column label="预警时间" prop="createTime" width="150" />
prop="createTime" <el-table-column label="预警模型" prop="modelName" width="180" show-overflow-tooltip />
width="150" <el-table-column label="涉及单位" show-overflow-tooltip width="200">
/>
<el-table-column
label="预警模型"
prop="modelName"
width="180"
show-overflow-tooltip
/>
<el-table-column
label="涉及单位"
show-overflow-tooltip
width="200"
>
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.involveParentDepartName }}</span> <span>{{ row.involveParentDepartName }}</span>
<span>{{ row.involveDepartName }}</span> <span>{{ row.involveDepartName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="涉及人员" prop="involvePoliceName" width="120">
label="涉及人员"
prop="involvePoliceName"
width="120"
>
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.involvePoliceName"> <div v-if="row.involvePoliceName">
<div v-for="item in row.involvePoliceName.split( <div v-for="item in row.involvePoliceName.split(' ')" class="text-nowrap">{{ item }}</div>
' ')
"
class="text-nowrap"
>
{{ item }}
</div>
</div> </div>
<div v-else></div> <div v-else></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="预警内容" prop="thingDesc" show-overflow-tooltip />
label="预警内容" <el-table-column label="分发状态" align="center" width="130">
prop="thingDesc"
show-overflow-tooltip
/>
<el-table-column
label="分发状态"
align="center"
width="120"
>
<template #default="{ row }"> <template #default="{ row }">
<span <el-tag v-if="row.distributionState === '0'" type="info">未分发</el-tag>
:class=" <el-tag v-if="row.distributionState === '1'" type="success">已分发<span v-if="row.processingStatus">({{ getDictLable(dict.processingStatus, row.processingStatus) }})</span></el-tag>
row.involveDepartId <el-tag v-if="row.distributionState === '2'">已处置</el-tag>
? '' <el-tag v-if="row.distributionState === '3'" type="danger">查否</el-tag>
: 'text-warning'
"
>{{
getDictLable(
dict.distributionState,
row.distributionState
)
}}</span
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="200"> <el-table-column label="操作" width="260">
<template #default="{ row }"> <template #default="{ row }">
<el-button <template v-if="modelClueManualInnerTab === 'undistributed'">
type="primary" <el-button type="primary" link @click="handleAddManuel(row)"
link v-if="manualList.filter((item) => item.id === row.id).length === 0">加入分发列表</el-button>
@click="handleAddManuel(row)" <el-button link type="info" @click="handleRemoveManuel(row)" v-else>从分发列表移除</el-button>
v-if=" <el-button type="warning" link @click="handleCheckUntrue(row)">查否</el-button>
manualList.filter( </template>
(item) => item.id === row.id <template v-else-if="modelClueManualInnerTab === 'untrue'">
).length === 0 <el-button type="primary" link @click="handleModelClueShowDetail(row)">查看详情</el-button>
" <el-button type="success" link @click="handleRecover(row)">恢复</el-button>
>加入分发列表</el-button </template>
> <template v-else>
<el-button <el-button type="primary" link @click="handleModelClueShowDetail(row)">查看详情</el-button>
link <el-button type="primary" link v-if="modelClueManualInnerTab === 'disposed' || row.negativeId" @click="handleModelClueAction(row)">处理详情</el-button>
type="info" <el-button type="primary" link v-if="row.notificationId" @click="handleModelClueClue(row)">查看提醒</el-button>
@click="handleRemoveManuel(row)" </template>
v-else
>从分发列表移除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="flex end mt-8"> <div class="flex end mt-8">
<el-pagination <el-pagination
@size-change="getModelClueManualList" @size-change="currentGetListFunc()"
@current-change="getModelClueManualList" @current-change="currentGetListFunc()"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
v-model:page-size="modelClueManualQuery.size" v-model:page-size="currentManualQuery.size"
v-model:current-page="modelClueManualQuery.current" v-model:current-page="currentManualQuery.current"
layout="total, sizes, prev, pager, next" layout="total, sizes, prev, pager, next"
:total="modelClueManualTotal" :total="currentManualTotal"
> />
</el-pagination>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -1005,7 +972,7 @@ import { listModelClue } from "@/api/sensitivePerception/modelClue";
import { alarmDetails } from "@/api/work/alarm"; import { alarmDetails } from "@/api/work/alarm";
import { listModelClueTask, listModelClueByDepart, listModelClues } from "@/api/sensitivePerception/modelClueTask"; import { listModelClueTask, listModelClueByDepart, listModelClues } from "@/api/sensitivePerception/modelClueTask";
import { DistributionMethod } from "@/enums/dictEnums"; import { DistributionMethod } from "@/enums/dictEnums";
import { manuelModelClueTask, updateDepartModelClue } from "@/api/sensitivePerception/modelClue"; import { manuelModelClueTask, updateDepartModelClue, checkUntrueModelClue } from "@/api/sensitivePerception/modelClue";
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
import { getDictLable } from "@/utils/util"; import { getDictLable } from "@/utils/util";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
@ -1041,9 +1008,105 @@ const modelClueManualQuery = ref({
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE, distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "0", distributionState: "0",
}); });
// -
const modelClueManualQueryUndistributed = ref({
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "0",
current: 1,
size: 10
});
const modelClueManualQueryDistributed = ref({
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "1",
current: 1,
size: 10
});
const modelClueManualQueryDisposed = ref({
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "2",
current: 1,
size: 10
});
const modelClueManualQueryUntrue = ref({
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "3",
current: 1,
size: 10
});
// -
const modelClueManualListUndistributed = ref([]);
const modelClueManualTotalUndistributed = ref(0);
const modelClueManualListDistributed = ref([]);
const modelClueManualTotalDistributed = ref(0);
const modelClueManualListDisposed = ref([]);
const modelClueManualTotalDisposed = ref(0);
const modelClueManualListUntrue = ref([]);
const modelClueManualTotalUntrue = ref(0);
// - tab
const modelClueManualInnerTab = ref('undistributed');
// - tab
const currentManualTableData = computed(() => {
switch (modelClueManualInnerTab.value) {
case 'undistributed': return modelClueManualListUndistributed.value;
case 'distributed': return modelClueManualListDistributed.value;
case 'disposed': return modelClueManualListDisposed.value;
case 'untrue': return modelClueManualListUntrue.value;
default: return modelClueManualListUndistributed.value;
}
});
const currentManualQuery = computed(() => {
switch (modelClueManualInnerTab.value) {
case 'undistributed': return modelClueManualQueryUndistributed.value;
case 'distributed': return modelClueManualQueryDistributed.value;
case 'disposed': return modelClueManualQueryDisposed.value;
case 'untrue': return modelClueManualQueryUntrue.value;
default: return modelClueManualQueryUndistributed.value;
}
});
const currentManualTotal = computed(() => {
switch (modelClueManualInnerTab.value) {
case 'undistributed': return modelClueManualTotalUndistributed.value;
case 'distributed': return modelClueManualTotalDistributed.value;
case 'disposed': return modelClueManualTotalDisposed.value;
case 'untrue': return modelClueManualTotalUntrue.value;
default: return modelClueManualTotalUndistributed.value;
}
});
const currentGetListFunc = computed(() => {
switch (modelClueManualInnerTab.value) {
case 'undistributed': return getModelClueManualListUndistributed;
case 'distributed': return getModelClueManualListDistributed;
case 'disposed': return getModelClueManualListDisposed;
case 'untrue': return getModelClueManualListUntrue;
default: return getModelClueManualListUndistributed;
}
});
const currentResetFunc = computed(() => {
switch (modelClueManualInnerTab.value) {
case 'undistributed': return resetModelClueManualUndistributed;
case 'distributed': return resetModelClueManualDistributed;
case 'disposed': return resetModelClueManualDisposed;
case 'untrue': return resetModelClueManualUntrue;
default: return resetModelClueManualUndistributed;
}
});
// -
const modelClueManualList = ref([]); const modelClueManualList = ref([]);
const modelClueManualTotal = ref(0); const modelClueManualTotal = ref(0);
const modelClueManualLoading = ref(false); const modelClueManualLoading = ref(false);
// -
const manualList = ref([]); const manualList = ref([]);
const manualShow = ref(false); const manualShow = ref(false);
const manualQuery = ref({}); const manualQuery = ref({});
@ -1053,13 +1116,19 @@ const form = ref({
thingFiles: [], thingFiles: [],
problems: [] problems: []
}); });
// refs
const tableRefs = ref({
undistributed: null,
distributed: null,
disposed: null,
untrue: null
});
const formRef = ref(null); const formRef = ref(null);
const submitLoading = ref(false); const submitLoading = ref(false);
const editDepartShow = ref(false); const editDepartShow = ref(false);
const editDepartForm = ref({}); const editDepartForm = ref({});
const editDepartFormRef = ref(); const editDepartFormRef = ref();
let activeModelClueId = 0; let activeModelClueId = 0;
const tableRef = ref();
// //
const route = useRoute(); const route = useRoute();
@ -1067,11 +1136,17 @@ onMounted(() => {
if (route.query.modelId) { if (route.query.modelId) {
modelClueQuery.value.modelIds = [route.query.modelId]; modelClueQuery.value.modelIds = [route.query.modelId];
modelTaskQuery.value.modelIds = [route.query.modelId]; modelTaskQuery.value.modelIds = [route.query.modelId];
modelClueManualQuery.value.modelIds = [route.query.modelId]; modelClueManualQueryUndistributed.value.modelIds = [route.query.modelId];
modelClueManualQueryDistributed.value.modelIds = [route.query.modelId];
modelClueManualQueryDisposed.value.modelIds = [route.query.modelId];
modelClueManualQueryUntrue.value.modelIds = [route.query.modelId];
} }
getModelClueList(); getModelClueList();
getModelTaskList(); getModelTaskList();
getModelClueManualList(); getModelClueManualListUndistributed();
getModelClueManualListDistributed();
getModelClueManualListDisposed();
getModelClueManualListUntrue();
}); });
// //
@ -1136,22 +1211,100 @@ async function handleModelTaskStatisticsShow(id) {
modelTaskStatisticsShow.value = true; modelTaskStatisticsShow.value = true;
} }
// // -
function getModelClueManualList() { function getModelClueManualListUndistributed() {
modelClueManualLoading.value = true modelClueManualLoading.value = true
listModelClue(modelClueManualQuery.value).then((data) => { listModelClue(modelClueManualQueryUndistributed.value).then((data) => {
modelClueManualList.value = data.records; modelClueManualListUndistributed.value = data.records;
modelClueManualTotal.value = data.total; modelClueManualTotalUndistributed.value = data.total;
modelClueManualLoading.value = false modelClueManualLoading.value = false
}); });
} }
function resetModelClueManual() { function resetModelClueManualUndistributed() {
modelClueManualQuery.value = { modelClueManualQueryUndistributed.value = {
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE, distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "0", distributionState: "0",
current: 1,
size: 10
}; };
getModelClueManualList(); getModelClueManualListUndistributed();
}
// -
function getModelClueManualListDistributed() {
modelClueManualLoading.value = true
listModelClue(modelClueManualQueryDistributed.value).then((data) => {
modelClueManualListDistributed.value = data.records;
modelClueManualTotalDistributed.value = data.total;
modelClueManualLoading.value = false
});
}
function resetModelClueManualDistributed() {
modelClueManualQueryDistributed.value = {
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "1",
current: 1,
size: 10
};
getModelClueManualListDistributed();
}
// -
function getModelClueManualListDisposed() {
modelClueManualLoading.value = true
listModelClue(modelClueManualQueryDisposed.value).then((data) => {
modelClueManualListDisposed.value = data.records;
modelClueManualTotalDisposed.value = data.total;
modelClueManualLoading.value = false
});
}
function resetModelClueManualDisposed() {
modelClueManualQueryDisposed.value = {
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "2",
current: 1,
size: 10
};
getModelClueManualListDisposed();
}
// -
function getModelClueManualListUntrue() {
modelClueManualLoading.value = true
listModelClue(modelClueManualQueryUntrue.value).then((data) => {
modelClueManualListUntrue.value = data.records;
modelClueManualTotalUntrue.value = data.total;
modelClueManualLoading.value = false
});
}
function resetModelClueManualUntrue() {
modelClueManualQueryUntrue.value = {
distributionMethod: DistributionMethod.MANUALLY_DISTRIBUTE,
distributionState: "3",
current: 1,
size: 10
};
getModelClueManualListUntrue();
}
//
async function handleCheckUntrue(row) {
await checkUntrueModelClue(row.id, "3");
feedback.msgSuccess("查否成功");
getModelClueManualListUndistributed();
getModelClueManualListUntrue();
}
//
async function handleRecover(row) {
await checkUntrueModelClue(row.id, "0");
feedback.msgSuccess("恢复成功");
getModelClueManualListUntrue();
getModelClueManualListUndistributed();
} }
async function handleAddManuel(row) { async function handleAddManuel(row) {
@ -1243,7 +1396,10 @@ async function handleSubmitManuelModelClueTask() {
distributeShow.value = false; distributeShow.value = false;
manualShow.value = false; manualShow.value = false;
manualList.value = []; manualList.value = [];
getModelClueManualList(); getModelClueManualListUndistributed();
getModelClueManualListDistributed();
getModelClueManualListDisposed();
getModelClueManualListUntrue();
} }
async function handleUpdatDepartModelClue() { async function handleUpdatDepartModelClue() {
@ -1251,15 +1407,17 @@ async function handleUpdatDepartModelClue() {
await updateDepartModelClue(activeModelClueId, editDepartForm.value); await updateDepartModelClue(activeModelClueId, editDepartForm.value);
editDepartShow.value = false; editDepartShow.value = false;
editDepartForm.value = {}; editDepartForm.value = {};
getModelClueManualList(); getModelClueManualListUndistributed();
getModelClueManualListDistributed();
getModelClueManualListDisposed();
getModelClueManualListUntrue();
} }
function handleBathJoin() { function handleBathJoin() {
const rows = tableRef.value.getSelectionRows(); const tableRef = tableRefs.value[modelClueManualInnerTab.value];
const rows = tableRef?.getSelectionRows() || [];
rows.forEach((row) => { rows.forEach((row) => {
if ( if (manualList.value.filter((item) => item.id === row.id).length === 0) {
manualList.value.filter((item) => item.id === row.id).length === 0
) {
manualList.value.push(row); manualList.value.push(row);
} }
}); });

Loading…
Cancel
Save