Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
JINRUN-PERPOSITION
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xinzhedeai
JINRUN-PERPOSITION
Commits
ebf3942b
Commit
ebf3942b
authored
Nov 27, 2025
by
xinzhedeai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add:报警页面page
parent
9afa942a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
344 additions
and
635 deletions
+344
-635
alarm.vue
src/views/sos/alarm.vue
+344
-635
No files found.
src/views/sos/alarm.vue
View file @
ebf3942b
...
@@ -8,109 +8,19 @@
...
@@ -8,109 +8,19 @@
v-show=
"showSearch"
v-show=
"showSearch"
label-width=
"68px"
label-width=
"68px"
>
>
<el-form-item
label=
"
区域ID"
prop=
"areaId
"
>
<el-form-item
label=
"
人员类型"
prop=
"personType
"
>
<el-
inpu
t
<el-
selec
t
v-model=
"queryParams.
areaId
"
v-model=
"queryParams.
personType
"
placeholder=
"请
输入区域ID
"
placeholder=
"请
选择人员类型
"
clearable
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"区域名称"
prop=
"areaName"
>
<el-input
v-model=
"queryParams.areaName"
placeholder=
"请输入区域名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"区域启用 Y/N"
prop=
"areaEnable"
>
<el-input
v-model=
"queryParams.areaEnable"
placeholder=
"请输入区域启用 Y/N"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"有效期开始日期"
prop=
"validBeginDate"
>
<el-date-picker
clearable
v-model=
"queryParams.validBeginDate"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"请选择有效期开始日期"
>
>
</el-date-picker>
<el-option
</el-form-item>
v-for=
"item in personTypeOptions"
<el-form-item
label=
"有效期结束日期"
prop=
"validEndDate"
>
:key=
"item.dictValue"
<el-date-picker
:label=
"item.dictLabel"
clearable
:value=
"item.dictValue"
v-model=
"queryParams.validEndDate"
></el-option>
type=
"date"
</el-select>
value-format=
"yyyy-MM-dd"
placeholder=
"请选择有效期结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"每日开始时间"
prop=
"validBeginTime"
>
<el-date-picker
clearable
v-model=
"queryParams.validBeginTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"请选择每日开始时间"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"每日结束时间"
prop=
"validEndTime"
>
<el-date-picker
clearable
v-model=
"queryParams.validEndTime"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"请选择每日结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"报警通知配置ID"
prop=
"alarmNoticeId"
>
<el-input
v-model=
"queryParams.alarmNoticeId"
placeholder=
"请输入报警通知配置ID"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"通知配置名称"
prop=
"alarmNoticeName"
>
<el-input
v-model=
"queryParams.alarmNoticeName"
placeholder=
"请输入通知配置名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"部门名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入部门名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"围栏名称"
prop=
"railName"
>
<el-input
v-model=
"queryParams.railName"
placeholder=
"请输入围栏名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"静态围栏名称"
prop=
"staticRailName"
>
<el-input
v-model=
"queryParams.staticRailName"
placeholder=
"请输入静态围栏名称"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"人员姓名"
prop=
"realName"
>
<el-form-item
label=
"人员姓名"
prop=
"realName"
>
<el-input
<el-input
...
@@ -120,74 +30,11 @@
...
@@ -120,74 +30,11 @@
@
keyup.enter.native=
"handleQuery"
@
keyup.enter.native=
"handleQuery"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"一级报警人员规则"
prop=
"firstAlarmPeopleRule"
>
<el-input
<el-form-item
label=
"定位卡号"
prop=
"cardId"
>
v-model=
"queryParams.firstAlarmPeopleRule"
placeholder=
"请输入一级报警人员规则"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"二级报警规则"
prop=
"secondAlarmRule"
>
<el-input
v-model=
"queryParams.secondAlarmRule"
placeholder=
"请输入二级报警规则"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"二级报警人员规则"
prop=
"secondAlarmPeopleRule"
>
<el-input
v-model=
"queryParams.secondAlarmPeopleRule"
placeholder=
"请输入二级报警人员规则"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"二级报警通知ID"
prop=
"secondAlarmNoticeId"
>
<el-input
v-model=
"queryParams.secondAlarmNoticeId"
placeholder=
"请输入二级报警通知ID"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"三级报警规则"
prop=
"thirdAlarmRule"
>
<el-input
v-model=
"queryParams.thirdAlarmRule"
placeholder=
"请输入三级报警规则"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"三级报警人员规则"
prop=
"thirdAlarmPeopleRule"
>
<el-input
v-model=
"queryParams.thirdAlarmPeopleRule"
placeholder=
"请输入三级报警人员规则"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"三级报警通知ID"
prop=
"thirdAlarmNoticeId"
>
<el-input
v-model=
"queryParams.thirdAlarmNoticeId"
placeholder=
"请输入三级报警通知ID"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"聚集半径"
prop=
"aggregationRadius"
>
<el-input
v-model=
"queryParams.aggregationRadius"
placeholder=
"请输入聚集半径"
clearable
@
keyup.enter.native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"持续时间"
prop=
"duration"
>
<el-input
<el-input
v-model=
"queryParams.
duration
"
v-model=
"queryParams.
cardId
"
placeholder=
"请输入
持续时间
"
placeholder=
"请输入
定位卡号
"
clearable
clearable
@
keyup.enter.native=
"handleQuery"
@
keyup.enter.native=
"handleQuery"
/>
/>
...
@@ -206,221 +53,39 @@
...
@@ -206,221 +53,39 @@
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"primary"
plain
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
>
新增
</el-button
>
</el-col>
<!--
<el-col
:span=
"1.5"
>
<el-button
type=
"success"
plain
icon=
"el-icon-edit"
size=
"mini"
:disabled=
"single"
@
click=
"handleUpdate"
v-hasPermi=
"['system:setting:edit']"
>
修改
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"danger"
plain
icon=
"el-icon-delete"
size=
"mini"
:disabled=
"multiple"
@
click=
"handleDelete"
v-hasPermi=
"['system:setting:remove']"
>
删除
</el-button
>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-download"
size=
"mini"
@
click=
"handleExport"
v-hasPermi=
"['system:setting:export']"
>
导出
</el-button
>
</el-col>
-->
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"getList"
></right-toolbar>
</el-row>
<el-table
<el-table
v-loading=
"loading"
v-loading=
"loading"
:data=
"
setting
List"
:data=
"
info
List"
@
selection-change=
"handleSelectionChange"
@
selection-change=
"handleSelectionChange"
>
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"主键"
align=
"center"
prop=
"id"
/>
<el-table-column
label=
"人员类型"
align=
"center"
prop=
"personTypeName"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
<el-table-column
label=
"姓名"
align=
"center"
prop=
"realName"
/>
<el-table-column
label=
"区域ID"
align=
"center"
prop=
"areaId"
/>
<el-table-column
label=
"联系方式"
align=
"center"
prop=
"phone"
/>
<el-table-column
label=
"区域名称"
align=
"center"
prop=
"areaName"
/>
<el-table-column
label=
"定位卡号"
align=
"center"
prop=
"cardId"
/>
<el-table-column
label=
"区域启用 Y/N"
align=
"center"
prop=
"areaEnable"
/>
<el-table-column
label=
"SOS报警时间"
align=
"center"
prop=
"deptName"
/>
<el-table-column
label=
"报警类型"
align=
"center"
prop=
"alarmType"
/>
<el-table-column
label=
"规则JSON"
align=
"center"
prop=
"rule"
/>
<el-table-column
label=
"有效期开始日期"
align=
"center"
prop=
"validBeginDate"
width=
"180"
>
<template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
validBeginDate
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
有效期结束日期
"
align
=
"
center
"
prop
=
"
validEndDate
"
width
=
"
180
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
parseTime
(
scope
.
row
.
validEndDate
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
每日开始时间
"
align
=
"
center
"
prop
=
"
validBeginTime
"
width
=
"
180
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
parseTime
(
scope
.
row
.
validBeginTime
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
每日结束时间
"
align
=
"
center
"
prop
=
"
validEndTime
"
width
=
"
180
"
>
<
template
slot
-
scope
=
"
scope
"
>
<
span
>
{{
parseTime
(
scope
.
row
.
validEndTime
,
"
{y
}
-{m
}
-{d
}
"
)
}}
<
/span
>
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
label
=
"
报警通知配置ID
"
align
=
"
center
"
prop
=
"
alarmNoticeId
"
/>
<
el
-
table
-
column
label
=
"
通知配置名称
"
align
=
"
center
"
prop
=
"
alarmNoticeName
"
/>
<
el
-
table
-
column
label
=
"
围栏ID列表
"
align
=
"
center
"
prop
=
"
railIds
"
/>
<
el
-
table
-
column
label
=
"
部门ID列表
"
align
=
"
center
"
prop
=
"
deptIds
"
/>
<
el
-
table
-
column
label
=
"
部门名称
"
align
=
"
center
"
prop
=
"
deptName
"
/>
<
el
-
table
-
column
label
=
"
报警人员ID列表
"
align
=
"
center
"
prop
=
"
alarmPersonIds
"
/>
<
el
-
table
-
column
label
=
"
报警人员姓名
"
align
=
"
center
"
prop
=
"
alarmPersonNames
"
/>
<
el
-
table
-
column
label
=
"
报警岗位ID列表
"
align
=
"
center
"
prop
=
"
alarmPostIds
"
/>
<
el
-
table
-
column
label
=
"
报警岗位名称
"
align
=
"
center
"
prop
=
"
alarmPostNames
"
/>
<
el
-
table
-
column
label
=
"
围栏名称
"
align
=
"
center
"
prop
=
"
railName
"
/>
<
el
-
table
-
column
label
=
"
静态围栏名称
"
align
=
"
center
"
prop
=
"
staticRailName
"
/>
<
el
-
table
-
column
label
=
"
人员姓名
"
align
=
"
center
"
prop
=
"
realName
"
/>
<
el
-
table
-
column
label
=
"
人员ID列表
"
align
=
"
center
"
prop
=
"
personIds
"
/>
<
el
-
table
-
column
label
=
"
一级报警人员规则
"
align
=
"
center
"
prop
=
"
firstAlarmPeopleRule
"
/>
<
el
-
table
-
column
label
=
"
二级报警规则
"
align
=
"
center
"
prop
=
"
secondAlarmRule
"
/>
<
el
-
table
-
column
label
=
"
二级报警人员规则
"
align
=
"
center
"
prop
=
"
secondAlarmPeopleRule
"
/>
<
el
-
table
-
column
label
=
"
二级报警通知ID
"
align
=
"
center
"
prop
=
"
secondAlarmNoticeId
"
/>
<
el
-
table
-
column
label
=
"
三级报警规则
"
align
=
"
center
"
prop
=
"
thirdAlarmRule
"
/>
<
el
-
table
-
column
label
=
"
三级报警人员规则
"
align
=
"
center
"
prop
=
"
thirdAlarmPeopleRule
"
/>
<
el
-
table
-
column
label
=
"
三级报警通知ID
"
align
=
"
center
"
prop
=
"
thirdAlarmNoticeId
"
/>
<
el
-
table
-
column
label
=
"
聚集半径
"
align
=
"
center
"
prop
=
"
aggregationRadius
"
/>
<
el
-
table
-
column
label
=
"
持续时间
"
align
=
"
center
"
prop
=
"
duration
"
/>
<el-table-column
<el-table-column
label
=
"
静态围栏ID列表
"
label=
"
报警地点经纬度
"
align=
"center"
align=
"center"
prop
=
"
staticRailIds
"
prop=
"
positionName
"
/>
/>
<
el
-
table
-
column
<el-table-column
label=
"报警状态"
align=
"center"
prop=
"idNumber"
>
label
=
"
操作
"
align
=
"
center
"
class
-
name
=
"
small-padding fixed-width
"
fixed
=
"
right
"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
idNumber
}}
<!-- 当报警状态为Y时显示处置按钮 -->
<el-button
<el-button
v-if=
"scope.row.idNumber === 'Y'"
type=
"primary"
size=
"mini"
size=
"mini"
type
=
"
text
"
@
click=
"handleDispose(scope.row)"
icon
=
"
el-icon-edit
"
@
click
=
"
handleUpdate(scope.row)
"
>
修改
<
/el-butto
n
>
<
el
-
button
size
=
"
mini
"
type
=
"
text
"
icon
=
"
el-icon-delete
"
@
click
=
"
handleDelete(scope.row)
"
>
删除
<
/el-butto
n
>
>
处置
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"解除原因"
align=
"center"
prop=
"idNumber"
/>
<el-table-column
label=
"解除人"
align=
"center"
prop=
"idNumber"
/>
<el-table-column
label=
"解除时间"
align=
"center"
prop=
"idNumber"
/>
</el-table>
</el-table>
<pagination
<pagination
...
@@ -431,185 +96,77 @@
...
@@ -431,185 +96,77 @@
@
pagination=
"getList"
@
pagination=
"getList"
/>
/>
<!--
添加或修改报警设置对话框
-->
<!-- 处置弹窗 -->
<
el
-
dialog
:
title
=
"
title
"
:
visible
.
sync
=
"
open
"
width
=
"
500px
"
append
-
to
-
body
>
<el-dialog
<
el
-
form
ref
=
"
form
"
:
model
=
"
form
"
:
rules
=
"
rules
"
label
-
width
=
"
80px
"
>
:title=
"'处置报警 - ' + disposeForm.realName"
<
el
-
form
-
item
label
=
"
备注
"
prop
=
"
remark
"
>
:visible.sync=
"disposeDialogVisible"
<
el
-
input
v
-
model
=
"
form.remark
"
placeholder
=
"
请输入备注
"
/>
width=
"500px"
<
/el-form-item
>
>
<
el
-
form
-
item
label
=
"
区域ID
"
prop
=
"
areaId
"
>
<el-form
:model=
"disposeForm"
ref=
"disposeFormRef"
label-width=
"120px"
>
<
el
-
input
v
-
model
=
"
form.areaId
"
placeholder
=
"
请输入区域ID
"
/>
<el-form-item
label=
"解除报警原因"
prop=
"reason"
required
>
<
/el-form-item
>
<div
<
el
-
form
-
item
label
=
"
区域名称
"
prop
=
"
areaName
"
>
v-for=
"item in reasonOptions"
<
el
-
input
v
-
model
=
"
form.areaName
"
placeholder
=
"
请输入区域名称
"
/>
:key=
"item.dictValue"
<
/el-form-item
>
class=
"radio-item"
<
el
-
form
-
item
label
=
"
区域启用 Y/N
"
prop
=
"
areaEnable
"
>
<
el
-
input
v
-
model
=
"
form.areaEnable
"
placeholder
=
"
请输入区域启用 Y/N
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
规则JSON
"
prop
=
"
rule
"
>
<
el
-
input
v
-
model
=
"
form.rule
"
type
=
"
textarea
"
placeholder
=
"
请输入内容
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
有效期开始日期
"
prop
=
"
validBeginDate
"
>
<
el
-
date
-
picker
clearable
v
-
model
=
"
form.validBeginDate
"
type
=
"
date
"
value
-
format
=
"
yyyy-MM-dd
"
placeholder
=
"
请选择有效期开始日期
"
>
<
/el-date-picker
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
有效期结束日期
"
prop
=
"
validEndDate
"
>
<
el
-
date
-
picker
clearable
v
-
model
=
"
form.validEndDate
"
type
=
"
date
"
value
-
format
=
"
yyyy-MM-dd
"
placeholder
=
"
请选择有效期结束日期
"
>
<
/el-date-picker
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
每日开始时间
"
prop
=
"
validBeginTime
"
>
<
el
-
date
-
picker
clearable
v
-
model
=
"
form.validBeginTime
"
type
=
"
date
"
value
-
format
=
"
yyyy-MM-dd
"
placeholder
=
"
请选择每日开始时间
"
>
<
/el-date-picker
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
每日结束时间
"
prop
=
"
validEndTime
"
>
<
el
-
date
-
picker
clearable
v
-
model
=
"
form.validEndTime
"
type
=
"
date
"
value
-
format
=
"
yyyy-MM-dd
"
placeholder
=
"
请选择每日结束时间
"
>
>
<
/el-date-picker
>
<el-radio
<
/el-form-item
>
v-model=
"disposeForm.reason"
<
el
-
form
-
item
label
=
"
报警通知配置ID
"
prop
=
"
alarmNoticeId
"
>
:label=
"item.dictValue"
<
el
-
input
@
change=
"handleReasonChange(item.dictValue)"
v
-
model
=
"
form.alarmNoticeId
"
>
placeholder
=
"
请输入报警通知配置ID
"
{{ item.dictLabel }}
/>
</el-radio>
<
/el-form-item
>
</div>
<
el
-
form
-
item
label
=
"
通知配置名称
"
prop
=
"
alarmNoticeName
"
>
<
el
-
input
v
-
model
=
"
form.alarmNoticeName
"
placeholder
=
"
请输入通知配置名称
"
/>
</el-form-item>
</el-form-item>
<
el
-
form
-
item
label
=
"
部门名称
"
prop
=
"
deptName
"
>
<!-- 当选择其他时显示文本框 -->
<
el
-
input
v
-
model
=
"
form.deptName
"
placeholder
=
"
请输入部门名称
"
/>
<el-form-item
<
/el-form-item
>
v-if=
"showOtherReason"
<
el
-
form
-
item
label
=
"
报警人员姓名
"
prop
=
"
alarmPersonNames
"
>
label=
"其他原因"
<
el
-
input
prop=
"otherReason"
v
-
model
=
"
form.alarmPersonNames
"
required
type
=
"
textarea
"
>
placeholder
=
"
请输入内容
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
报警岗位名称
"
prop
=
"
alarmPostNames
"
>
<el-input
<el-input
v
-
model
=
"
form.alarmPostNames
"
v-model=
"
disposeForm.otherReason
"
type=
"textarea"
type=
"textarea"
placeholder
=
"
请输入内容
"
:rows=
"4"
/>
placeholder=
"请输入其他解除原因"
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
围栏名称
"
prop
=
"
railName
"
>
<
el
-
input
v
-
model
=
"
form.railName
"
placeholder
=
"
请输入围栏名称
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
静态围栏名称
"
prop
=
"
staticRailName
"
>
<
el
-
input
v
-
model
=
"
form.staticRailName
"
placeholder
=
"
请输入静态围栏名称
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
人员姓名
"
prop
=
"
realName
"
>
<
el
-
input
v
-
model
=
"
form.realName
"
placeholder
=
"
请输入人员姓名
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
一级报警人员规则
"
prop
=
"
firstAlarmPeopleRule
"
>
<
el
-
input
v
-
model
=
"
form.firstAlarmPeopleRule
"
placeholder
=
"
请输入一级报警人员规则
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
二级报警规则
"
prop
=
"
secondAlarmRule
"
>
<
el
-
input
v
-
model
=
"
form.secondAlarmRule
"
placeholder
=
"
请输入二级报警规则
"
/>
/>
</el-form-item>
</el-form-item>
<
el
-
form
-
item
label
=
"
二级报警人员规则
"
prop
=
"
secondAlarmPeopleRule
"
>
<
el
-
input
v
-
model
=
"
form.secondAlarmPeopleRule
"
placeholder
=
"
请输入二级报警人员规则
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
二级报警通知ID
"
prop
=
"
secondAlarmNoticeId
"
>
<
el
-
input
v
-
model
=
"
form.secondAlarmNoticeId
"
placeholder
=
"
请输入二级报警通知ID
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
三级报警规则
"
prop
=
"
thirdAlarmRule
"
>
<
el
-
input
v
-
model
=
"
form.thirdAlarmRule
"
placeholder
=
"
请输入三级报警规则
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
三级报警人员规则
"
prop
=
"
thirdAlarmPeopleRule
"
>
<
el
-
input
v
-
model
=
"
form.thirdAlarmPeopleRule
"
placeholder
=
"
请输入三级报警人员规则
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
三级报警通知ID
"
prop
=
"
thirdAlarmNoticeId
"
>
<
el
-
input
v
-
model
=
"
form.thirdAlarmNoticeId
"
placeholder
=
"
请输入三级报警通知ID
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
聚集半径
"
prop
=
"
aggregationRadius
"
>
<
el
-
input
v
-
model
=
"
form.aggregationRadius
"
placeholder
=
"
请输入聚集半径
"
/>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"
持续时间
"
prop
=
"
duration
"
>
<
el
-
input
v
-
model
=
"
form.duration
"
placeholder
=
"
请输入持续时间
"
/>
<
/el-form-item
>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<
el
-
button
type
=
"
primary
"
@
click
=
"
submitForm
"
>
确
定
<
/el-button
>
<el-button
@
click=
"disposeDialogVisible = false"
>
取消
</el-button>
<
el
-
button
@
click
=
"
cancel
"
>
取
消
<
/el-button
>
<el-button
type=
"primary"
@
click=
"submitDispose"
>
确定
</el-button>
</div>
</div>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
listInfo
}
from
"
@/api/jinrun/renyuan
"
;
listSetting
,
import
{
getDict
}
from
"
@/api/jinrun/common
"
;
getSetting
,
delSetting
,
// 假设解除原因的字典类型为 'alarm_dispose_reason'
addSetting
,
const
ALARM_DISPOSE_REASON_DICT_TYPE
=
"
alarm_dispose_reason
"
;
updateSetting
,
// 假设其他原因的值为 'other'
}
from
"
@/api/jinrun/alarm
"
;
const
OTHER_REASON_VALUE
=
"
other
"
;
export
default
{
export
default
{
name
:
"
Setting
"
,
name
:
"
Info
"
,
data
()
{
data
()
{
return
{
return
{
// 处置弹窗是否显示
disposeDialogVisible
:
false
,
// 是否显示其他原因文本框
showOtherReason
:
false
,
// 处置表单数据
disposeForm
:
{
realName
:
""
,
personId
:
""
,
reason
:
""
,
otherReason
:
""
,
},
// 人员类型下拉列表数据
personTypeOptions
:
[],
// 遮罩层
// 遮罩层
loading
:
true
,
loading
:
true
,
// 选中数组
// 选中数组
...
@@ -622,8 +179,8 @@ export default {
...
@@ -622,8 +179,8 @@ export default {
showSearch
:
true
,
showSearch
:
true
,
// 总条数
// 总条数
total
:
0
,
total
:
0
,
//
报警设置
表格数据
//
人员信息
表格数据
setting
List
:
[],
info
List
:
[],
// 弹出层标题
// 弹出层标题
title
:
""
,
title
:
""
,
// 是否显示弹出层
// 是否显示弹出层
...
@@ -632,58 +189,141 @@ export default {
...
@@ -632,58 +189,141 @@ export default {
queryParams
:
{
queryParams
:
{
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
10
,
pageSize
:
10
,
areaId
:
null
,
personType
:
""
,
areaName
:
null
,
personTypeName
:
null
,
areaEnable
:
null
,
staffType
:
null
,
alarmType
:
null
,
staffTypeName
:
null
,
rule
:
null
,
positionIconType
:
null
,
validBeginDate
:
null
,
positionIconTypeName
:
null
,
validEndDate
:
null
,
validBeginTime
:
null
,
validEndTime
:
null
,
alarmNoticeId
:
null
,
alarmNoticeName
:
null
,
railIds
:
null
,
deptIds
:
null
,
deptName
:
null
,
alarmPersonIds
:
null
,
alarmPersonNames
:
null
,
alarmPostIds
:
null
,
alarmPostNames
:
null
,
railName
:
null
,
staticRailName
:
null
,
realName
:
null
,
realName
:
null
,
personIds
:
null
,
phone
:
null
,
firstAlarmPeopleRule
:
null
,
sex
:
null
,
secondAlarmRule
:
null
,
birth
:
null
,
secondAlarmPeopleRule
:
null
,
email
:
null
,
secondAlarmNoticeId
:
null
,
nativePlace
:
null
,
thirdAlarmRule
:
null
,
nation
:
null
,
thirdAlarmPeopleRule
:
null
,
maritalStatus
:
null
,
thirdAlarmNoticeId
:
null
,
politicsStatus
:
null
,
aggregationRadius
:
null
,
healthStatus
:
null
,
duration
:
null
,
idType
:
null
,
staticRailIds
:
null
,
idNumber
:
null
,
personIc
:
null
,
personCode
:
null
,
personSource
:
null
,
company
:
null
,
companyName
:
null
,
administratorName
:
null
,
administratorPhone
:
null
,
jobNumber
:
null
,
jobStatus
:
null
,
hireDate
:
null
,
hireDateAlias
:
null
,
dimissionDate
:
null
,
officePhone
:
null
,
duty
:
null
,
professionalTitle
:
null
,
professionalTitleNumber
:
null
,
seniority
:
null
,
experience
:
null
,
yearPlusExperience
:
null
,
highestEducation
:
null
,
highestDegree
:
null
,
profession
:
null
,
school
:
null
,
diplomaNumber
:
null
,
cengNumber
:
null
,
accessory
:
null
,
accessoryList
:
null
,
contractorId
:
null
,
contractorName
:
null
,
receiveLeader
:
null
,
receivePhone
:
null
,
gateThrough
:
null
,
leaveTime
:
null
,
visitorStatus
:
null
,
visitTime
:
null
,
process
:
null
,
lastUpdateDate
:
null
,
lastCreateDate
:
null
,
updateFail
:
null
,
onlineStatus
:
null
,
inOutStatus
:
null
,
cardType
:
null
,
cardTypeName
:
null
,
cardId
:
null
,
icCardId
:
null
,
cardPower
:
null
,
personPhoto
:
null
,
photoSign
:
null
,
deptName
:
null
,
reservationEntryStartTime
:
null
,
reservationEntryEndTime
:
null
,
reservationVisitingTime
:
null
,
curUserName
:
null
,
visitorId
:
null
,
},
},
// 表单参数
// 表单参数
form
:
{
}
,
form
:
{
personType
:
""
,
},
// 表单校验
// 表单校验
rules
:
{
}
,
rules
:
{
personType
:
[
{
required
:
true
,
message
:
"
人员类型不能为空
"
,
trigger
:
"
change
"
},
],
},
};
};
},
},
created
()
{
created
()
{
this
.
getList
();
this
.
getList
();
this
.
getReasonOptions
();
},
},
methods
:
{
methods
:
{
/** 查询报警设置列表 */
/** 获取解除原因选项 */
getReasonOptions
()
{
// 调用数据字典接口获取解除原因
getDict
({
dictType
:
ALARM_DISPOSE_REASON_DICT_TYPE
})
.
then
((
response
)
=>
{
this
.
reasonOptions
=
response
.
records
||
[];
})
.
catch
((
error
)
=>
{
this
.
$modal
.
msgError
(
"
获取解除原因数据失败
"
);
console
.
error
(
"
获取解除原因数据失败:
"
,
error
);
});
},
/** 查询人员信息列表 */
getList
()
{
getList
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
list
Setting
(
this
.
queryParams
).
then
((
response
)
=>
{
list
Info
(
this
.
queryParams
).
then
((
response
)
=>
{
this
.
settingList
=
response
.
data
;
this
.
infoList
=
response
.
records
;
this
.
total
=
response
.
total
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
this
.
loading
=
false
;
});
});
},
},
/** 处理报警处置 */
handleDispose
(
row
)
{
// 重置表单
this
.
disposeForm
=
{
realName
:
row
.
realName
,
personId
:
row
.
personId
,
reason
:
""
,
otherReason
:
""
,
};
this
.
showOtherReason
=
false
;
// 显示弹窗
this
.
disposeDialogVisible
=
true
;
},
/** 处理原因选择变化 */
handleReasonChange
(
reason
)
{
// 当选择其他时显示文本框
this
.
showOtherReason
=
reason
===
OTHER_REASON_VALUE
;
// 如果不是其他,清空其他原因
if
(
!
this
.
showOtherReason
)
{
this
.
disposeForm
.
otherReason
=
""
;
}
},
// 取消按钮
// 取消按钮
cancel
()
{
cancel
()
{
this
.
open
=
false
;
this
.
open
=
false
;
...
@@ -692,43 +332,83 @@ export default {
...
@@ -692,43 +332,83 @@ export default {
// 表单重置
// 表单重置
reset
()
{
reset
()
{
this
.
form
=
{
this
.
form
=
{
id
:
null
,
createBy
:
null
,
createBy
:
null
,
createTime
:
null
,
createTime
:
null
,
updateTime
:
null
,
updateTime
:
null
,
remark
:
null
,
remark
:
null
,
areaId
:
null
,
personId
:
null
,
areaName
:
null
,
personType
:
null
,
areaEnable
:
null
,
personTypeName
:
null
,
alarmType
:
null
,
staffType
:
null
,
rule
:
null
,
staffTypeName
:
null
,
validBeginDate
:
null
,
positionIconType
:
null
,
validEndDate
:
null
,
positionIconTypeName
:
null
,
validBeginTime
:
null
,
validEndTime
:
null
,
alarmNoticeId
:
null
,
alarmNoticeName
:
null
,
railIds
:
null
,
deptIds
:
null
,
deptName
:
null
,
alarmPersonIds
:
null
,
alarmPersonNames
:
null
,
alarmPostIds
:
null
,
alarmPostNames
:
null
,
railName
:
null
,
staticRailName
:
null
,
realName
:
null
,
realName
:
null
,
personIds
:
null
,
phone
:
null
,
firstAlarmPeopleRule
:
null
,
sex
:
null
,
secondAlarmRule
:
null
,
birth
:
null
,
secondAlarmPeopleRule
:
null
,
email
:
null
,
secondAlarmNoticeId
:
null
,
nativePlace
:
null
,
thirdAlarmRule
:
null
,
nation
:
null
,
thirdAlarmPeopleRule
:
null
,
maritalStatus
:
null
,
thirdAlarmNoticeId
:
null
,
politicsStatus
:
null
,
aggregationRadius
:
null
,
healthStatus
:
null
,
duration
:
null
,
idType
:
null
,
staticRailIds
:
null
,
idNumber
:
null
,
personIc
:
null
,
personCode
:
null
,
personSource
:
null
,
company
:
null
,
companyName
:
null
,
administratorName
:
null
,
administratorPhone
:
null
,
jobNumber
:
null
,
jobStatus
:
null
,
hireDate
:
null
,
hireDateAlias
:
null
,
dimissionDate
:
null
,
officePhone
:
null
,
duty
:
null
,
professionalTitle
:
null
,
professionalTitleNumber
:
null
,
seniority
:
null
,
experience
:
null
,
yearPlusExperience
:
null
,
highestEducation
:
null
,
highestDegree
:
null
,
profession
:
null
,
school
:
null
,
diplomaNumber
:
null
,
cengNumber
:
null
,
accessory
:
null
,
accessoryList
:
null
,
contractorId
:
null
,
contractorName
:
null
,
receiveLeader
:
null
,
receivePhone
:
null
,
gateThrough
:
null
,
leaveTime
:
null
,
visitorStatus
:
null
,
visitTime
:
null
,
process
:
null
,
lastUpdateDate
:
null
,
lastCreateDate
:
null
,
updateFail
:
null
,
onlineStatus
:
null
,
inOutStatus
:
null
,
cardType
:
null
,
cardTypeName
:
null
,
cardId
:
null
,
icCardId
:
null
,
cardPower
:
null
,
personPhoto
:
null
,
photoSign
:
null
,
deptName
:
null
,
reservationEntryStartTime
:
null
,
reservationEntryEndTime
:
null
,
reservationVisitingTime
:
null
,
curUserName
:
null
,
visitorId
:
null
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
@@ -744,7 +424,7 @@ export default {
...
@@ -744,7 +424,7 @@ export default {
},
},
// 多选框选中数据
// 多选框选中数据
handleSelectionChange
(
selection
)
{
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
((
item
)
=>
item
.
i
d
);
this
.
ids
=
selection
.
map
((
item
)
=>
item
.
personI
d
);
this
.
single
=
selection
.
length
!==
1
;
this
.
single
=
selection
.
length
!==
1
;
this
.
multiple
=
!
selection
.
length
;
this
.
multiple
=
!
selection
.
length
;
},
},
...
@@ -752,45 +432,71 @@ export default {
...
@@ -752,45 +432,71 @@ export default {
handleAdd
()
{
handleAdd
()
{
this
.
reset
();
this
.
reset
();
this
.
open
=
true
;
this
.
open
=
true
;
this
.
title
=
"
添加
报警设置
"
;
this
.
title
=
"
添加
人员信息
"
;
},
},
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
this
.
reset
();
this
.
reset
();
const
id
=
row
.
id
||
this
.
ids
;
listInfo
({
getSetting
(
id
).
then
((
response
)
=>
{
pageNum
:
1
,
this
.
form
=
response
.
data
;
pageSize
:
1
,
personId
:
row
.
personId
,
}).
then
((
response
)
=>
{
this
.
form
=
response
.
data
[
0
];
this
.
open
=
true
;
this
.
open
=
true
;
this
.
title
=
"
修改
报警设置
"
;
this
.
title
=
"
修改
人员信息
"
;
});
});
},
},
/** 提交按钮 */
/** 提交按钮 */
submitForm
()
{
submitForm
()
{
this
.
$refs
[
"
form
"
].
validate
((
valid
)
=>
{
// 简单的表单验证
if
(
valid
)
{
if
(
!
this
.
disposeForm
.
reason
)
{
if
(
this
.
form
.
id
!=
null
)
{
this
.
$message
.
error
(
"
请选择解除报警原因
"
);
updateSetting
(
this
.
form
).
then
((
response
)
=>
{
return
;
this
.
$modal
.
msgSuccess
(
"
修改成功
"
);
}
this
.
open
=
false
;
this
.
getList
();
if
(
this
.
showOtherReason
&&
!
this
.
disposeForm
.
otherReason
.
trim
())
{
}
);
this
.
$message
.
error
(
"
请输入其他解除原因
"
);
}
else
{
return
;
addSetting
(
this
.
form
).
then
((
response
)
=>
{
}
this
.
$modal
.
msgSuccess
(
"
新增成功
"
);
this
.
open
=
false
;
// 构建提交数据
this
.
getList
();
const
submitData
=
{
}
);
personId
:
this
.
disposeForm
.
personId
,
}
reason
:
this
.
disposeForm
.
reason
,
}
otherReason
:
this
.
disposeForm
.
otherReason
,
};
updateInfo
(
this
.
form
).
then
((
response
)
=>
{
this
.
disposeDialogVisible
=
false
;
this
.
$modal
.
msgSuccess
(
"
解除报警成功
"
);
this
.
getList
();
// 重新加载列表数据
});
});
},
},
/** 解绑卡按钮操作 */
handleUnbindCard
(
row
)
{
this
.
$modal
.
confirm
(
"
是否确认解绑该人员的卡?
"
)
.
then
(
function
()
{
return
unbindCard
({
personId
:
row
.
personId
,
personType
:
row
.
personType
,
});
})
.
then
(()
=>
{
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"
解绑卡成功
"
);
})
.
catch
(()
=>
{});
},
/** 删除按钮操作 */
/** 删除按钮操作 */
handleDelete
(
row
)
{
handleDelete
(
row
)
{
const
ids
=
row
.
id
||
this
.
ids
;
this
.
$modal
this
.
$modal
.
confirm
(
'
是否确认删除报警设置编号为"
'
+
ids
+
'
"的数据项?
'
)
.
confirm
(
"
是否确认删除该数据项?
"
)
.
then
(
function
()
{
.
then
(
function
()
{
return
delSetting
(
ids
);
return
delInfo
({
personIds
:
[
row
.
personId
],
personType
:
row
.
personType
,
});
})
})
.
then
(()
=>
{
.
then
(()
=>
{
this
.
getList
();
this
.
getList
();
...
@@ -798,16 +504,19 @@ export default {
...
@@ -798,16 +504,19 @@ export default {
})
})
.
catch
(()
=>
{});
.
catch
(()
=>
{});
},
},
/** 导出按钮操作 */
handleExport
()
{
this
.
download
(
"
system/setting/export
"
,
{
...
this
.
queryParams
,
}
,
`setting_${new Date().getTime()
}
.xlsx`
);
}
,
},
},
};
};
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
.image-slot
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
width
:
50px
;
height
:
50px
;
background-color
:
#f5f7fa
;
color
:
#909399
;
font-size
:
20px
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment