Browse Source

问题线索关联问题预警

main
kami 1 year ago
parent
commit
a1548e4d5b
  1. 12
      src/api/work/alarm.ts
  2. 134
      src/views/sensitivePerception/ModelClue.vue
  3. 134
      src/views/work/Alarm.vue

12
src/api/work/alarm.ts

@ -21,3 +21,15 @@ export function alarmNotificationCommit(data) {
}); });
} }
export function alarmFiles(id) {
return request.get({
url: `/alarm/notification/files?alarmId=${id}`
});
}
export function alarmDetails(id) {
return request.get({
url: `/alarm/notification/details?alarmId=${id}`
});
}

134
src/views/sensitivePerception/ModelClue.vue

@ -2,7 +2,7 @@
<div class="container h100"> <div class="container h100">
<el-row :gutter="20" class="h100"> <el-row :gutter="20" class="h100">
<el-col :span="6" class="h100"> <el-col :span="6" class="h100">
<model-tree v-model="query.modelIds" /> <model-tree v-model="query.modelIds"/>
</el-col> </el-col>
<el-col :span="18"> <el-col :span="18">
<header> <header>
@ -52,9 +52,10 @@
<div> <div>
<el-button type="primary" @click="getList"> <el-button type="primary" @click="getList">
<template #icon> <template #icon>
<icon name="el-icon-Search" /> <icon name="el-icon-Search"/>
</template> </template>
查询</el-button 查询
</el-button
> >
<el-button @click="reset">重置</el-button> <el-button @click="reset">重置</el-button>
</div> </div>
@ -67,19 +68,20 @@
prop="createTime" prop="createTime"
width="150" width="150"
/> />
<!-- <el-table-column--> <!-- <el-table-column-->
<!-- label="预警模型"--> <!-- label="预警模型"-->
<!-- prop="modelName"--> <!-- prop="modelName"-->
<!-- width="160"--> <!-- width="160"-->
<!-- show-overflow-tooltip--> <!-- show-overflow-tooltip-->
<!-- />--> <!-- />-->
<el-table-column <el-table-column
label="涉及单位" label="涉及单位"
show-overflow-tooltip show-overflow-tooltip
width="200" width="200"
> >
<template #default="{ row }"> <template #default="{ row }">
<span>{{ row.involveParentDepartName }}</span><span v-if="row.involveDepartName"><br>{{ row.involveDepartName }}</span> <span>{{ row.involveParentDepartName }}</span><span
v-if="row.involveDepartName"><br>{{ row.involveDepartName }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -90,7 +92,9 @@
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.involvePoliceName"> <div v-if="row.involvePoliceName">
<div v-for="item in row.involvePoliceName.split(' ')" class="text-nowrap">{{ <div v-for="item in row.involvePoliceName.split(' ')" class="text-nowrap">{{
item }}</div> item
}}
</div>
</div> </div>
<div v-else></div> <div v-else></div>
</template> </template>
@ -120,14 +124,24 @@
type="primary" type="primary"
link link
@click="handleShowDetail(row)" @click="handleShowDetail(row)"
>查看详情</el-button >查看详情
</el-button
> >
<el-button <el-button
v-if="row.negativeId" v-if="row.negativeId"
type="primary" type="primary"
link link
@click="handleAction(row)" @click="handleAction(row)"
>处理详情</el-button >处理详情
</el-button
>
<el-button
type="primary"
link
:disabled="row.distributionState!='1'"
@click="handleClue(row)"
>查看提醒
</el-button
> >
</template> </template>
</el-table-column> </el-table-column>
@ -165,7 +179,11 @@
<div class="col col-6"> <div class="col col-6">
<label>涉及单位</label> <label>涉及单位</label>
<span> <span>
<span>{{ activeModelClue.involveParentDepartName }}</span><span>{{ activeModelClue.involveDepartName ? '/' + activeModelClue.involveDepartName : '' }}</span> <span>{{
activeModelClue.involveParentDepartName
}}</span><span>{{
activeModelClue.involveDepartName ? '/' + activeModelClue.involveDepartName : ''
}}</span>
</span> </span>
</div> </div>
<div class="col col-6"> <div class="col col-6">
@ -192,9 +210,78 @@
</div> </div>
<h3>详细信息</h3> <h3>详细信息</h3>
<div style="min-height: 200px"> <div style="min-height: 200px">
<el-empty description="无数据" /> <el-empty description="无数据"/>
</div>
</div> </div>
</el-dialog>
<el-dialog
title="查看详情"
v-model="dialogShow"
width="800"
>
<el-form :model="showData" :label-width="120" ref="fomrRef">
<el-row>
<el-col :span="12">
<el-form-item
label="提醒类型"
>
<div>{{ showData.alarmType }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
label="提醒时间"
>
<el-text>{{ showData.alarmTime }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-col :span="12">
<el-form-item
label="被通知单位"
>
<el-text>{{ showData.notificationDepartName }}</el-text>
</el-form-item>
</el-col>
<el-col :span="12" v-if="showData.policeName != undefined">
<el-form-item
label="被通知民警"
>
<el-text>{{ showData.policeName }}</el-text>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-form-item
label="提醒内容"
>
<el-text style="width: 588px;">{{ showData.alarmContent }}</el-text>
</el-form-item>
</el-row>
<el-row style="margin-top: 5px;" v-if="showData.replyState == 1">
<el-form-item
label="回复内容"
>
<el-text style="width: 588px;">{{ showData.replyResultContent }}</el-text>
</el-form-item>
</el-row>
<el-row style="margin-top: 10px;" v-if="showData.files != undefined && showData.files.length > 0">
<el-form-item
label="问题附件"
>
<div v-for="(item, index) in showData.files" :key="index" style="margin-top: 10px;">
<el-image style="width: 100px; height: 100px;margin-right: 8px" :src="item.path" fit="cover"
:hide-on-click-modal="true" :lazy="true" :z-index="index"/>
</div> </div>
</el-form-item>
</el-row>
</el-form>
<footer class="flex end">
<el-button @click="dialogShow = false">关闭</el-button>
</footer>
</el-dialog> </el-dialog>
<negative-dialog <negative-dialog
@ -204,18 +291,29 @@
/> />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { listModelClue } from "@/api/sensitivePerception/modelClue"; import {listModelClue} from "@/api/sensitivePerception/modelClue";
import {alarmDetails} from "@/api/work/alarm"
import useCatchStore from "@/stores/modules/catch"; import useCatchStore from "@/stores/modules/catch";
import { getDictLable } from "@/utils/util"; import {getDictLable} from "@/utils/util";
const catchStore = useCatchStore(); const catchStore = useCatchStore();
const dict = catchStore.getDicts(["distributionState","handleState"]); const dict = catchStore.getDicts(["distributionState", "handleState"]);
const query = ref({}); const query = ref({});
const list = ref([]); const list = ref([]);
const total = ref(0); const total = ref(0);
let showData = ref({})
let dialogShow = ref(false)
const handleClue = (row) => {
alarmDetails(row.notificationId).then(res => {
showData.value = res
dialogShow.value = true
})
}
onMounted(() => { onMounted(() => {
getList(); getList();
}); });

134
src/views/work/Alarm.vue

@ -125,7 +125,7 @@
<el-button <el-button
type="primary" type="primary"
link link
@click="showDetail(row)" @click="showFiles(row)"
>查看详情 >查看详情
</el-button> </el-button>
<el-button <el-button
@ -155,53 +155,45 @@
</main> </main>
<el-dialog v-model="editShow" title="回复问题" width="900px"> <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">
<el-row>
<el-col :span="12">
<el-form-item <el-form-item
label="提醒类型" label="提醒类型"
> >
<el-input <div >{{formData.alarmType}}</div>
v-model="formData.alarmType"
style="width: 280px"
disabled
/>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item <el-form-item
label="提醒时间" label="提醒时间"
> >
<el-input <el-text>{{formData.alarmTime}}</el-text>
v-model="formData.alarmTime"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-col :span="12">
<el-form-item <el-form-item
label="被通知单位" label="被通知单位"
> >
<el-input <el-text>{{formData.notificationDepartName}}</el-text>
v-model="formData.notificationDepartName"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12" v-if="formData.policeName != undefined">
<el-form-item <el-form-item
label="被通知单位" label="被通知民警"
> >
<el-input <el-text>{{formData.policeName}}</el-text>
v-model="formData.policeName"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-form-item <el-form-item
label="提醒内容" label="提醒内容"
> >
<el-input <el-text style="width: 588px;">{{formData.alarmContent}}</el-text>
type="textarea"
v-model="formData.alarmContent"
:autosize="{ minRows: 6 }"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-row>
<el-form-item <el-form-item
label="回复问题" label="回复问题"
:rules="{ :rules="{
@ -230,69 +222,65 @@
<el-dialog <el-dialog
title="查看详情" title="查看详情"
v-model="dialogShow" v-model="dialogShow"
width="600" width="800"
> >
<el-form :model="showData" :label-width="120" ref="fomrRef"> <el-form :model="showData" :label-width="120" ref="fomrRef">
<el-row>
<el-col :span="12">
<el-form-item <el-form-item
label="提醒类型" label="提醒类型"
> >
<el-input <div >{{showData.alarmType}}</div>
v-model="showData.alarmType"
style="width: 280px"
disabled
/>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item <el-form-item
label="提醒时间" label="提醒时间"
> >
<el-input <el-text>{{showData.alarmTime}}</el-text>
v-model="showData.alarmTime"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-col :span="12">
<el-form-item <el-form-item
label="被通知单位" label="被通知单位"
> >
<el-input <el-text>{{showData.notificationDepartName}}</el-text>
v-model="showData.notificationDepartName"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12" v-if="showData.policeName != undefined">
<el-form-item <el-form-item
label="被通知单位" label="被通知民警"
> >
<el-input <el-text>{{showData.policeName}}</el-text>
v-model="showData.policeName"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 5px;">
<el-form-item <el-form-item
label="提醒内容" label="提醒内容"
> >
<el-input <el-text style="width: 588px;">{{showData.alarmContent}}</el-text>
type="textarea"
v-model="showData.alarmContent"
:autosize="{ minRows: 6 }"
disabled
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-row>
<el-row style="margin-top: 5px;" v-if="showData.replyState == 1">
<el-form-item <el-form-item
v-if="showData.replyState == 1"
label="回复内容" label="回复内容"
> >
<el-input <el-text style="width: 588px;">{{showData.replyResultContent}}</el-text>
type="textarea"
v-model="showData.replyResultContent"
disabled
:autosize="{ minRows: 4 }"
style="width: 280px"
/>
</el-form-item> </el-form-item>
</el-row>
<el-row style="margin-top: 10px;" v-if="showData.files != undefined && showData.files.length > 0">
<el-form-item
label="问题附件"
>
<div v-for="(item, index) in showData.files" :key="index" style="margin-top: 10px;">
<el-image style="width: 100px; height: 100px;margin-right: 8px" :src="item.path" fit="cover" :hide-on-click-modal="true" :lazy="true" :z-index="index"/>
</div>
</el-form-item>
</el-row>
</el-form> </el-form>
<footer class="flex end"> <footer class="flex end">
<el-button @click="dialogShow = false">关闭</el-button> <el-button @click="dialogShow = false">关闭</el-button>
@ -303,10 +291,12 @@
</template> </template>
<script setup> <script setup>
import moment from "moment"; import moment from "moment";
import {ElLoading} from "element-plus"; import { Clock } from '@element-plus/icons-vue'
import { import {
alarmNotificationPages, alarmNotificationPages,
alarmNotificationReply alarmNotificationReply,
alarmFiles
} from "@/api/work/alarm"; } from "@/api/work/alarm";
import feedback from "@/utils/feedback"; import feedback from "@/utils/feedback";
@ -329,9 +319,13 @@ let dialogShow = ref(false)
const loading = ref(true); const loading = ref(true);
const showDetail = (data) => { const showFiles = (data) => {
alarmFiles(data.id).then(res => {
showData.value = data; showData.value = data;
showData.value['files'] = res;
console.log(showData.value)
dialogShow.value = true; dialogShow.value = true;
})
} }
function getList() { function getList() {

Loading…
Cancel
Save