|
@@ -4,16 +4,23 @@
|
|
|
<div class="alarm-config-rollback" @click="router.back()">
|
|
<div class="alarm-config-rollback" @click="router.back()">
|
|
|
<img src="../reportmessage/img/rollback.png" /><span>返回</span>
|
|
<img src="../reportmessage/img/rollback.png" /><span>返回</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <span>报警配置</span>
|
|
|
|
|
|
|
+ <span>{{ formType }}报警配置</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="alarm-config-content">
|
|
<div class="alarm-config-content">
|
|
|
<div class="alarm-config-form">
|
|
<div class="alarm-config-form">
|
|
|
- <el-form ref="formRef" :model="alarmConfigForm" :rules="rules" label-width="auto">
|
|
|
|
|
|
|
+ <el-form
|
|
|
|
|
+ ref="formRef"
|
|
|
|
|
+ :model="alarmConfigForm"
|
|
|
|
|
+ :rules="rules"
|
|
|
|
|
+ label-width="auto"
|
|
|
|
|
+ :disabled="disableAll"
|
|
|
|
|
+ >
|
|
|
<el-form-item label="违规类型:" prop="violationType">
|
|
<el-form-item label="违规类型:" prop="violationType">
|
|
|
<el-select
|
|
<el-select
|
|
|
class="alarm-config-input"
|
|
class="alarm-config-input"
|
|
|
v-model="alarmConfigForm.violationType"
|
|
v-model="alarmConfigForm.violationType"
|
|
|
placeholder="请选择违规类型"
|
|
placeholder="请选择违规类型"
|
|
|
|
|
+ :disabled="disableType"
|
|
|
>
|
|
>
|
|
|
<el-option
|
|
<el-option
|
|
|
v-for="item in AlarmTypes"
|
|
v-for="item in AlarmTypes"
|
|
@@ -52,22 +59,44 @@
|
|
|
v-model="alarmConfigForm.pushOccasions"
|
|
v-model="alarmConfigForm.pushOccasions"
|
|
|
>
|
|
>
|
|
|
<div v-for="phase in Object.keys(ALARMPHASE_MAP)">
|
|
<div v-for="phase in Object.keys(ALARMPHASE_MAP)">
|
|
|
- <el-checkbox :key="phase" :label="ALARMPHASE_MAP[phase]" :value="+phase">
|
|
|
|
|
- </el-checkbox>
|
|
|
|
|
- <div v-if="alarmConfigForm.pushPhaseVOList.some((it) => it.pushPhase === +phase)">
|
|
|
|
|
- <div class="push-occasions-card">
|
|
|
|
|
- <PushObject />
|
|
|
|
|
- <div>{{
|
|
|
|
|
- '【' +
|
|
|
|
|
- (AlarmTypes.find((it) => it.id === alarmConfigForm.violationType)?.name! ||
|
|
|
|
|
- '') +
|
|
|
|
|
- '】'
|
|
|
|
|
- }}</div>
|
|
|
|
|
|
|
+ <div v-if="!(phase === '2' && isDevMode)">
|
|
|
|
|
+ <el-checkbox :key="phase" :label="ALARMPHASE_MAP[phase]" :value="+phase">
|
|
|
|
|
+ </el-checkbox>
|
|
|
|
|
+ <div v-if="alarmConfigForm.pushPhaseVOList.some((it) => it.pushPhase === +phase)">
|
|
|
|
|
+ <div class="push-occasions-card">
|
|
|
|
|
+ <div style="height: 136px">
|
|
|
|
|
+ <PushObject
|
|
|
|
|
+ ref="pushObjectRef"
|
|
|
|
|
+ :recipientType="
|
|
|
|
|
+ alarmConfigForm.pushPhaseVOList.find((it) => it.pushPhase === +phase)
|
|
|
|
|
+ ?.recipientType
|
|
|
|
|
+ "
|
|
|
|
|
+ :userGroupList="(alarmConfigForm.pushPhaseVOList.find((it) => it.pushPhase === +phase)!.userGroupVOList as userGroupVOList[])"
|
|
|
|
|
+ :customUserList="(alarmConfigForm.pushPhaseVOList.find((it) => it.pushPhase === +phase)!.customUserList as customUserList[])"
|
|
|
|
|
+ :disabled="disableAll"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <el-form-item label="自定义内容:">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="
|
|
|
|
|
+ alarmConfigForm.pushPhaseVOList.find((it) => it.pushPhase === +phase)!
|
|
|
|
|
+ .content
|
|
|
|
|
+ "
|
|
|
|
|
+ maxlength="200"
|
|
|
|
|
+ resize="none"
|
|
|
|
|
+ style="width: 357px"
|
|
|
|
|
+ :autosize="{ minRows: 5, maxRows: 5 }"
|
|
|
|
|
+ :placeholder="
|
|
|
|
|
+ '您好,智能检测到该车间发生【' +
|
|
|
|
|
+ AlarmTypes.find((it) => it.id === alarmConfigForm.violationType)?.name +
|
|
|
|
|
+ '】违规问题,请及时关注并前往处理!'
|
|
|
|
|
+ "
|
|
|
|
|
+ show-word-limit
|
|
|
|
|
+ type="textarea"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
- <!-- <PushOccasionsCard
|
|
|
|
|
- :form="alarmConfigForm.pushPhaseVOList.find((it) => it.pushPhase === occasion.id)!"
|
|
|
|
|
- :type="AlarmTypes.find((it) => it.id === alarmConfigForm.violationType)?.label!"
|
|
|
|
|
- /> -->
|
|
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
@@ -77,8 +106,10 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<div style="text-align: right; margin-right: 32px">
|
|
<div style="text-align: right; margin-right: 32px">
|
|
|
- <el-button @click="router.back()"> 取 消 </el-button>
|
|
|
|
|
- <el-button type="primary" @click="submitForm(formRef)"> 确 定 </el-button>
|
|
|
|
|
|
|
+ <el-button :disabled="disableAll" @click="router.back()"> 取 消 </el-button>
|
|
|
|
|
+ <el-button :disabled="disableAll" type="primary" @click="submitForm(formRef)">
|
|
|
|
|
+ 确 定
|
|
|
|
|
+ </el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="alarm-config-example">
|
|
<div class="alarm-config-example">
|
|
@@ -97,15 +128,17 @@
|
|
|
ElSelect,
|
|
ElSelect,
|
|
|
ElCheckboxGroup,
|
|
ElCheckboxGroup,
|
|
|
ElCheckbox,
|
|
ElCheckbox,
|
|
|
|
|
+ ElInput,
|
|
|
FormInstance,
|
|
FormInstance,
|
|
|
FormRules,
|
|
FormRules,
|
|
|
} from 'element-plus';
|
|
} from 'element-plus';
|
|
|
- import { ref, watch } from 'vue';
|
|
|
|
|
|
|
+ import { ref, watch, onMounted } from 'vue';
|
|
|
import { useUserStore } from '@/store/modules/user';
|
|
import { useUserStore } from '@/store/modules/user';
|
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
import { useRouter, useRoute } from 'vue-router';
|
|
|
import {
|
|
import {
|
|
|
getAlarmConfigDetail,
|
|
getAlarmConfigDetail,
|
|
|
getExistingAlarmType,
|
|
getExistingAlarmType,
|
|
|
|
|
+ getDevMode,
|
|
|
// addAlarmConfig,
|
|
// addAlarmConfig,
|
|
|
// editAlarmConfig,
|
|
// editAlarmConfig,
|
|
|
type AlarmConfigForm,
|
|
type AlarmConfigForm,
|
|
@@ -122,6 +155,7 @@
|
|
|
// AlarmPhase,
|
|
// AlarmPhase,
|
|
|
ALARMPHASE_MAP,
|
|
ALARMPHASE_MAP,
|
|
|
} from './types';
|
|
} from './types';
|
|
|
|
|
+ import { type userGroupVOList, type customUserList } from '../components/PushObject.vue';
|
|
|
|
|
|
|
|
const useUser = useUserStore();
|
|
const useUser = useUserStore();
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
@@ -138,28 +172,52 @@
|
|
|
creator: useUser.info.nickname,
|
|
creator: useUser.info.nickname,
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- // 判断是否为编辑和查看
|
|
|
|
|
- if (route.query.alarmConfigId) {
|
|
|
|
|
- // TODO 获取报警配置详情
|
|
|
|
|
- getAlarmConfigDetail(route.query.alarmConfigId).then((res) => {
|
|
|
|
|
|
|
+ // 获取报警配置详情
|
|
|
|
|
+ const getAlarmDetail = (configId) => {
|
|
|
|
|
+ getAlarmConfigDetail(configId).then((res) => {
|
|
|
alarmConfigForm.value.violationType = res.violationType;
|
|
alarmConfigForm.value.violationType = res.violationType;
|
|
|
alarmConfigForm.value.violationLevel = res.violationLevel;
|
|
alarmConfigForm.value.violationLevel = res.violationLevel;
|
|
|
alarmConfigForm.value.pushChannel = JSON.parse(res.pushChannel as string);
|
|
alarmConfigForm.value.pushChannel = JSON.parse(res.pushChannel as string);
|
|
|
alarmConfigForm.value.pushPhaseVOList = res.pushPhaseVOList;
|
|
alarmConfigForm.value.pushPhaseVOList = res.pushPhaseVOList;
|
|
|
alarmConfigForm.value.pushOccasions = res.pushPhaseVOList.map((it) => it.pushPhase);
|
|
alarmConfigForm.value.pushOccasions = res.pushPhaseVOList.map((it) => it.pushPhase);
|
|
|
|
|
|
|
|
|
|
+ // 获取的配置填入违规类型
|
|
|
AlarmTypes.value.push({
|
|
AlarmTypes.value.push({
|
|
|
id: res.violationType,
|
|
id: res.violationType,
|
|
|
name: res.violationName,
|
|
name: res.violationName,
|
|
|
} as AvailableAlarmType);
|
|
} as AvailableAlarmType);
|
|
|
});
|
|
});
|
|
|
- } else {
|
|
|
|
|
- getExistingAlarmType().then((res) => {
|
|
|
|
|
- AlarmTypes.value = res;
|
|
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ const pushObjectRef = ref();
|
|
|
|
|
+ const formType = ref('');
|
|
|
|
|
+ const disableType = ref(false);
|
|
|
|
|
+ const disableAll = ref(false);
|
|
|
|
|
+ const isDevMode = ref(false);
|
|
|
|
|
+
|
|
|
|
|
+ onMounted(() => {
|
|
|
|
|
+ getDevMode().then((res) => {
|
|
|
|
|
+ isDevMode.value = res;
|
|
|
});
|
|
});
|
|
|
- }
|
|
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
- if (route.query.alarmMessageId) {
|
|
|
|
|
|
|
+ switch (route.query.operationType) {
|
|
|
|
|
+ case '1':
|
|
|
|
|
+ formType.value = '新建';
|
|
|
|
|
+ getExistingAlarmType().then((res) => {
|
|
|
|
|
+ AlarmTypes.value = res;
|
|
|
|
|
+ });
|
|
|
|
|
+ break;
|
|
|
|
|
+ case '2':
|
|
|
|
|
+ formType.value = '编辑';
|
|
|
|
|
+ disableType.value = true;
|
|
|
|
|
+ getAlarmDetail(route.query.alarmConfigId);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case '3':
|
|
|
|
|
+ formType.value = '查看';
|
|
|
|
|
+ disableAll.value = true;
|
|
|
|
|
+ getAlarmDetail(route.query.alarmConfigId);
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
watch(
|
|
watch(
|
|
@@ -189,18 +247,30 @@
|
|
|
const formRef = ref<FormInstance>();
|
|
const formRef = ref<FormInstance>();
|
|
|
|
|
|
|
|
const rules = ref<FormRules<AlarmConfigForm>>({
|
|
const rules = ref<FormRules<AlarmConfigForm>>({
|
|
|
- violationType: [{ required: true, message: '请选择违规类型', trigger: 'change' }],
|
|
|
|
|
- violationLevel: [{ required: true, message: '请选择违规等级', trigger: 'change' }],
|
|
|
|
|
|
|
+ violationType: [{ required: true, message: '请选择违规类型', trigger: 'blur' }],
|
|
|
|
|
+ violationLevel: [{ required: true, message: '请选择违规等级', trigger: 'blur' }],
|
|
|
pushChannel: [{ required: true, message: '请选择推送渠道', trigger: 'change' }],
|
|
pushChannel: [{ required: true, message: '请选择推送渠道', trigger: 'change' }],
|
|
|
pushOccasions: [{ required: true, message: '请选择推送阶段', trigger: 'change' }],
|
|
pushOccasions: [{ required: true, message: '请选择推送阶段', trigger: 'change' }],
|
|
|
pushPhaseVOList: [{ required: true, message: '请选择推送人员', trigger: 'change' }],
|
|
pushPhaseVOList: [{ required: true, message: '请选择推送人员', trigger: 'change' }],
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ // 提交表单
|
|
|
const submitForm = async (formEl: FormInstance | undefined) => {
|
|
const submitForm = async (formEl: FormInstance | undefined) => {
|
|
|
if (!formEl) return;
|
|
if (!formEl) return;
|
|
|
await formEl.validate((valid, fields) => {
|
|
await formEl.validate((valid, fields) => {
|
|
|
if (valid) {
|
|
if (valid) {
|
|
|
- console.log('submit!');
|
|
|
|
|
|
|
+ let validArr: boolean[] = [];
|
|
|
|
|
+ for (let i = 0; i < alarmConfigForm.value.pushPhaseVOList?.length; i++) {
|
|
|
|
|
+ pushObjectRef.value[i].submitForm().then((valid) => {
|
|
|
|
|
+ validArr.push(valid);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ if (validArr.some((it) => it === false)) {
|
|
|
|
|
+ console.log('error submit!');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // TODO 提交表单
|
|
|
|
|
+ console.log('submit');
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
console.log('error submit!', fields);
|
|
console.log('error submit!', fields);
|
|
|
}
|
|
}
|
|
@@ -245,8 +315,9 @@
|
|
|
overflow: auto;
|
|
overflow: auto;
|
|
|
|
|
|
|
|
.push-occasions-card {
|
|
.push-occasions-card {
|
|
|
- width: 541px;
|
|
|
|
|
- height: 248px;
|
|
|
|
|
|
|
+ padding: 10px 20px;
|
|
|
|
|
+ width: 572px;
|
|
|
|
|
+ height: 283px;
|
|
|
background-color: #fafafa;
|
|
background-color: #fafafa;
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
}
|
|
}
|