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