Browse Source

perf: 完善提醒通知

main
wxc 1 year ago
parent
commit
b8c02994bc
  1. 150
      src/components/alarm/dialog.vue
  2. 0
      src/components/alarm/reply.vue
  3. 152
      src/views/sensitivePerception/DepartNegative.vue
  4. 4
      src/views/sensitivePerception/Model.vue
  5. 226
      src/views/sensitivePerception/PoliceNegative.vue
  6. 208
      src/views/sensitivePerception/RiskClue.vue
  7. 175
      src/views/sensitivePerception/RiskPersonnel.vue

150
src/components/alarm/dialog.vue

@ -0,0 +1,150 @@
<template>
<el-dialog title="创建提醒" width="700px">
<el-form
label-width="148"
:model="formData"
ref="formRef"
class="mr-40"
>
<el-form-item
label="提醒类型"
prop="alarmTypeId"
:rules="{
required: true,
message: '请选择提醒类型',
trigger: ['blur'],
}"
>
<el-select v-model="formData.alarmTypeId" style="width: 280px">
<el-option :value="1" label="预警问题" />
<el-option :value="2" label="风险问题" />
<el-option :value="3" label="提醒通知" />
</el-select>
</el-form-item>
<el-form-item
label="被通知单位"
prop="notificationDepartId"
:rules="{
required: true,
message: '请选择被通知单位',
trigger: ['blur'],
}"
>
<div>
<depart-tree-select
v-model="formData.notificationDepartId"
:check-strictly="true"
style="width: 280px"
/>
</div>
</el-form-item>
<el-form-item
label="提醒内容"
prop="alarmContent"
:rules="{
required: true,
message: '请输入提醒内容',
trigger: ['blur'],
}"
>
<el-input
type="textarea"
v-model="formData.alarmContent"
:autosize="{ minRows: 6 }"
:rules="{
message: '请填写提醒内容',
trigger: ['blur'],
}"
/>
</el-form-item>
<el-form-item
label="是否要求回复"
prop="requestReply"
:rules="{
required: true,
message: '请选择是否要求回复',
trigger: ['blur'],
}"
>
<el-switch
v-model="formData.requestReply"
inline-prompt
active-text="必须回复"
inactive-text="无需回复"
:active-value="true"
:inactive-value="false"
/>
</el-form-item>
<el-form-item
label="时限设置"
prop="replyLimit"
:rules="{
required: true,
message: '请选择时限设置',
}"
v-if="formData.requestReply === true"
>
<div class="flex gap">
<el-input
style="width: 100px"
type="number"
v-model="formData.replyLimit"
/><span></span>
</div>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="showNotification = false" size="large"
>取消</el-button
>
<el-button type="primary" @click="handleNotification" size="large"
>提交
</el-button>
</footer>
</el-dialog>
</template>
<script setup>
import feedback from "~/utils/feedback";
import { alarmNotificationCommit } from "~/api/work/alarm";
const props = defineProps({
show: {
type: Boolean,
default: false,
},
departId: {
type: String,
},
});
const emit = defineEmits(["close"]);
let formData = ref({
requestReply: true,
replyLimit: 3
});
const formRef = ref();
onMounted(() => {
formData.value.notificationDepartId = props.departId;
});
watch(
() => props.departId,
() => {
formData.value.notificationDepartId = props.departId;
}
);
const handleNotification = async () => {
await formRef.value.validate();
await alarmNotificationCommit(formData.value);
feedback.msgSuccess("提醒成功!");
emit("close");
formData.value = {
requestReply: true,
replyLimit: 3
};
};
</script>
<style lang="scss" scoped>
</style>

0
src/components/alarm/reply.vue

152
src/views/sensitivePerception/DepartNegative.vue

@ -6,12 +6,30 @@
<el-col :span="6">
<el-form-item label="单位类型">
<el-select v-model="query.departGroupId" clearable>
<el-option value="10" label="派出所"></el-option>
<el-option value="11" label="交警大队"></el-option>
<el-option value="13" label="刑侦大队"></el-option>
<el-option value="14" label="禁毒大队"></el-option>
<el-option value="15" label="治安大队"></el-option>
<el-option value="16" label="人境大队"></el-option>
<el-option
value="10"
label="派出所"
></el-option>
<el-option
value="11"
label="交警大队"
></el-option>
<el-option
value="13"
label="刑侦大队"
></el-option>
<el-option
value="14"
label="禁毒大队"
></el-option>
<el-option
value="15"
label="治安大队"
></el-option>
<el-option
value="16"
label="人境大队"
></el-option>
<el-option value="12" label="其他"></el-option>
</el-select>
</el-form-item>
@ -91,11 +109,15 @@
/>
<el-table-column label="风险指数" align="center" width="160">
<template #default="{ row }">
<span :style="{color: getColor(score)}" v-if="row.score">{{ Math.round(row.score) }}</span>
<span
:style="{ color: getColor(score) }"
v-if="row.score"
>{{ Math.round(row.score) }}</span
>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="操作">
<el-table-column label="操作" width="240">
<template #default="{ row }">
<el-button
type="primary"
@ -106,7 +128,7 @@
<el-button
type="primary"
link
@click="handleShowNotification"
@click="handleShowNotification(row)"
>预警提醒</el-button
>
</template>
@ -350,7 +372,6 @@
</el-col>
<el-col :span="8">
<h5>突出问题排名</h5>
<el-scrollbar max-height="300px">
<datav-chart-bar
size="small"
@ -417,62 +438,7 @@
</el-scrollbar>
</el-dialog>
<el-dialog v-model="showNotification" title="创建提醒" width="600px">
<el-form label-width="148" :model="formData2" ref="formRef">
<el-form-item label="提醒类型">
<div class="flex gap">
<el-select
v-model="formData2.alarmTypeId"
style="min-width: 185px"
>
<el-option :value="1" label="预警问题"/>
<el-option :value="2" label="风险问题"/>
<el-option :value="3" label="提醒通知"/>
</el-select>
</div>
</el-form-item>
<el-form-item
style="width: 333px"
label="被通知单位"
prop="involveDepartId"
:rules="{
message: '请选择问题涉及单位',
trigger: ['blur'],
}"
>
<depart-tree-select
v-model="formData2.involveDepartId"
:check-strictly="true"
@node-click="
(row) =>
(formData2.involveDepartName =
row.shortName)
"
/>
</el-form-item>
<el-form-item
label="提醒内容"
>
<el-input
type="textarea"
v-model="formData2.alarmContent"
:autosize="{ minRows: 12 }"
:rules="{
message: '请填写提醒内容',
trigger: ['blur'],
}"
style="width: 280px"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="showNotification = false" size="large">取消</el-button>
<el-button type="primary" @click="handleNotification" size="large"
>提交
</el-button
>
</footer>
</el-dialog>
<alarm-dialog v-model="showNotification" :departId="activeDepartId" @close="showNotification = false" />
<negative-dialog
v-model="negativeShow"
@ -487,11 +453,14 @@ import {
getDepartProfile,
listNegativeMonthly,
} from "@/api/sensitivePerception/profileDepart";
import {alarmNotificationCommit, alarmNotificationReply} from "@/api/work/alarm"
import {
alarmNotificationCommit,
alarmNotificationReply,
} from "@/api/work/alarm";
import { listNegative } from "@/api/work/negative";
import { InspectCase } from "@/enums/dictEnums";
import moment from "moment";
import {ref} from "vue";
import { ref } from "vue";
import feedback from "~/utils/feedback";
const query = ref({
@ -505,13 +474,6 @@ const query = ref({
});
const list = ref<any[]>([]);
const total = ref(0);
let showNotification = ref(false)
let formData2 = ref({
alarmTypeId: 1,
involveDepartId: '',
involveDepartName: '',
alarmContent: ''
})
const mainLoading = ref(false);
function getList() {
@ -523,14 +485,6 @@ function getList() {
});
}
const initFormData2 = () => {
formData2.value ={
alarmTypeId: 1,
involveDepartId: '',
involveDepartName: '',
alarmContent: ''
}
}
function reset() {
query.value = {
@ -545,30 +499,13 @@ function reset() {
getList();
}
const handleShowNotification = () => {
showNotification.value = true
}
let showNotification = ref(false);
const activeDepartId = ref('')
const handleShowNotification = (row) => {
showNotification.value = true;
activeDepartId.value = row.departId
};
const handleNotification = async () => {
if(formData2.value.involveDepartId == '') {
feedback.msgWarning("请选择被提醒单位");
return;
}
if(formData2.value.alarmContent == '') {
feedback.msgWarning("请填写提醒内容");
return;
}
let data = {
alarmTypeId: formData2.value.alarmTypeId,
notificationDepartCode: formData2.value.involveDepartId,
notificationDepartName: formData2.value.involveDepartName,
alarmContent: formData2.value.alarmContent
}
await alarmNotificationCommit(data);
showNotification.value = false;
feedback.msgSuccess("操作成功");
initFormData2();
}
onMounted(() => {
getList();
@ -690,7 +627,7 @@ async function getProfileData() {
radarOption.value.radar.indicator = data.problemTypeRadarIndicator;
radarOption.value.series[0].data[0].value = data.problemTypeRadarData;
problemTypeBarList.value = data.problemTypeBarList;
// problemTypeBarList.value = data.problemTypeBarList;
loading.value = false;
}
@ -751,7 +688,6 @@ function getColor(val) {
}
return "var(--danger-color)";
}
</script>
<style lang="scss" scoped>
main {

4
src/views/sensitivePerception/Model.vue

@ -554,7 +554,7 @@
</el-form-item>
<el-form-item
label="时限设置"
prop=""
prop="replyLimit"
:rules="{
required: true,
message: '请选择时限设置',
@ -564,7 +564,7 @@
<el-input
style="width: 100px"
type="number"
v-model="form"
v-model="form.replyLimit"
/><span></span>
</div>
</el-form-item>

226
src/views/sensitivePerception/PoliceNegative.vue

@ -73,18 +73,17 @@
<div>
<el-button type="primary" @click="getList">
<template #icon>
<icon name="el-icon-Search"/>
<icon name="el-icon-Search" />
</template>
查询
</el-button
>
</el-button>
<el-button @click="reset">重置</el-button>
</div>
</div>
</header>
<div class="table-container" v-loading="mainLoading">
<el-table :data="list">
<el-table-column label="姓名" prop="name" width="120"/>
<el-table-column label="姓名" prop="name" width="120" />
<el-table-column label="性别" width="100" align="center">
<template #default="{ row }">
<span>{{ getGenderFromIdCode(row.idCode) }}</span>
@ -98,7 +97,7 @@
}}</span>
</template>
</el-table-column>
<el-table-column label="警号" prop="empNo" width="160"/>
<el-table-column label="警号" prop="empNo" width="160" />
<el-table-column
label="入职时间"
prop="employmentDate"
@ -124,7 +123,7 @@
<el-table-column label="风险指数" align="center" width="160">
<template #default="{ row }">
<span
:style="{color: getColor(score)}"
:style="{ color: getColor(score) }"
v-if="row.score"
>{{ Math.round(row.score) }}</span
>
@ -138,15 +137,13 @@
link
@click="handleShowProfile(row)"
>问题详情
</el-button
>
</el-button>
<el-button
type="primary"
link
@click="handleShowNotification"
@click="handleShowNotification(row)"
>预警提醒
</el-button
>
</el-button>
</template>
</el-table-column>
</el-table>
@ -196,7 +193,7 @@
<h5>民警基本情况</h5>
<el-row>
<el-col :span="6">
<icon name="local-icon-police" :size="120"/>
<icon name="local-icon-police" :size="120" />
</el-col>
<el-col :span="18">
<div class="row">
@ -410,9 +407,9 @@
<div></div>
<h5>问题清单</h5>
<el-table :data="negativeList">
<el-table-column label="发现时间" prop="discoveryTime"/>
<el-table-column label="问题来源" prop="problemSources"/>
<el-table-column label="业务类别" prop="businessTypeName"/>
<el-table-column label="发现时间" prop="discoveryTime" />
<el-table-column label="问题来源" prop="problemSources" />
<el-table-column label="业务类别" prop="businessTypeName" />
<el-table-column
label="涉及单位"
prop="involveDepartName"
@ -430,8 +427,7 @@
link
@click="handleAction(row)"
>查看详情
</el-button
>
</el-button>
</template>
</el-table-column>
</el-table>
@ -452,82 +448,7 @@
</el-scrollbar>
</el-dialog>
<el-dialog v-model="showNotification" title="创建提醒" width="600px">
<el-form label-width="148" :model="formData2" ref="formRef">
<el-form-item label="提醒类型">
<div class="flex gap">
<el-select
v-model="formData2.alarmTypeId"
style="min-width: 185px"
>
<el-option :value="1" label="预警问题"/>
<el-option :value="2" label="风险问题"/>
<el-option :value="3" label="提醒通知"/>
</el-select>
</div>
</el-form-item>
<el-form-item
style="width: 333px"
label="被通知单位"
prop="involveDepartId"
:rules="{
message: '请选择问题涉及单位',
trigger: ['blur'],
}"
>
<depart-tree-select
v-model="formData2.involveDepartId"
:check-strictly="true"
@node-click=" (row) => changeDepart(row)"
/>
</el-form-item>
<el-form-item
label="被提醒民警"
prop="blameEmpNo"
:rules="{
required: true,
message: '请选择提醒民警',
trigger: ['blur'],
}"
>
<el-select
v-model="police"
value-key="idCode"
placeholder="请选择提醒民警"
@change="changePolice"
style="width: 240px"
>
<el-option
v-for="item in polices"
:key="item.idCode"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item
label="提醒内容"
>
<el-input
type="textarea"
v-model="formData2.alarmContent"
:autosize="{ minRows: 12 }"
:rules="{
message: '请填写提醒内容',
trigger: ['blur'],
}"
style="width: 280px"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="showNotification = false" size="large">取消</el-button>
<el-button type="primary" @click="handleNotification" size="large"
>提交
</el-button
>
</footer>
</el-dialog>
<alarm-dialog v-model="showNotification" :departId="activeDepartId" @close="showNotification = false" />
<negative-dialog
v-model="negativeShow"
@ -543,101 +464,22 @@ import {
listNegativeByPoliceIdCode,
listNegativeMonthly,
} from "@/api/sensitivePerception/profilePolice";
import {HostLevel, InspectCase} from "@/enums/dictEnums";
import {getDictLable, getGenderFromIdCode} from "@/utils/util";
import { HostLevel, InspectCase } from "@/enums/dictEnums";
import { getDictLable, getGenderFromIdCode } from "@/utils/util";
import moment from "moment";
import useCatchStore from "@/stores/modules/catch";
import {ref} from "vue";
import {alarmNotificationCommit} from "~/api/work/alarm";
import feedback from "~/utils/feedback";
import {listPoliceAll, listPoliceLeader} from "~/api/system/police";
const catchStore = useCatchStore();
const dict = catchStore.getDicts(["personType"]);
let showNotification = ref(false)
let formData2 = ref({
alarmTypeId: 1,
involveDepartId: '',
involveDepartName: '',
alarmContent: '',
blameName: '',
blameIdCode: '',
blameEmpNo: '',
blames: {},
level: -1
})
let police = ref({})
let polices = ref([])
const handleShowNotification = () => {
showNotification.value = true
}
const handleNotification = async () => {
if(formData2.value.involveDepartId == '') {
feedback.msgWarning("请选择被提醒单位");
return;
}
if(formData2.value.alarmContent == '') {
feedback.msgWarning("请填写提醒内容");
return;
}
if(formData2.value.policeIdCode == '') {
feedback.msgWarning("请选择被提醒民警");
return;
}
let data = {
alarmTypeId: formData2.value.alarmTypeId,
notificationDepartCode: formData2.value.involveDepartId,
notificationDepartName: formData2.value.involveDepartName,
alarmContent: formData2.value.alarmContent,
policeName: police.value.name,
policeIdCode: police.value.idCode,
policeNo: police.value.empNo
}
await alarmNotificationCommit(data);
showNotification.value = false;
feedback.msgSuccess("操作成功");
}
const initFormData2 = () => {
formData2.value ={
alarmTypeId: 1,
involveDepartId: '',
involveDepartName: '',
alarmContent: '',
blameName: '',
blameIdCode: '',
blameEmpNo: '',
blames: {},
level: -1
}
}
const changeDepart = (row) => {
formData2.value.involveDepartName = row.shortName;
formData2.value.level = row.level
police.value = {}
getPolices(row.id);
}
const changePolice = (data) => {
police.value = {
idCode: data.idCode,
empNo: data.empNo,
name: data.name
}
}
function getPolices(departId) {
if(departId=='') {
return;
}
listPoliceLeader(departId).then(res => {
polices.value = res
})
}
let showNotification = ref(false);
const activeDepartId = ref('')
const handleShowNotification = (row) => {
showNotification.value = true;
activeDepartId.value = row.departId
};
const query = ref({
current: 1,
@ -757,14 +599,14 @@ const radarOption = ref({
},
radar: {
indicator: [
{name: "110接处警", max: 100},
{name: "122接处警", max: 100},
{name: "人境窗口服务", max: 100},
{name: "车驾管服务", max: 100},
{name: "交警执法", max: 100},
{name: "执法办案", max: 100},
{name: "专项工作", max: 100},
{name: "安保维稳", max: 100},
{ name: "110接处警", max: 100 },
{ name: "122接处警", max: 100 },
{ name: "人境窗口服务", max: 100 },
{ name: "车驾管服务", max: 100 },
{ name: "交警执法", max: 100 },
{ name: "执法办案", max: 100 },
{ name: "专项工作", max: 100 },
{ name: "安保维稳", max: 100 },
],
},
series: [
@ -838,9 +680,9 @@ function handleAction(row) {
}
const colors = [
{color: "var(--success-color)", percentage: 60},
{color: "#DC6231", percentage: 80},
{color: "var(--danger-color)", percentage: 100},
{ color: "var(--success-color)", percentage: 60 },
{ color: "#DC6231", percentage: 80 },
{ color: "var(--danger-color)", percentage: 100 },
];
function getType(val) {

208
src/views/sensitivePerception/RiskClue.vue

@ -90,16 +90,6 @@
</el-scrollbar>
</template>
</el-table-column>
<el-table-column label="操作" width="100">
<template #default="{ row }">
<el-button
type="primary"
link
@click="handleShowNotification(row.id)"
>预警提醒
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="flex end mt-8">
@ -118,75 +108,6 @@
</div>
</el-col>
</el-row>
<el-dialog v-model="showNotification" title="创建提醒" width="700px">
<el-form
label-width="148"
:model="formData2"
ref="formRef2"
class="mr-40"
>
<el-form-item label="提醒类型">
<el-select
v-model="formData2.alarmTypeId"
style="width: 280px"
>
<el-option :value="1" label="预警问题" />
<el-option :value="2" label="风险问题" />
<el-option :value="3" label="提醒通知" />
</el-select>
</el-form-item>
<el-form-item
label="被通知单位"
prop="involveDepartId"
:rules="{
message: '请选择问题涉及单位',
trigger: ['blur'],
}"
>
<div>
<depart-tree-select
v-model="formData2.involveDepartId"
:check-strictly="true"
@node-click="(row) => changeDepart(row)"
style="width: 280px"
/>
</div>
</el-form-item>
<el-form-item label="提醒内容">
<el-input
type="textarea"
v-model="formData2.alarmContent"
:autosize="{ minRows: 6 }"
:rules="{
message: '请填写提醒内容',
trigger: ['blur'],
}"
/>
</el-form-item>
<el-form-item label="是否要求回复">
<el-switch
v-model="formData2.requestReply"
inline-prompt
active-text="必须回复"
inactive-text="无需回复"
:active-value="true"
:inactive-value="false"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="showNotification = false" size="large"
>取消</el-button
>
<el-button
type="primary"
@click="handleNotification"
size="large"
>提交
</el-button>
</footer>
</el-dialog>
</div>
<el-dialog v-model="showAdd" title="风险问题录入" width="900px">
@ -334,7 +255,7 @@ import { listPoliceAll } from "~/api/system/police";
import { listQueryRiskPersonnel } from "@/api/sensitivePerception/riskPersonnel";
import { listRiskScoreRuleTreeOld } from "@/api/sensitivePerception/riskScoreRule";
import { disabledDate } from "@/utils/util";
import { alarmNotificationCommit } from "~/api/work/alarm";
import feedback from "~/utils/feedback";
const query = ref({});
@ -353,6 +274,7 @@ onMounted(() => {
treeOptions.value = data;
});
});
watch(
() => query.value.riskScoreRuleId,
() => {
@ -369,97 +291,6 @@ watch(
const loading = ref(false);
let showNotification = ref(false);
let formData2 = ref({
alarmTypeId: 1,
involveDepartId: "",
involveDepartName: "",
alarmContent: "",
blameName: "",
blameIdCode: "",
blameEmpNo: "",
blames: {},
level: -1,
requestReply: true,
});
let police = ref({});
let polices = ref([]);
let currentClueId = ref(-1);
const handleShowNotification = (id) => {
showNotification.value = true;
currentClueId.value = id;
};
const handleNotification = async () => {
if (formData2.value.involveDepartId == "") {
feedback.msgWarning("请选择被提醒单位");
return;
}
if (formData2.value.alarmContent == "") {
feedback.msgWarning("请填写提醒内容");
return;
}
if (formData2.value.policeIdCode == "") {
feedback.msgWarning("请选择被提醒民警");
return;
}
let data = {
alarmTypeId: formData2.value.alarmTypeId,
notificationDepartId: formData2.value.involveDepartId,
notificationDepartName: formData2.value.involveDepartName,
alarmContent: formData2.value.alarmContent,
policeName: police.value.name,
policeIdCode: police.value.idCode,
policeNo: police.value.empNo,
};
if (currentClueId.value != -1) {
data["clueId"] = currentClueId.value;
}
await alarmNotificationCommit(data);
showNotification.value = false;
feedback.msgSuccess("操作成功");
initFormData2();
};
const initFormData2 = () => {
formData2.value = {
alarmTypeId: 1,
involveDepartId: "",
involveDepartName: "",
alarmContent: "",
blameName: "",
blameIdCode: "",
blameEmpNo: "",
blames: {},
level: -1,
};
};
const changeDepart = (row) => {
formData2.value.involveDepartName = row.shortName;
formData2.value.level = row.level;
police.value = {};
getPolices(row.id);
};
const changePolice = (data) => {
police.value = {
idCode: data.idCode,
empNo: data.empNo,
name: data.name,
};
};
function getPolices(departId) {
if (departId == "") {
return;
}
listPoliceAll(departId).then((res) => {
polices.value = res;
});
}
function getList() {
loading.value = true;
listRiskClues(query.value).then((data) => {
@ -469,41 +300,6 @@ function getList() {
});
}
const filterJsonData = (row) => {
if (row.data == undefined) {
return "";
}
let j = JSON.parse(row.data);
let str = "";
if (j instanceof Array) {
j.forEach((item) => {
str += JSON.stringify(item) + "\n";
});
}
if (j.sourceData != undefined) {
j = JSON.parse(row.sourceData);
}
for (let key in j) {
if (key == "eventTime") {
continue;
}
if (key == "idCode") {
continue;
}
if (key == "departId") {
continue;
}
if (key == "personId") {
continue;
}
if (key == "name") {
continue;
}
str += j[key] + "\n";
}
};
function reset() {
query.value = {};
getList();

175
src/views/sensitivePerception/RiskPersonnel.vue

@ -148,7 +148,7 @@
<el-button
type="primary"
link
@click="handleShowNotification"
@click="handleShowNotification(row)"
>预警提醒
</el-button>
</template>
@ -352,81 +352,8 @@
</el-col>
</el-row>
</el-dialog>
<el-dialog v-model="showNotification" title="创建提醒" width="600px">
<el-form label-width="148" :model="formData2" ref="formRef">
<el-form-item label="提醒类型">
<div class="flex gap">
<el-select
v-model="formData2.alarmTypeId"
style="min-width: 185px"
>
<el-option :value="1" label="预警问题" />
<el-option :value="2" label="风险问题" />
<el-option :value="3" label="提醒通知" />
</el-select>
</div>
</el-form-item>
<el-form-item
style="width: 333px"
label="被通知单位"
prop="involveDepartId"
:rules="{
message: '请选择问题涉及单位',
trigger: ['blur'],
}"
>
<depart-tree-select
v-model="formData2.involveDepartId"
:check-strictly="true"
@node-click="(row) => changeDepart(row)"
/>
</el-form-item>
<el-form-item
label="被提醒民警"
prop="blameEmpNo"
:rules="{
required: true,
message: '请选择提醒民警',
trigger: ['blur'],
}"
>
<el-select
v-model="police"
value-key="idCode"
placeholder="请选择提醒民警"
@change="changePolice"
style="width: 240px"
>
<el-option
v-for="item in polices"
:key="item.idCode"
:label="item.name"
:value="item"
/>
</el-select>
</el-form-item>
<el-form-item label="提醒内容">
<el-input
type="textarea"
v-model="formData2.alarmContent"
:autosize="{ minRows: 12 }"
:rules="{
message: '请填写提醒内容',
trigger: ['blur'],
}"
style="width: 280px"
/>
</el-form-item>
</el-form>
<footer class="flex end">
<el-button @click="showNotification = false" size="large"
>取消</el-button
>
<el-button type="primary" @click="handleNotification" size="large"
>提交
</el-button>
</footer>
</el-dialog>
<alarm-dialog v-model="showNotification" :departId="activeDepartId" @close="showNotification = false" />
</template>
<script lang="ts" setup>
import {
@ -443,90 +370,12 @@ const total = ref(0);
const show = ref(false);
let showNotification = ref(false);
let formData2 = ref({
alarmTypeId: 1,
involveDepartId: "",
involveDepartName: "",
alarmContent: "",
blameName: "",
blameIdCode: "",
blameEmpNo: "",
blames: {},
level: -1,
});
let police = ref({});
let polices = ref([]);
const handleShowNotification = () => {
const activeDepartId = ref('')
const handleShowNotification = (row) => {
showNotification.value = true;
activeDepartId.value = row.controlDepartId
};
const handleNotification = async () => {
if (formData2.value.involveDepartId == "") {
feedback.msgWarning("请选择被提醒单位");
return;
}
if (formData2.value.alarmContent == "") {
feedback.msgWarning("请填写提醒内容");
return;
}
if (formData2.value.policeIdCode == "") {
feedback.msgWarning("请选择被提醒民警");
return;
}
let data = {
alarmTypeId: formData2.value.alarmTypeId,
notificationDepartCode: formData2.value.involveDepartId,
notificationDepartName: formData2.value.involveDepartName,
alarmContent: formData2.value.alarmContent,
policeName: police.value.name,
policeIdCode: police.value.idCode,
policeNo: police.value.empNo,
};
await alarmNotificationCommit(data);
showNotification.value = false;
feedback.msgSuccess("操作成功");
initFormData2();
};
const initFormData2 = () => {
formData2.value = {
alarmTypeId: 1,
involveDepartId: "",
involveDepartName: "",
alarmContent: "",
blameName: "",
blameIdCode: "",
blameEmpNo: "",
blames: {},
level: -1,
};
};
const changeDepart = (row) => {
formData2.value.involveDepartName = row.shortName;
formData2.value.level = row.level;
police.value = {};
getPolices(row.id);
};
const changePolice = (data) => {
police.value = {
idCode: data.idCode,
empNo: data.empNo,
name: data.name,
};
};
function getPolices(departId) {
if (departId == "") {
return;
}
listPoliceAll(departId).then((res) => {
polices.value = res;
});
}
const loading = ref(false);
function getList() {
loading.value = true;
@ -967,16 +816,16 @@ function getRiskTitle(score) {
font-size: 120px;
color: #fff;
&[type="red"] {
background: linear-gradient(180deg, #ffa36a 0%, #ff0000 100%);
border-color: #f11d16;
background: linear-gradient( 180deg, #FF6641 0%, #D40505 100%);
border-color: #C51B08;
}
&[type="orange"] {
background: linear-gradient(180deg, #febf00 0%, #eca20c 100%);
border-color: #d59705;
background: linear-gradient( 180deg, #FE9E00 0%, #EC360C 100%);;
border-color: #CD7242;
}
&[type="yellow"] {
background: linear-gradient(180deg, #ffff00 0%, #e7ba04 100%);
border-color: #efd800;
background: linear-gradient( 180deg, #FBC203 0%, #F08A02 100%);
border-color: #DFA100;
}
&[type="blue"] {
background: linear-gradient(180deg, #01b0f1 0%, #026cf1 100%);

Loading…
Cancel
Save