feat:配置修改

This commit is contained in:
dzc committed 2025-09-16 15:58:54 +08:00
1 parent f771123601
commit ddc7465294
2 files changed
+198 -149

No files matched your search

+53 -60
View File
@@ -1,56 +1,46 @@
<template>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="180px"
v-loading="state.loading">
<el-divider class="mb-12">人员高频次出入</el-divider>
<el-form-item label="车闸报警频次" prop="carRepeatCount">
<!-- **************************** start 夜晚出入营区 start **************************** -->
<el-divider class="my-12">夜晚出入营区</el-divider>
<el-form-item prop="carNightCamp.alarmTime">
<template #label>
<div class="flex items-center gap-1">
<span>车闸报警频次</span>
<el-tooltip class="box-item" :content="`每天进出${form.carRepeatCount}次就会报警`" placement="top">
<span>夜晚出入时间</span>
<el-tooltip class="box-item" :content="`每天${form.carNightCamp.alarmTime}以后出入车闸报警`" placement="top">
<el-icon :size="16">
<InfoFilled />
</el-icon>
</el-tooltip>
</div>
</template>
<el-input v-model="form.carRepeatCount" placeholder="请输入道闸报警频次">
<template #append>次</template>
</el-input>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carNightCamp.alarmTime" is-range
placeholder="请选择夜晚出入时间" />
</el-form-item>
<el-divider class="my-12">车辆工作时间</el-divider>
<el-form-item prop="carPersonWorkForenoonTime">
<!-- **************************** end 夜晚出入营区 end **************************** -->
<!-- **************************** start 考勤配置 start **************************** -->
<el-divider class="my-12">考勤配置</el-divider>
<el-form-item prop="carKq.forenoon">
<template #label>
<div class="flex items-center gap-1">
<span>车辆工作时间(上午)</span>
<span>考勤时间(上午)</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carPersonWorkForenoonTime" is-range
placeholder="请选择车辆工作时间(上午)" />
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carKq.forenoon" is-range
placeholder="请选择考勤时间(上午)" />
</el-form-item>
<el-form-item prop="carPersonWorkAfternoonTime">
<el-form-item prop="carKq.afternoon">
<template #label>
<div class="flex items-center gap-1">
<span>车辆工作时间(下午)</span>
<span>考勤时间(下午)</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carPersonWorkAfternoonTime" is-range
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carKq.afternoon" is-range
placeholder="请选择车辆工作时间(下午)" />
</el-form-item>
<el-divider class="my-12">夜晚报警</el-divider>
<el-form-item prop="carNightAlarmTime">
<template #label>
<div class="flex items-center gap-1">
<span>车辆夜晚报警时间</span>
<el-tooltip class="box-item" :content="`每天${form.carNightAlarmTime}以后出入人闸报警`" placement="top">
<el-icon :size="16">
<InfoFilled />
</el-icon>
</el-tooltip>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.carNightAlarmTime" is-range
placeholder="请选择车辆夜晚报警时间" />
</el-form-item>
<!-- **************************** end 考勤配置 end **************************** -->
</el-form>
</template>
@@ -66,21 +56,28 @@ const state = reactive<any>({
// 提交表单数据
const form = reactive<any>({
// 道闸报警频次
carRepeatCount: 0,
// 工作时间上午
carPersonWorkForenoonTime: null,
// 工作时间下午
carPersonWorkAfternoonTime: null,
// 夜晚报警时间
carNightAlarmTime: [],
// 车辆晚上出入营区
carNightCamp: {
alarmTime: [],
cameraChannels: [],
},
// 车辆考勤配置
carKq: {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
},
})
const dataRules = ref({
carRepeatCount: [{ required: true, message: '车辆报警频次不能为空', trigger: 'blur' }],
carPersonWorkForenoonTime: [{ required: true, message: '车辆工作时间(上午)不能为空', trigger: 'change' }],
carPersonWorkAfternoonTime: [{ required: true, message: '车辆工作时间(下午)不能为空', trigger: 'change' }],
carNightAlarmTime: [{ required: true, message: '车辆报警时间不能为空', trigger: 'change' }],
// 车辆晚上出入营区
"carNightCamp.alarmTime": [{
required: true, message: '夜晚出入时间不能为空', trigger: 'blur'
}],
// 车辆考勤配置
"carKq.forenoon": [{ required: true, message: '考勤时间(上午)不能为空', trigger: 'blur' }],
"carKq.afternoon": [{ required: true, message: '考勤时间(下午)不能为空', trigger: 'blur' }],
})
onMounted(() => {
@@ -91,16 +88,21 @@ async function getSetting() {
state.loading = true
try {
const { data } = await ComDhSettingApi.getObj()
if (!data.carNightCamp) {
data.carNightCamp = {
alarmTime: [],
cameraChannels: [],
}
}
if (!data.carKq) {
data.carKq = {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
}
}
if (data) {
if (data.carPersonWorkForenoonTime) {
data.carPersonWorkForenoonTime = data.carPersonWorkForenoonTime.split(',')
}
if (data.carPersonWorkAfternoonTime) {
data.carPersonWorkAfternoonTime = data.carPersonWorkAfternoonTime.split(',')
}
if (data.carNightAlarmTime) {
data.carNightAlarmTime = data.carNightAlarmTime.split(',')
}
Object.assign(form, data)
}
} catch (err: any) {
@@ -118,15 +120,6 @@ async function onSubmit() {
const _form = {
...form,
}
if (_form.carPersonWorkForenoonTime && Array.isArray(_form.carPersonWorkForenoonTime)) {
_form.carPersonWorkForenoonTime = _form.carPersonWorkForenoonTime.join(',')
}
if (_form.carPersonWorkAfternoonTime && Array.isArray(_form.carPersonWorkAfternoonTime)) {
_form.carPersonWorkAfternoonTime = _form.carPersonWorkAfternoonTime.join(',')
}
if (_form.carNightAlarmTime && Array.isArray(_form.carNightAlarmTime)) {
_form.carNightAlarmTime = _form.carNightAlarmTime.join(',')
}
await ComDhSettingApi.putObj(_form)
useMessage().success('修改成功');
} catch (err: any) {
+145 -89
View File
@@ -1,77 +1,125 @@
<template>
<el-form ref="dataFormRef" :model="form" :rules="dataRules" formDialogRef label-width="180px"
v-loading="state.loading">
<el-divider class="mb-12">人员高频次出入</el-divider>
<el-form-item prop="doorRepeatCount">
<!-- **************************** start 夜晚出入营区 start **************************** -->
<el-divider class="my-12">夜晚出入营区</el-divider>
<el-form-item prop="personNightCamp.alarmTime">
<template #label>
<div class="flex items-center gap-1">
<span>道闸报警频次</span>
<el-tooltip class="box-item" :content="`每天进出${form.doorRepeatCount}次就会报警`" placement="top">
<el-icon :size="16">
<InfoFilled />
</el-icon>
</el-tooltip>
<span>夜晚出入时间</span>
</div>
</template>
<el-input v-model="form.doorRepeatCount" placeholder="请输入道闸报警频次">
<template #append>次</template>
</el-input>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personNightCamp.alarmTime" is-range
placeholder="请选择夜晚出入时间" />
</el-form-item>
<el-divider class="my-12">人员工作时间</el-divider>
<el-form-item prop="doorPersonWorkForenoonTime">
<el-form-item prop="personNightCamp.cameraChannels">
<template #label>
<div class="flex items-center gap-1">
<span>人员工作时间(上午)</span>
<span>摄像头</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.doorPersonWorkForenoonTime" is-range
placeholder="请选择人员工作时间(上午)" />
<select-tree-channel v-model="form.personNightCamp.cameraChannels" placeholder="请选择摄像头" />
</el-form-item>
<el-form-item prop="doorPersonWorkAfternoonTime">
<!-- **************************** end 夜晚出入营区 end **************************** -->
<!-- **************************** start 夜晚出入办公楼 start **************************** -->
<el-divider class="my-12">夜晚出入办公楼</el-divider>
<el-form-item prop="personNightOffice.alarmTime">
<template #label>
<div class="flex items-center gap-1">
<span>人员工作时间(下午)</span>
<span>夜晚出入时间</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.doorPersonWorkAfternoonTime" is-range
placeholder="请选择人员工作时间(下午)" />
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personNightOffice.alarmTime" is-range
placeholder="请选择夜晚出入时间" />
</el-form-item>
<el-divider class="my-12">夜晚报警</el-divider>
<el-form-item prop="doorNightAlarmTime">
<el-form-item prop="personNightOffice.cameraChannels">
<template #label>
<div class="flex items-center gap-1">
<span>人员夜晚报警时间</span>
<span>摄像头</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.doorNightAlarmTime" is-range
placeholder="请选择夜晚报警时间" />
<select-tree-channel v-model="form.personNightOffice.cameraChannels" placeholder="请选择摄像头" />
</el-form-item>
<el-divider class="my-12">主楼配置</el-divider>
<el-form-item prop="doorMainFloorChannels">
<!-- **************************** end 夜晚出入办公楼 end **************************** -->
<!-- **************************** start 打卡 start **************************** -->
<el-divider class="my-12">打卡配置</el-divider>
<el-form-item prop="personDk.forenoon">
<template #label>
<div class="flex items-center gap-1">
<span>主楼入口摄像头</span>
<span>打卡时间(上午)</span>
</div>
</template>
<select-tree-channel v-model="form.doorMainFloorChannels" placeholder="请选择主楼入口摄像头" />
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personDk.forenoon" is-range
placeholder="请选择打卡时间(上午)" />
</el-form-item>
<el-form-item prop="personDk.afternoon">
<template #label>
<div class="flex items-center gap-1">
<span>打卡时间(下午)</span>
</div>
</template>
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personDk.afternoon" is-range
placeholder="请选择打卡时间(下午)" />
</el-form-item>
<el-form-item prop="personDk.cameraChannels">
<template #label>
<div class="flex items-center gap-1">
<span>摄像头</span>
</div>
</template>
<select-tree-channel v-model="form.personDk.cameraChannels" placeholder="请选择摄像头" />
</el-form-item>
<el-form-item prop="personDk.deptCodes">
<template #label>
<div class="flex items-center gap-1">
<span>部门</span>
</div>
</template>
<select-tree-dept v-model="form.personDk.deptCodes" placeholder="请选择部门" />
</el-form-item>
<!-- **************************** end 打卡 end **************************** -->
<!-- **************************** start 考勤 start **************************** -->
<el-divider class="my-12">考勤配置</el-divider>
<el-form-item prop="doorCheckingChannels">
<el-form-item prop="personKq.forenoon">
<template #label>
<div class="flex items-center gap-1">
<span>考勤摄像头</span>
<span>考勤时间(上午)</span>
</div>
</template>
<select-tree-channel v-model="form.doorCheckingChannels" placeholder="请选择考勤摄像头" />
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personKq.forenoon" is-range
placeholder="请选择考勤时间(上午)" />
</el-form-item>
<el-form-item prop="doorCheckingDepts">
<el-form-item prop="personKq.afternoon">
<template #label>
<div class="flex items-center gap-1">
<span>考勤部门</span>
<span>考勤时间(下午)</span>
</div>
</template>
<select-tree-dept v-model="form.doorCheckingDepts" placeholder="请选择考勤部门" />
<el-time-picker format="HH:mm" value-format="HH:mm" v-model="form.personKq.afternoon" is-range
placeholder="请选择考勤时间(下午)" />
</el-form-item>
<el-form-item prop="personKq.cameraChannels">
<template #label>
<div class="flex items-center gap-1">
<span>摄像头</span>
</div>
</template>
<select-tree-channel v-model="form.personKq.cameraChannels" placeholder="请选择摄像头" />
</el-form-item>
<el-form-item prop="personKq.deptCodes">
<template #label>
<div class="flex items-center gap-1">
<span>部门</span>
</div>
</template>
<select-tree-dept v-model="form.personKq.deptCodes" placeholder="请选择部门" />
</el-form-item>
<!-- **************************** end 考勤 end **************************** -->
</el-form>
</template>
@@ -87,27 +135,43 @@ const state = reactive<any>({
// 提交表单数据
const form = reactive<any>({
// 道闸报警频次
doorRepeatCount: 0,
// 工作时间上午
doorPersonWorkForenoonTime: null,
// 工作时间下午
doorPersonWorkAfternoonTime: null,
// 夜晚报警时间
doorNightAlarmTime: [],
// 通道编号
doorMainFloorChannels: [],
// 考勤摄像头通道
doorCheckingChannels: [],
// 考勤部门
doorCheckingDepts: [],
// 人员晚上出入营区
personNightCamp: {
alarmTime: [],
cameraChannels: [],
},
// 人员晚上出入办公楼
personNightOffice: {
alarmTime: [],
cameraChannels: [],
},
// 人员打卡配置
personDk: {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
},
// 人员考勤配置
personKq: {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
},
})
const dataRules = ref({
doorRepeatCount: [{ required: true, message: '道闸报警频次不能为空', trigger: 'blur' }],
doorPersonWorkForenoonTime: [{ required: true, message: '人员工作时间(上午)不能为空', trigger: 'change' }],
doorPersonWorkAfternoonTime: [{ required: true, message: '人员工作时间(下午)不能为空', trigger: 'change' }],
doorNightAlarmTime: [{ required: true, message: '夜晚报警时间不能为空', trigger: 'change' }],
// 人员晚上出入营区
"personNightCamp.alarmTime": [{ required: true, message: '夜晚出入时间不能为空', trigger: 'blur' }],
// 人员晚上出入办公楼
"personNightOffice.alarmTime": [{ required: true, message: '夜晚出入时间不能为空', trigger: 'blur' }],
// 人员打卡配置
"personDk.forenoon": [{ required: true, message: '打卡时间(上午)不能为空', trigger: 'blur' }],
"personDk.afternoon": [{ required: true, message: '打卡时间(下午)不能为空', trigger: 'blur' }],
// 人员考勤配置
"personKq.forenoon": [{ required: true, message: '考勤时间(上午)不能为空', trigger: 'blur' }],
"personKq.afternoon": [{ required: true, message: '考勤时间(下午)不能为空', trigger: 'blur' }],
})
onMounted(() => {
@@ -118,25 +182,35 @@ async function getSetting() {
state.loading = true
try {
const { data } = await ComDhSettingApi.getObj()
if (!data.personNightCamp) {
data.personNightCamp = {
alarmTime: [],
cameraChannels: [],
}
}
if (!data.personNightOffice) {
data.personNightOffice = {
alarmTime: [],
cameraChannels: [],
}
}
if (!data.personDk) {
data.personDk = {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
}
}
if (!data.personKq) {
data.personKq = {
forenoon: [],
afternoon: [],
cameraChannels: [],
deptCodes: [],
}
}
if (data) {
if (data.doorPersonWorkForenoonTime) {
data.doorPersonWorkForenoonTime = data.doorPersonWorkForenoonTime.split(',')
}
if (data.doorPersonWorkAfternoonTime) {
data.doorPersonWorkAfternoonTime = data.doorPersonWorkAfternoonTime.split(',')
}
if (data.doorMainFloorChannels) {
data.doorMainFloorChannels = data.doorMainFloorChannels.split(',')
}
if (data.doorCheckingChannels) {
data.doorCheckingChannels = data.doorCheckingChannels.split(',')
}
if (data.doorNightAlarmTime) {
data.doorNightAlarmTime = data.doorNightAlarmTime.split(',')
}
if (data.doorCheckingDepts) {
data.doorCheckingDepts = data.doorCheckingDepts.split(',')
}
Object.assign(form, data)
}
} catch (err: any) {
@@ -154,24 +228,6 @@ async function onSubmit() {
const _form = {
...form,
}
if (_form.doorPersonWorkForenoonTime && Array.isArray(_form.doorPersonWorkForenoonTime)) {
_form.doorPersonWorkForenoonTime = _form.doorPersonWorkForenoonTime.join(',')
}
if (_form.doorPersonWorkAfternoonTime && Array.isArray(_form.doorPersonWorkAfternoonTime)) {
_form.doorPersonWorkAfternoonTime = _form.doorPersonWorkAfternoonTime.join(',')
}
if (_form.doorMainFloorChannels && Array.isArray(_form.doorMainFloorChannels)) {
_form.doorMainFloorChannels = _form.doorMainFloorChannels.join(',')
}
if (_form.doorCheckingChannels && Array.isArray(_form.doorCheckingChannels)) {
_form.doorCheckingChannels = _form.doorCheckingChannels.join(',')
}
if (_form.doorNightAlarmTime && Array.isArray(_form.doorNightAlarmTime)) {
_form.doorNightAlarmTime = _form.doorNightAlarmTime.join(',')
}
if (_form.doorCheckingDepts && Array.isArray(_form.doorCheckingDepts)) {
_form.doorCheckingDepts = _form.doorCheckingDepts.join(',')
}
await ComDhSettingApi.putObj(_form)
useMessage().success('修改成功');
} catch (err: any) {