1 changed files with 270 additions and 0 deletions
@ -0,0 +1,270 @@
|
||||
<template> |
||||
<div class="container h100"> |
||||
<el-row :gutter="20" class="h100"> |
||||
<el-col :span="6" class="h100"> |
||||
<model-tree v-model="query.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="query.createTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="8"> |
||||
<el-form-item label="涉及单位"> |
||||
<depart-tree-select |
||||
v-model="query.involveDepartId" |
||||
:check-strictly="false" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="8"> |
||||
<el-form-item label="预警内容"> |
||||
<el-input |
||||
placeholder="请输入" |
||||
v-model="query.thingDesc" |
||||
clearable |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="8"> |
||||
<el-form-item label="分发状态"> |
||||
<el-select |
||||
v-model="query.distributionState" |
||||
clearable |
||||
> |
||||
<el-option |
||||
v-for="item in dict.distributionState" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex end mb-20"> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column |
||||
label="预警时间" |
||||
prop="createTime" |
||||
width="150" |
||||
/> |
||||
<!-- <el-table-column--> |
||||
<!-- label="预警模型"--> |
||||
<!-- prop="modelName"--> |
||||
<!-- width="160"--> |
||||
<!-- show-overflow-tooltip--> |
||||
<!-- />--> |
||||
<el-table-column |
||||
label="涉及单位" |
||||
show-overflow-tooltip |
||||
width="200" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span>{{ row.involveParentDepartName }}</span><span v-if="row.involveDepartName"><br>{{ row.involveDepartName }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column |
||||
label="涉及人员" |
||||
prop="involvePoliceName" |
||||
width="100" |
||||
> |
||||
<template #default="{ row }"> |
||||
<div v-if="row.involvePoliceName"> |
||||
<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" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span>{{ |
||||
getDictLable( |
||||
dict.distributionState, |
||||
row.distributionState |
||||
) |
||||
}}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="180"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleShowDetail(row)" |
||||
>查看详情</el-button |
||||
> |
||||
<el-button |
||||
v-if="row.negativeId" |
||||
type="primary" |
||||
link |
||||
@click="handleAction(row)" |
||||
>处理详情</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:current-page="query.current" |
||||
:page-sizes="[9, 18, 36]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
v-if="list.length" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</el-col> |
||||
</el-row> |
||||
</div> |
||||
|
||||
<el-dialog title="预警线索数据详情" v-model="show" width="80vw"> |
||||
<div class="dialog-container"> |
||||
<div class="row mt-10"> |
||||
<div class="col col-6"> |
||||
<label>预警时间</label> |
||||
<span>{{ activeModelClue.createTime }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>预警模型</label> |
||||
<span>{{ activeModelClue.modelName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>涉及单位</label> |
||||
<span> |
||||
<span>{{ activeModelClue.involveParentDepartName }}</span><span>{{ activeModelClue.involveDepartName ? '/' + activeModelClue.involveDepartName : '' }}</span> |
||||
</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>涉及人员</label> |
||||
<span>{{ activeModelClue.involvePoliceName }}</span> |
||||
</div> |
||||
</div> |
||||
<div class="row mt-10"> |
||||
<div class="col col-24"> |
||||
<label>预警内容</label> |
||||
<span>{{ activeModelClue.thingDesc }}</span> |
||||
</div> |
||||
</div> |
||||
<div class="row mt-10"> |
||||
<div class="col col-6"> |
||||
<label>分发状态</label> |
||||
<span>{{ |
||||
getDictLable( |
||||
dict.distributionState, |
||||
activeModelClue.distributionState |
||||
) |
||||
}}</span> |
||||
</div> |
||||
</div> |
||||
<h3>详细信息</h3> |
||||
<div style="min-height: 200px"> |
||||
<el-empty description="无数据" /> |
||||
</div> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<negative-dialog |
||||
v-model="negativeShow" |
||||
:id="activeNegativeId" |
||||
@close="negativeShow = false" |
||||
/> |
||||
</template> |
||||
<script lang="ts" setup> |
||||
import { listModelClue } from "@/api/sensitivePerception/modelClue"; |
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts(["distributionState","handleState"]); |
||||
|
||||
const query = ref({}); |
||||
|
||||
const list = ref([]); |
||||
const total = ref(0); |
||||
|
||||
onMounted(() => { |
||||
getList(); |
||||
}); |
||||
|
||||
const route = useRoute(); |
||||
watch( |
||||
() => route.query.modelId, |
||||
(val) => { |
||||
query.value.modelIds = [val]; |
||||
} |
||||
); |
||||
watch( |
||||
() => query.value.modelIds, |
||||
(newVal, oldVal) => { |
||||
if (newVal !== oldVal) { |
||||
query.value.current = 1; |
||||
getList(); |
||||
} |
||||
} |
||||
); |
||||
|
||||
function getList() { |
||||
listModelClue(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = {}; |
||||
getList(); |
||||
} |
||||
|
||||
const show = ref(false); |
||||
const activeModelClue = ref({}); |
||||
|
||||
function handleShowDetail(row) { |
||||
activeModelClue.value = row; |
||||
show.value = true; |
||||
} |
||||
|
||||
const activeNegativeId = ref('') |
||||
const negativeShow = ref(false) |
||||
|
||||
function handleAction(row) { |
||||
|
||||
negativeShow.value = true; |
||||
activeNegativeId.value = row.negativeId; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
Loading…
Reference in new issue