Commit 67e1cea4bcdc68edf32c0e0967dba1b55385f9c7

Authored by xp.Huang
2 parents df4a6fbf 2406ce67

Merge branch 'ft-dev' into 'main'

feat:新增场景联动新增按钮,删除按钮和编辑按钮权限,fix:修复设备配置编辑第三步数据回显和无法删除报警规则,修改设备配置文件夹名字

See merge request huang/yun-teng-iot-front!142
Showing 29 changed files with 521 additions and 1054 deletions
  1 +//生成uuid
  2 +export function generateUUID() {
  3 + let d = new Date().getTime();
  4 + if (window.performance && typeof window.performance.now === 'function') {
  5 + d += performance.now();
  6 + }
  7 + const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
  8 + const r = (d + Math.random() * 16) % 16 | 0;
  9 + d = Math.floor(d / 16);
  10 + return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
  11 + });
  12 + return uuid;
  13 +}
... ...
1   -import { FormSchema } from '/@/components/Form';
2   -import { findDictItemByCode } from '/@/api/system/dict';
3   -import { alarmContactGetPage } from '/@/api/device/deviceConfigApi';
4   -
5   -export const alertContactsSchemas: FormSchema[] = [
6   - {
7   - field: 'alarmContactId',
8   - label: '告警通知联系人',
9   - component: 'ApiSelect',
10   - required: true,
11   - componentProps: {
12   - mode: 'multiple',
13   - api: alarmContactGetPage,
14   - labelField: 'username',
15   - valueField: 'id',
16   - resultField: 'items',
17   - },
18   - },
19   - {
20   - field: 'messageMode',
21   - label: '告警通知方式',
22   - required: true,
23   - component: 'ApiSelect',
24   - componentProps: {
25   - mode: 'multiple',
26   - api: findDictItemByCode,
27   - params: {
28   - dictCode: 'message_type',
29   - },
30   - labelField: 'itemText',
31   - valueField: 'itemValue',
32   - },
33   - },
34   -];
1   -<template>
2   - <BasicForm :showResetButton="false" :showSubmitButton="false" @register="register" />
3   -</template>
4   -<script lang="ts">
5   - import { defineComponent, ref } from 'vue';
6   - import { BasicForm, useForm } from '/@/components/Form/index';
7   - import { alertContactsSchemas } from './config';
8   -
9   - export default defineComponent({
10   - components: { BasicForm },
11   - setup() {
12   - const getValueData: any = ref({});
13   - const [register, { getFieldsValue, resetFields }] = useForm({
14   - schemas: alertContactsSchemas,
15   - actionColOptions: {
16   - span: 24,
17   - },
18   - });
19   - function getAllFields(getV) {
20   - const values = getFieldsValue();
21   - getValueData.value = values;
22   - getV = getValueData.value;
23   - return getV;
24   - }
25   - const customResetStep4AndFunc = () => {
26   - resetFields();
27   - };
28   - return {
29   - customResetStep4AndFunc,
30   - getAllFields,
31   - register,
32   - };
33   - },
34   - });
35   -</script>
1   -<template>
2   - <div>
3   - <BasicModal
4   - :showCancelBtn="false"
5   - :showOkBtn="false"
6   - v-bind="$attrs"
7   - width="55rem"
8   - @register="register"
9   - :title="getTitle"
10   - >
11   - <Tabs @change="handleChange" v-model:activeKey="activeKey">
12   - <TabPane key="1" tab="详情">
13   - <BasicForm
14   - :showSubmitButton="false"
15   - :showResetButton="false"
16   - @register="registerDetail"
17   - />
18   - </TabPane>
19   - <TabPane key="2" tab="传输配置" force-render>
20   - <BasicForm :showSubmitButton="false" :showResetButton="false" @register="registerTrans"
21   - /></TabPane>
22   - <TabPane key="3" tab="报警规则">
23   - <div style="padding-top: 10px">
24   - <div style="border-radius: 10px">
25   - <p style="font-weight: 900">报警规则</p>
26   - <div class="input-style" style="margin-left: 15px">
27   - <BasicForm
28   - :showSubmitButton="false"
29   - :showResetButton="false"
30   - @register="registerStep3Schemas"
31   - />
32   - <BasicForm
33   - :showSubmitButton="false"
34   - :showResetButton="false"
35   - @register="registerStep3HighSetting"
36   - />
37   - <BasicForm
38   - :showSubmitButton="false"
39   - :showResetButton="false"
40   - @register="registerStep3CreateAlarm"
41   - />
42   - <BasicForm
43   - :showSubmitButton="false"
44   - :showResetButton="false"
45   - @register="registerStep3RuleAlarm"
46   - />
47   - <BasicForm
48   - :showSubmitButton="false"
49   - :showResetButton="false"
50   - @register="registerStep3Condition"
51   - />
52   - <BasicForm
53   - :showSubmitButton="false"
54   - :showResetButton="false"
55   - @register="registerStep3Enable"
56   - />
57   - <BasicForm
58   - :showSubmitButton="false"
59   - :showResetButton="false"
60   - @register="registerStep3TemplateDetail"
61   - />
62   - </div>
63   - </div>
64   - <div style="border-radius: 10px; margin-top: 15px">
65   - <p style="font-weight: 900">清除报警规则</p>
66   - <div class="clear-input-style" style="margin-left: 15px">
67   - <BasicForm
68   - :showSubmitButton="false"
69   - :showResetButton="false"
70   - @register="registerStep3ClearRuleAlarm"
71   - />
72   - <BasicForm
73   - :showSubmitButton="false"
74   - :showResetButton="false"
75   - @register="registerStep3ClearCondition"
76   - />
77   - <BasicForm
78   - :showSubmitButton="false"
79   - :showResetButton="false"
80   - @register="registerStep3ClearEnable"
81   - />
82   - <BasicForm
83   - :showSubmitButton="false"
84   - :showResetButton="false"
85   - @register="registerStep3ClearTemplateDetail"
86   - />
87   - </div>
88   - </div>
89   - </div>
90   - </TabPane>
91   - <TabPane key="4" tab="告警管理">
92   - <BasicForm :showSubmitButton="false" :showResetButton="false" @register="registerContact"
93   - /></TabPane>
94   - </Tabs>
95   - </BasicModal>
96   - </div>
97   -</template>
98   -<script lang="ts">
99   - import { defineComponent, ref, computed, watch } from 'vue';
100   - import { BasicModal, useModalInner } from '/@/components/Modal';
101   - import { Tabs } from 'ant-design-vue';
102   - import { deviceConfigGetDetail } from '/@/api/device/deviceConfigApi';
103   - import { BasicForm, useForm } from '/@/components/Form/index';
104   - import {
105   - step1Schemas,
106   - step2Schemas,
107   - step3Schemas,
108   - step3ViewHighSetting,
109   - step3CreateAlarm,
110   - alertContactsSchemas,
111   - } from './step/data';
112   -
113   - import { formSchema as conditionFormSchema } from './step/cpns/alarmruleconditions/config';
114   - import { formSchema as enableSchema } from './step/cpns/enablerule/config';
115   - import { formSchema as detailSchema } from './step/cpns/detailtemplate/config';
116   - import { formSchema as echoFormSchema } from './step/cpns/alarmruleconditions/cpns/config';
117   - import { formSchema as conditionFormClearschema } from './step/cpns/alarmruleconditions/config';
118   - import { formSchema as enableClearSchema } from './step/cpns/enablerule/config';
119   - import { formSchema as detailClearSchema } from './step/cpns/detailtemplate/config';
120   - import { formSchema as echoFormClearSchema } from './step/cpns/alarmruleconditions/cpns/config';
121   -
122   - export default defineComponent({
123   - name: 'ConfigDrawer',
124   - components: { Tabs, TabPane: Tabs.TabPane, BasicModal, BasicForm },
125   - emits: ['success', 'register'],
126   - setup() {
127   - const activeKey = ref('1');
128   - const isUpdate = ref(true);
129   - const descInfo: any = ref(null);
130   - const dataInfo: any = ref('');
131   - const [registerDetail, { resetFields, setFieldsValue: setRegisterDetail }] = useForm({
132   - schemas: step1Schemas,
133   - actionColOptions: {
134   - span: 24,
135   - },
136   - });
137   - const [registerTrans, { setFieldsValue: setRegisterTrans }] = useForm({
138   - schemas: step2Schemas,
139   - actionColOptions: {
140   - span: 24,
141   - },
142   - });
143   - const [
144   - registerStep3Schemas,
145   - { setFieldsValue: setRegisterStep3Schemas, resetFields: resetFieldsStep3Schemas },
146   - ] = useForm({
147   - schemas: step3Schemas,
148   - actionColOptions: {
149   - span: 24,
150   - },
151   - });
152   - const [
153   - registerStep3HighSetting,
154   - { setFieldsValue: setRegisterStep3HighSetting, resetFields: resetFieldsStep3HighSetting },
155   - ] = useForm({
156   - schemas: step3ViewHighSetting,
157   - actionColOptions: {
158   - span: 24,
159   - },
160   - });
161   - const [
162   - registerStep3CreateAlarm,
163   - { setFieldsValue: setRegisterStep3CreateAlarm, resetFields: resetFieldsStep3CreateAlarm },
164   - ] = useForm({
165   - schemas: step3CreateAlarm,
166   - actionColOptions: {
167   - span: 24,
168   - },
169   - });
170   - const [
171   - registerContact,
172   - { setFieldsValue: setRegisterContact, resetFields: resetFieldsContact },
173   - ] = useForm({
174   - schemas: alertContactsSchemas,
175   - actionColOptions: {
176   - span: 24,
177   - },
178   - });
179   - const [
180   - registerStep3RuleAlarm,
181   - { setFieldsValue: setRegisterStep3RuleAlarm, resetFields: resetFieldsStep3RuleAlarm },
182   - ] = useForm({
183   - schemas: echoFormSchema,
184   - actionColOptions: {
185   - span: 24,
186   - },
187   - });
188   - const [
189   - registerStep3Condition,
190   - { setFieldsValue: setRegisterStep3Condition, resetFields: resetFieldsrStep3Condition },
191   - ] = useForm({
192   - schemas: conditionFormSchema,
193   - actionColOptions: {
194   - span: 24,
195   - },
196   - });
197   - const [
198   - registerStep3Enable,
199   - { setFieldsValue: setRegisterStep3Enable, resetFields: resetFieldsStep3Enable },
200   - ] = useForm({
201   - schemas: enableSchema,
202   - actionColOptions: {
203   - span: 24,
204   - },
205   - });
206   - const [
207   - registerStep3TemplateDetail,
208   - {
209   - setFieldsValue: setRegisterStep3TemplateDetail,
210   - resetFields: resetFieldsStep3TemplateDetail,
211   - },
212   - ] = useForm({
213   - schemas: detailSchema,
214   - actionColOptions: {
215   - span: 24,
216   - },
217   - });
218   -
219   - //清除报警
220   - const [
221   - registerStep3ClearRuleAlarm,
222   - {
223   - setFieldsValue: setRegisterStep3ClearRuleAlarm,
224   - resetFields: resetFieldsStep3ClearRuleAlarm,
225   - },
226   - ] = useForm({
227   - schemas: echoFormClearSchema,
228   - actionColOptions: {
229   - span: 24,
230   - },
231   - });
232   - const [
233   - registerStep3ClearCondition,
234   - {
235   - setFieldsValue: setRegisterStep3ClearCondition,
236   - resetFields: resetFieldsStep3ClearCondition,
237   - },
238   - ] = useForm({
239   - schemas: conditionFormClearschema,
240   - actionColOptions: {
241   - span: 24,
242   - },
243   - });
244   - const [
245   - registerStep3ClearEnable,
246   - { setFieldsValue: setRegisterStep3ClearEnable, resetFields: resetFieldStep3ClearEnablel },
247   - ] = useForm({
248   - schemas: enableClearSchema,
249   - actionColOptions: {
250   - span: 24,
251   - },
252   - });
253   - const [
254   - registerStep3ClearTemplateDetail,
255   - {
256   - setFieldsValue: setRegisterStep3ClearTemplateDetail,
257   - resetFields: resetFieldStep3ClearTemplateDetail,
258   - },
259   - ] = useForm({
260   - schemas: detailClearSchema,
261   - actionColOptions: {
262   - span: 24,
263   - },
264   - });
265   -
266   - const [register] = useModalInner(async (data) => {
267   - activeKey.value = '1';
268   - isUpdate.value = !!data?.isUpdate;
269   - const getV = await deviceConfigGetDetail(data.record.id);
270   - descInfo.value = getV;
271   - try {
272   - resetFields();
273   - await setRegisterDetail({ ...descInfo.value });
274   - } catch (e) {
275   - return e;
276   - }
277   - });
278   - const handleChange = (v) => {
279   - try {
280   - switch (v) {
281   - // case '1':
282   - // setRegisterDetail({ ...descInfo.value });
283   - // break;
284   - case '2':
285   - setRegisterTrans({
286   - transportType: descInfo.value.profileData?.transportConfiguration.type,
287   - });
288   - break;
289   - case '3':
290   - setTimeout(() => {
291   - resetFieldsStep3SchemasFunc();
292   - resetFieldsStep3HighSettingFunc();
293   - resetFieldsStep3CreateAlarmFunc();
294   - resetFieldsStep3RuleAlarmFunc();
295   - resetFieldsStep3RuleAlarmFunc1();
296   - resetFieldsrStep3ConditionFunc();
297   - resetFieldsStep3EnableFunc();
298   - resetFieldsStep3TemplateDetailFunc();
299   - resetFieldsStep3ClearRuleAlarmFunc();
300   - resetFieldsStep3ClearRuleAlarmlFunc();
301   - resetFieldsStep3ClearConditionFunc();
302   - resetFieldStep3ClearEnablelFunc();
303   - resetFieldStep3ClearTemplateDetailFunc();
304   - }, 100);
305   - setTimeout(() => {
306   - try {
307   - setRegisterStep3Schemas({
308   - alarmType: descInfo.value.profileData?.alarms[0]?.alarmType,
309   - });
310   - } catch (e) {
311   - return e;
312   - }
313   -
314   - try {
315   - setRegisterStep3HighSetting({
316   - propagate: descInfo.value.profileData?.alarms[0]?.propagate,
317   - propagateRelationTypes:
318   - descInfo.value.profileData?.alarms[0]?.propagateRelationTypes[0],
319   - });
320   - const getKey = Object.keys(descInfo.value.profileData?.alarms[0]?.createRules);
321   - setRegisterStep3CreateAlarm({
322   - default: getKey[0],
323   - });
324   - setRegisterStep3RuleAlarm({
325   - type: descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition
326   - .condition[0].key.type,
327   - key1: descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition
328   - .condition[0].key.key,
329   - type1:
330   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition
331   - .condition[0].valueType,
332   - value1:
333   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition
334   - .condition[0].predicate.value.defaultValue,
335   - operation:
336   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition
337   - .condition[0].predicate.operation,
338   - });
339   - setRegisterStep3Condition({
340   - conditionType:
341   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].condition.spec
342   - .type,
343   - });
344   - setRegisterStep3Enable({
345   - schedule:
346   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].schedule.type,
347   - });
348   - setRegisterStep3TemplateDetail({
349   - alarmDetails:
350   - descInfo.value.profileData?.alarms[0].createRules[getKey[0]].alarmDetails,
351   - });
352   - //清除报警
353   - setRegisterStep3ClearRuleAlarm({
354   - type: descInfo.value.profileData?.alarms[0].clearRule.condition.condition[0].key
355   - .type,
356   - key1: descInfo.value.profileData?.alarms[0].clearRule.condition.condition[0].key
357   - .key,
358   - type1:
359   - descInfo.value.profileData?.alarms[0].clearRule.condition.condition[0]
360   - .valueType,
361   - value1:
362   - descInfo.value.profileData?.alarms[0].clearRule.condition.condition[0]
363   - .predicate.value.defaultValue,
364   - operation:
365   - descInfo.value.profileData?.alarms[0].clearRule.condition.condition[0]
366   - .predicate.operation,
367   - });
368   - setRegisterStep3ClearCondition({
369   - conditionType:
370   - descInfo.value.profileData?.alarms[0].clearRule.condition.spec.type,
371   - });
372   - setRegisterStep3ClearEnable({
373   - schedule: descInfo.value.profileData?.alarms[0].clearRule.schedule.type,
374   - });
375   - setRegisterStep3ClearTemplateDetail({
376   - alarmDetails: descInfo.value.profileData?.alarms[0].clearRule.alarmDetails,
377   - });
378   - } catch (e) {
379   - return e;
380   - }
381   - }, 1000);
382   - break;
383   - case '4':
384   - setTimeout(() => {
385   - resetFieldsContactFunc();
386   - }, 100);
387   - setTimeout(() => {
388   - try {
389   - setRegisterContact({
390   - alarmContactId: descInfo.value.alarmProfile.alarmContactId,
391   - messageMode: descInfo.value.alarmProfile.messageMode,
392   - });
393   - } catch (e) {
394   - return e;
395   - }
396   - }, 500);
397   -
398   - break;
399   - }
400   - } catch (e) {
401   - return e;
402   - }
403   - };
404   -
405   - const resetFieldsContactFunc = () => {
406   - resetFieldsContact();
407   - };
408   - const resetFieldsStep3SchemasFunc = () => {
409   - resetFieldsStep3Schemas();
410   - };
411   -
412   - const resetFieldsStep3HighSettingFunc = () => {
413   - resetFieldsStep3HighSetting();
414   - };
415   - const resetFieldsStep3CreateAlarmFunc = () => {
416   - resetFieldsStep3CreateAlarm();
417   - };
418   - const resetFieldsStep3RuleAlarmFunc = () => {
419   - resetFieldsStep3RuleAlarm();
420   - };
421   -
422   - const resetFieldsrStep3ConditionFunc = () => {
423   - resetFieldsrStep3Condition();
424   - };
425   -
426   - const resetFieldsStep3RuleAlarmFunc1 = () => {
427   - resetFieldsStep3RuleAlarm();
428   - };
429   -
430   - const resetFieldsStep3EnableFunc = () => {
431   - resetFieldsStep3Enable();
432   - };
433   - const resetFieldsStep3TemplateDetailFunc = () => {
434   - resetFieldsStep3TemplateDetail();
435   - };
436   - //清除报警
437   - const resetFieldsStep3ClearRuleAlarmFunc = () => {
438   - resetFieldsStep3ClearRuleAlarm();
439   - };
440   - const resetFieldsStep3ClearRuleAlarmlFunc = () => {
441   - resetFieldsStep3ClearRuleAlarm();
442   - };
443   - const resetFieldsStep3ClearConditionFunc = () => {
444   - resetFieldsStep3ClearCondition();
445   - };
446   - const resetFieldStep3ClearEnablelFunc = () => {
447   - resetFieldStep3ClearEnablel();
448   - };
449   - const resetFieldStep3ClearTemplateDetailFunc = () => {
450   - resetFieldStep3ClearTemplateDetail();
451   - };
452   - watch(
453   - () => activeKey.value,
454   - (v) => {
455   - dataInfo.value = v;
456   - }
457   - );
458   - const getTitle = computed(() => {
459   - return '设备配置详情';
460   - });
461   -
462   - return {
463   - resetFieldsContactFunc,
464   - registerStep3ClearTemplateDetail,
465   - registerStep3ClearEnable,
466   - registerStep3ClearCondition,
467   - registerStep3ClearRuleAlarm,
468   - handleChange,
469   - registerStep3TemplateDetail,
470   - registerStep3Enable,
471   - registerStep3Condition,
472   - registerStep3RuleAlarm,
473   - registerContact,
474   - registerStep3HighSetting,
475   - registerStep3CreateAlarm,
476   - registerStep3Schemas,
477   - registerTrans,
478   - activeKey,
479   - registerDetail,
480   - register,
481   - getTitle,
482   - };
483   - },
484   - });
485   -</script>
486   -
487   -<style scoped lang="less">
488   - .input-style {
489   - :deep .ant-form-item-control-input {
490   - position: relative;
491   - display: flex;
492   - align-items: center;
493   - min-height: 02px;
494   - }
495   - :deep.ant-col-24 {
496   - display: block;
497   - flex: 0 0 100%;
498   - max-width: 100%;
499   - margin-top: -20px;
500   - }
501   - }
502   -
503   - .clear-input-style {
504   - :deep .ant-form-item-control-input {
505   - position: relative;
506   - display: flex;
507   - align-items: center;
508   - min-height: 02px;
509   - }
510   - :deep.ant-col-24 {
511   - display: block;
512   - flex: 0 0 100%;
513   - max-width: 100%;
514   - margin-top: -20px;
515   - }
516   - }
517   -</style>
src/views/device/profiles/DeviceProfileModal.vue renamed from src/views/device/profile/DeviceProfileModal.vue
... ... @@ -80,7 +80,7 @@
80 80 'handleStep2Next',
81 81 ],
82 82 setup(_, { emit }) {
83   - const { proxy } = getCurrentInstance();
  83 + const { proxy } = getCurrentInstance() as any;
84 84 const DeviceProfileStep1Ref = ref(null);
85 85 const DeviceProfileStep2Ref = ref(null);
86 86 const DeviceProfileStep3Ref = ref(null);
... ... @@ -90,9 +90,9 @@
90 90 const getStepOneData: any = ref({});
91 91 const getStepTwoData: any = ref({});
92 92 const getStepThreeData = ref([]);
93   - const editData = ref({});
  93 + const editData: any = ref({});
94 94 let getBackendData = reactive({});
95   - let getStepFourData = reactive({});
  95 + let getStepFourData: any = reactive({});
96 96 const alarmProfileData = reactive({
97 97 alarmProfile: {
98 98 alarmContactId: '',
... ... @@ -112,6 +112,7 @@
112 112 const isStatus: any = ref(null);
113 113 const isShowOkBtnFalse = ref(true);
114 114 const isShowRule = ref(true);
  115 + const isEditAndChange = ref(true);
115 116
116 117 const getTitle = computed(() =>
117 118 isUpdate.value == 1 ? '新增设备配置' : isUpdate.value == 2 ? '编辑设备配置' : '设备配置详情'
... ... @@ -135,6 +136,12 @@
135 136 stepThreeData: {},
136 137 });
137 138 } else if (isUpdate.value == 2) {
  139 + isGetStepThreeData.profileData.alarms.length = 0;
  140 + try {
  141 + proxy.$refs.DeviceProfileStep3Ref.clearEditAllRegisterFormFunc();
  142 + } catch (e) {
  143 + return e;
  144 + }
138 145 postEditId.value = data.record.id;
139 146 getBackendData = await deviceConfigGetDetail(postEditId.value);
140 147 editData.value = getBackendData;
... ... @@ -253,7 +260,9 @@
253 260 //回显创建报警规则和清除报警规则
254 261 }
255 262 }
256   - function handleStep3Next(v) {
  263 + function handleStep3Next(v, v1) {
  264 + console.log(v1);
  265 + isEditAndChange.value = v1;
257 266 current.value++;
258 267 getStepThreeData.value = v;
259 268 if (isUpdate.value == 1) {
... ... @@ -295,8 +304,12 @@
295 304 closeModal();
296 305 emit('success');
297 306 } else if (isUpdate.value == 2) {
  307 + isGetStepThreeData.profileData.alarms =
  308 + isEditAndChange.value == true
  309 + ? editData.value.profileData.alarms
  310 + : getStepThreeData.value;
  311 + // isGetStepThreeData.profileData.alarms = getStepThreeData.value;
298 312 postDeviceConfogData.value.id = postEditId.value;
299   - isGetStepThreeData.profileData.alarms = getStepThreeData.value;
300 313 getStepFourData = await proxy.$refs.DeviceProfileStep4Ref.getAllFields();
301 314 const getJoinAlarmContactIdData = getStepFourData.alarmContactId.join(',');
302 315 const getJoinMessageModeData = getStepFourData.messageMode.join(',');
... ... @@ -322,11 +335,14 @@
322 335 closeModal();
323 336 try {
324 337 proxy.$refs.DeviceProfileStep4Ref.clearAlaramContactAndNoticeMethodFunc();
  338 + proxy.$refs.DeviceProfileStep3Ref.clearDetailTemplateFunc();
  339 + proxy.$refs.DeviceProfileStep3Ref.clearEditAllRegisterFormFunc();
325 340 } catch (e) {
326 341 return e;
327 342 }
328 343 };
329 344 return {
  345 + // isEditFunc,
330 346 isShowRule,
331 347 isShowOkBtnFalse,
332 348 isStatus,
... ...
src/views/device/profiles/device.profile.data.ts renamed from src/views/device/profile/device.profile.data.ts
... ... @@ -2,8 +2,6 @@ import { BasicColumn } from '/@/components/Table';
2 2 import { FormSchema } from '/@/components/Table';
3 3 import { findDictItemByCode } from '/@/api/system/dict';
4 4 import { MessageEnum } from '/@/enums/messageEnum';
5   -// import { getOrganizationList } from '/@/api/system/system';
6   -// import { copyTransFun } from '/@/utils/fnUtils';
7 5 import { numberRule } from '/@/utils/rules';
8 6
9 7 export const columns: BasicColumn[] = [
... ... @@ -34,24 +32,11 @@ export const searchFormSchema: FormSchema[] = [
34 32 field: 'name',
35 33 label: '配置名称',
36 34 component: 'Input',
37   - colProps: { span: 8 },
  35 + colProps: { span: 6 },
38 36 componentProps: {
39 37 maxLength: 255,
40 38 placeholder: '请输入配置名称',
41 39 },
42   - dynamicRules: () => {
43   - return [
44   - {
45   - required: false,
46   - validator: (_, value) => {
47   - if (String(value).length > 255) {
48   - return Promise.reject('字数不超过255个字');
49   - }
50   - return Promise.resolve();
51   - },
52   - },
53   - ];
54   - },
55 40 },
56 41 ];
57 42
... ... @@ -181,19 +166,6 @@ export const formSchema: FormSchema[] = [
181 166 maxLength: 255,
182 167 placeholder: '请输入消息配置',
183 168 },
184   - dynamicRules: () => {
185   - return [
186   - {
187   - required: false,
188   - validator: (_, value) => {
189   - if (String(value).length > 255) {
190   - return Promise.reject('字数不超过255个字');
191   - }
192   - return Promise.resolve();
193   - },
194   - },
195   - ];
196   - },
197 169 },
198 170 {
199 171 field: 'id',
... ... @@ -225,18 +197,5 @@ export const formSchema: FormSchema[] = [
225 197 maxLength: 255,
226 198 placeholder: '请输入备注',
227 199 },
228   - dynamicRules: () => {
229   - return [
230   - {
231   - required: false,
232   - validator: (_, value) => {
233   - if (String(value).length > 255) {
234   - return Promise.reject('字数不超过255个字');
235   - }
236   - return Promise.resolve();
237   - },
238   - },
239   - ];
240   - },
241 200 },
242 201 ];
... ...
src/views/device/profiles/index.vue renamed from src/views/device/profile/index.vue
... ... @@ -5,7 +5,6 @@
5 5 @selection-change="useSelectionChange"
6 6 @register="registerTable"
7 7 :rowSelection="{ type: 'checkbox' }"
8   - :rowClassName="setRowClassName"
9 8 >
10 9 <template #toolbar>
11 10 <a-button type="primary" @click="handleCreate"> 新增设备配置 </a-button>
... ... @@ -48,31 +47,24 @@
48 47 </template>
49 48 </BasicTable>
50 49 <DeviceProfileModal @register="registerModal" @success="handleSuccess" />
51   - <DeviceConfigDetail
52   - ref="deviceDetailRef"
53   - @register="registerModalDetail"
54   - @success="handleSuccess"
55   - />
56 50 <!-- <ExpExcelModal @register="register1" @success="defaultHeader" /> -->
57 51 </div>
58 52 </template>
59 53 <script lang="ts">
60   - import { defineComponent, ref, reactive, getCurrentInstance } from 'vue';
  54 + import { defineComponent, ref, reactive } from 'vue';
61 55 import { BasicTable, useTable, TableAction, BasicColumn } from '/@/components/Table';
62 56 import { columns, searchFormSchema } from './device.profile.data';
63 57 import { useMessage } from '/@/hooks/web/useMessage';
64 58 import { deviceConfigGetQuery, deviceConfigDelete } from '/@/api/device/deviceConfigApi';
65 59 import { useModal } from '/@/components/Modal';
66 60 import DeviceProfileModal from '/@/views/device/profile/DeviceProfileModal.vue';
67   - import DeviceConfigDetail from '/@/views/device/profile/deviceConfigDetail.vue';
68 61 import { ImpExcel, ExcelData } from '/@/components/Excel';
69 62 // import { jsonToSheetXlsx, ExportModalResult } from '/@/components/Excel';
70 63
71 64 export default defineComponent({
72 65 name: 'DeviceProfileManagement',
73   - components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel, DeviceConfigDetail },
  66 + components: { BasicTable, DeviceProfileModal, TableAction, ImpExcel },
74 67 setup() {
75   - const { proxy } = getCurrentInstance();
76 68 const deviceDetailRef = ref(null);
77 69 let selectedRowKeys: string[] = reactive([]);
78 70 const getPathUrl = ref('');
... ... @@ -125,11 +117,11 @@
125 117 const getName = getParam(getPathUrl.value, name);
126 118 getPathUrlName.value = decodeURIComponent(getName);
127 119
128   - const setRowClassName = (record) => {
129   - if (record.name === getPathUrlName.value) {
130   - return 'rowcolor2';
131   - }
132   - };
  120 + // const setRowClassName = (record) => {
  121 + // if (record.name === getPathUrlName.value) {
  122 + // return 'rowcolor2';
  123 + // }
  124 + // };
133 125
134 126 const tableListRef = ref<
135 127 {
... ... @@ -231,7 +223,7 @@
231 223 return {
232 224 disabled,
233 225 deviceDetailRef,
234   - setRowClassName,
  226 + // setRowClassName,
235 227 registerModalDetail,
236 228 // register1,
237 229 // defaultHeader,
... ...
src/views/device/profiles/step/DeviceProfileStep1.vue renamed from src/views/device/profile/step/DeviceProfileStep1.vue
src/views/device/profiles/step/DeviceProfileStep2.vue renamed from src/views/device/profile/step/DeviceProfileStep2.vue
src/views/device/profiles/step/DeviceProfileStep3.vue renamed from src/views/device/profile/step/DeviceProfileStep3.vue
... ... @@ -67,24 +67,14 @@
67 67 <div class="aic" style="border: 1px solid #bfbfbf">
68 68 <div class="w-3/4" style="margin-left: 40px">
69 69 <!-- 报警严重程度 -->
70   - <div style="margin-left: 10px; margin-top: 20px"
71   - ><BasicForm v-if="childItem" @register="registerFormCreateAlarm" />
72   - <div>
73   - <div
74   - v-for="(i8, index8) in getStepThreeEditStatus ? createAlarmArray : []"
75   - :key="index8"
76   - style="position: relative"
77   - >
78   - <p
79   - style="position: absolute; top: -10.2vh; left: 6.5vw; z-index: 1"
80   - v-if="index8 == createIndex"
81   - >{{ formatAlarmFunc(i8) }}</p
82   - >
83   - </div>
84   - </div>
  70 + <div style="height: 2vh; margin-top: 0.8vh; margin-left: 0.35vw">
  71 + <AlarmSeverity
  72 + ref="alarmSeverityRef"
  73 + :alarmSeverityInfo="getStepThreeEditStatus ? childItem : 1"
  74 + />
85 75 </div>
86 76 <!-- 报警严重程度 -->
87   - <div style="margin-left: 5px; margin-top: -35px">
  77 + <div style="margin-left: 5px; margin-top: 35px">
88 78 <div style="color: #f5594e" class="ml-4"
89 79 >报警规则条件:
90 80 <Button
... ... @@ -107,14 +97,6 @@
107 97 >报警规则条件:{{ openRuleConditionComp(v2) }}</p
108 98 >
109 99 </template>
110   - <template
111   - v-for="(vi, indexi) in isEditDataAndValue ? getEditDataAndValue : []"
112   - :key="indexi"
113   - >
114   - <p v-if="indexi == createIndex && isEditDataAndValue"
115   - >报警规则条件:{{ isEditDataAndValueFunc(vi) }}</p
116   - >
117   - </template>
118 100 </div>
119 101 <div style="white-space: wrap; margin-top: 25px" class="mt-4 ml-4"
120 102 >报警启用规则:
... ... @@ -144,27 +126,30 @@
144 126 启用方式:{{ openRuleComp(v1) }}
145 127 </p>
146 128 </template>
  129 + <!-- 报警详情模板-->
147 130 <div
148 131 class="mt-4 ml-4"
149   - style="margin-left: 0px; position: relative; margin-top: 25px"
150   - >报警详情模板:
151   - <div style="position: absolute; top: -5px; left: 106px; width: 581px">
152   - <BasicForm @register="registerFormChangeDetail" />
153   - </div>
154   - <div
155   - style="position: relative"
156   - v-for="(i7, index7) in getStepThreeEditStatus
157   - ? detailDetailModelArray
158   - : []"
159   - :key="index7"
160   - >
161   - <p
162   - style="position: absolute; top: -2.3vh; left: 5.68vw"
163   - v-if="index7 == createIndex"
164   - >{{ i7 }}</p
165   - >
  132 + style="
  133 + margin-left: -0.2vw;
  134 + margin-top: 25px;
  135 + display: flex;
  136 + flex-direction: row;
  137 + justify-content: space-between;
  138 + width: 29vw;
  139 + height: 2vh;
  140 + "
  141 + >
  142 + <div style="width: 6vw; height: 2vh"> 报警详情模板: </div>
  143 + <div style="width: 25vw; height: 2vh">
  144 + <DetailTemplate
  145 + ref="detailTemplateRef"
  146 + :detailTemplateInfo="
  147 + getStepThreeEditStatus ? returnChildItem(childItem) : 1
  148 + "
  149 + />
166 150 </div>
167 151 </div>
  152 + <!-- 报警详情模板-->
168 153 <div style="margin-top: 25px; position: relative">
169 154 <div style="margin-left: -14px">
170 155 <BasicForm @register="dashboardForm" />
... ... @@ -172,9 +157,10 @@
172 157 </div>
173 158 </div>
174 159 </div>
  160 + <!-- 移除按钮 -->
175 161 <div
176 162 class="remove-type"
177   - style="display: inline-block; position: relative; top: -33vh; left: 39.4vw"
  163 + style="display: inline-block; position: relative; top: -25.2vh; left: 39.4vw"
178 164 >
179 165 <img
180 166 v-if="isAddRuleStatus"
... ... @@ -184,6 +170,7 @@
184 170 src="../../../../assets/images/close.png"
185 171 />
186 172 </div>
  173 + <!-- 移除按钮 -->
187 174 </div>
188 175 </div>
189 176 </div>
... ... @@ -237,7 +224,6 @@
237 224 @click="handleOpenClearAlaramRuleConditions"
238 225 >添加</Button
239 226 >
240   -
241 227 <template
242 228 v-for="(v4, index4) in getStepThreeEditStatus
243 229 ? getFilterStepThreeEditClearArr
... ... @@ -334,10 +320,8 @@
334 320 import {
335 321 step3Schemas,
336 322 step3HighSetting,
337   - step3CreateAlarm,
338 323 dashboardFormScheme,
339 324 isWhereType,
340   - isLostFocux,
341 325 formChangeDetailSchema,
342 326 } from './data';
343 327 import { PlusCircleOutlined } from '@ant-design/icons-vue';
... ... @@ -347,6 +331,9 @@
347 331 import AlarmRuleConditions from './cpns/alarmruleconditions/index.vue';
348 332 import { Button } from '/@/components/Button';
349 333 export const isWhereTypeValueDisabled = ref(false);
  334 + import AlarmSeverity from './cpns/alarmseverity/index.vue';
  335 + import DetailTemplate from './cpns/detailtemplate/index.vue';
  336 + import { generateUUID } from '/@/hooks/web/useGenerateUUID';
350 337
351 338 export default defineComponent({
352 339 components: {
... ... @@ -357,12 +344,17 @@
357 344 EnableRule,
358 345 AlarmRuleConditions,
359 346 Button,
  347 + AlarmSeverity,
  348 + DetailTemplate,
360 349 },
361   - emits: ['prev', 'next', 'redo', 'handleFormStep3toStep4Next'],
  350 + emits: ['prev', 'next', 'redo', 'handleFormStep3toStep4Next', 'isEdit'],
362 351 props: ['getAllStepThreeData', 'isAddOrEdit', 'isShowAddRule'],
  352 +
363 353 setup(props, { emit }) {
  354 + const detailTemplateRef = ref(null);
  355 + const alarmSeverityRef = ref(null);
364 356 const isAddRuleStatus = ref(true);
365   - const { proxy } = getCurrentInstance();
  357 + const { proxy } = getCurrentInstance() as any;
366 358 const changeGetDetailValue = ref({});
367 359 const changeGetClearDetailValue = ref({});
368 360 const getChildData1 = ref(null);
... ... @@ -384,7 +376,7 @@
384 376 const detailClearTemplateData: any = ref(null);
385 377 //重构
386 378 //告警列表接口
387   - let profileData = ref<IProfileData[]>([]);
  379 + let profileData: any = ref<IProfileData[]>([]);
388 380 //初始化alarams数据
389 381 const initProfileData = reactive({
390 382 alarms: [
... ... @@ -407,7 +399,7 @@
407 399 propagate: '',
408 400 propagateRelationTypes: [''],
409 401 schedule: {
410   - type: 'string',
  402 + type: '',
411 403 },
412 404 condition: {},
413 405 },
... ... @@ -426,11 +418,11 @@
426 418 //接收临时规则条件数据
427 419 const receiveRuleConditionTempArr = ref<[]>([]);
428 420 //创建条件总对象
429   - const createRulesObj = ref({});
  421 + const createRulesObj: any = ref({});
430 422 let addCreateRulesObj = reactive({
431 423 createRules: {},
432 424 });
433   - const addChangeSeverity = ref({});
  425 + const addChangeSeverity: any = ref({});
434 426 let addNewOpenRule = reactive({
435 427 schedule: {},
436 428 });
... ... @@ -473,20 +465,21 @@
473 465 condition: {},
474 466 });
475 467 let fliterTempRuleConditionTempArr = ref<[]>([]);
476   - let fliterTempOpenRuleTempArr = ref<[]>([]);
  468 + let fliterTempOpenRuleTempArr: any = ref<[]>([]);
477 469 let fliterClearTempRuleConditionTempArr = ref<[]>([]);
478   - let fliterClearTempOpenRuleTempArr = ref<[]>([]);
  470 + let fliterClearTempOpenRuleTempArr: any = ref<[]>([]);
479 471 const getStepThreeEditStatus: any = ref(false);
480   - const isEditDataAndValue = ref(false);
  472 + // const isEditDataAndValue = ref(false);
481 473 const getStepThreeEditArr = ref<[]>([]);
482   - const getFilterStepThreeEditArr = ref<[]>([]);
483   - const getFilterStepThreeEditClearArr = ref<[]>([]);
  474 + const getFilterStepThreeEditArr: any = ref<[]>([]);
  475 + const getFilterStepThreeEditClearArr: any = ref<[]>([]);
484 476 const getFilterStepThreeClearDetailEditArr = ref<[]>([]);
485 477 let getIsShowAddRule = true;
486 478 const detailDetailModelArray = ref<[]>([]);
487 479 const createAlarmArray = ref<[]>([]);
488 480 const isLostFocuxStatus = ref(true);
489   - const getEditDataAndValue = ref<[]>([]);
  481 + // const getEditDataAndValue = ref<[]>([]);
  482 + const editIndex = ref(-1);
490 483
491 484 setTimeout(() => {
492 485 getIsShowAddRule = props.isShowAddRule;
... ... @@ -558,19 +551,6 @@
558 551 span: 24,
559 552 },
560 553 });
561   - //详情模板
562   - const [
563   - registerFormChangeDetail,
564   - { getFieldsValue: getRegisterFormChangeDetail, resetFields: resetRegisterFormChangeDetail },
565   - ] = useForm({
566   - labelWidth: 120,
567   - schemas: formChangeDetailSchema,
568   - showResetButton: false,
569   - showSubmitButton: false,
570   - actionColOptions: {
571   - span: 24,
572   - },
573   - });
574 554 //清除详情模板
575 555 const [
576 556 registerFormChangeClearDetail,
... ... @@ -588,36 +568,20 @@
588 568 span: 24,
589 569 },
590 570 });
591   - // 添加创建条件表单
592   - const [
593   - registerFormCreateAlarm,
594   - {
595   - setFieldsValue: setRegisterFormCreateAlarm,
596   - resetFields: resetRegisterFormCreateAlarm,
597   - validate: validateRegisterFormCreateAlarm,
598   - },
599   - ] = useForm({
600   - labelWidth: 120,
601   - schemas: step3CreateAlarm,
602   - showResetButton: false,
603   - showSubmitButton: false,
604   - actionColOptions: {
605   - span: 24,
606   - },
607   - });
608 571
609   - const resetRegisterFormCreateAlarmFunc = () => {
610   - resetRegisterFormCreateAlarm();
  572 + //重置编辑数据
  573 + const clearEditAllRegisterFormFunc = () => {
  574 + getFilterStepThreeEditArr.value.length = 0;
  575 + getFilterStepThreeEditArr.value = [];
611 576 };
  577 +
612 578 //重置表单数据
613 579 const clearAllRegisterFormFunc = () => {
614 580 setTimeout(() => {
615 581 clearAlaramTypeValueFunc();
616 582 clearTransmitAlarmFunc();
617   - resetRegisterFormChangeDetailFunc();
618 583 resetRegisterFormClearChangeDetailFunc();
619 584 resetAllTemplateFunc();
620   - resetRegisterFormCreateAlarmFunc();
621 585 }, 10);
622 586 };
623 587 //重置报警启用规则-报警规则条件
... ... @@ -647,10 +611,6 @@
647 611 });
648 612 };
649 613
650   - //重置详情模板数据
651   - const resetRegisterFormChangeDetailFunc = () => {
652   - resetRegisterFormChangeDetail();
653   - };
654 614 //清除修改详情模板
655 615 const resetRegisterFormClearChangeDetailFunc = () => {
656 616 resetRegisterFormClearChangeDetail();
... ... @@ -663,13 +623,8 @@
663 623 const setTransmitAlarmFormFunc = (v) => {
664 624 setTransmitAlarmFunc(v);
665 625 };
666   - const setRegisterFormCreateAlarmFunc = async () => {
667   - setRegisterFormCreateAlarm({
668   - default: '',
669   - });
670   - };
671 626 const openRuleComp = (v1) => {
672   - let openSchemObj = {};
  627 + let openSchemObj: any = {};
673 628 for (let i in v1) {
674 629 if (i == 'CRITICAL') {
675 630 openSchemObj = v1[i];
... ... @@ -721,7 +676,7 @@
721 676
722 677 const openRuleConditionComp = (v2) => {
723 678 try {
724   - let openRuleConditObj = {};
  679 + let openRuleConditObj: any = {};
725 680 for (let i in v2) {
726 681 if (i == 'CRITICAL') {
727 682 openRuleConditObj = v2[i];
... ... @@ -766,7 +721,7 @@
766 721 getFilterStepThreeEditArr.value = [];
767 722 getFilterStepThreeEditClearArr.value = [];
768 723 getStepThreeEditStatus.value = v.isEditStatus;
769   - isEditDataAndValue.value = v.isEditStatus;
  724 + // isEditDataAndValue.value = v.isEditStatus;
770 725 getStepThreeEditArr.value = v.stepThreeData;
771 726 if (getFilterStepThreeEditClearArr.value.length == 0) {
772 727 getFilterStepThreeEditClearArr.value.push(v.stepThreeClearData as never);
... ... @@ -784,17 +739,6 @@
784 739 createAlarmArray.value.push(i as never);
785 740 }
786 741 };
787   - const formatAlarmFunc = (v) => {
788   - return v == 'CRITICAL'
789   - ? '危险'
790   - : v == 'MAJOR'
791   - ? '重要'
792   - : v == 'MINOR'
793   - ? '次要'
794   - : v == 'WARNING'
795   - ? '警告'
796   - : '不确定';
797   - };
798 742
799 743 //清除修改详情模板
800 744 const setRegisterFormClearChangeDetailFunc = (v) => {
... ... @@ -802,7 +746,18 @@
802 746 };
803 747
804 748 const getRegisterFormChangeDetailFunc = () => {
805   - changeGetDetailValue.value = getRegisterFormChangeDetail();
  749 + try {
  750 + changeGetDetailValue.value = proxy.$refs.detailTemplateRef.getFieldsValueFunc();
  751 + } catch (e) {
  752 + return e;
  753 + }
  754 + };
  755 + const clearDetailTemplateFunc = () => {
  756 + try {
  757 + proxy.$refs.detailTemplateRef.resetFieldsFunc();
  758 + } catch (e) {
  759 + return e;
  760 + }
806 761 };
807 762 const getRegisterClearFormChangeDetailFunc = () => {
808 763 changeGetClearDetailValue.value = getRegisterFormClearChangeDetail();
... ... @@ -821,7 +776,7 @@
821 776 tempOpenRuleTempArr.value.push(addNewOpenRule.schedule as never);
822 777 tempRuleConditionTempArr.value.push({
823 778 condition: addNewRuleTem.condition.condition,
824   - });
  779 + } as never);
825 780 };
826 781
827 782 const getClearOpenRuleAndRuleCondition = () => {
... ... @@ -845,32 +800,36 @@
845 800
846 801 // 添加创建条件方法
847 802 const addCreateRuleFunc = async () => {
848   - getRegisterFormChangeDetailFunc();
849   - tempDetailTempArr.value.push(changeGetDetailValue.value as never);
850   - tempDetailTempArr.value.forEach((f1) => {
851   - kongDetail.value = f1;
852   - });
853   - addChangeSeverity.value = await validateRegisterFormCreateAlarm();
854   - emptyCreateRoleFunc();
855   - getOpenRuleAndRuleCondition();
  803 + try {
  804 + getRegisterFormChangeDetailFunc();
  805 + tempDetailTempArr.value.push(changeGetDetailValue.value as never);
  806 + tempDetailTempArr.value.forEach((f1) => {
  807 + kongDetail.value = f1;
  808 + });
  809 + addChangeSeverity.value = proxy.$refs.alarmSeverityRef.getFieldsValueFunc();
  810 + emptyCreateRoleFunc();
  811 + getOpenRuleAndRuleCondition();
856 812
857   - tempOpenRuleTempArr.value.forEach((f2) => {
858   - kongOpenRuleObj.schedule = f2;
859   - });
  813 + tempOpenRuleTempArr.value.forEach((f2) => {
  814 + kongOpenRuleObj.schedule = f2;
  815 + });
860 816
861   - tempRuleConditionTempArr.value.forEach((f3) => {
862   - kongRuleConditionObj.condition = f3;
863   - });
  817 + tempRuleConditionTempArr.value.forEach((f3) => {
  818 + kongRuleConditionObj.condition = f3;
  819 + });
864 820
865   - createRulesObj.value[addChangeSeverity.value?.default] = {
866   - ...kongDetail.value,
867   - ...addNewOpenRule,
868   - ...addNewRuleTem,
869   - ...kongOpenRuleObj,
870   - ...kongRuleConditionObj,
871   - };
872   - addCreateRulesObj.createRules = createRulesObj.value;
873   - initCreateRules.createRules = addCreateRulesObj;
  821 + createRulesObj.value[addChangeSeverity.value?.default] = {
  822 + ...kongDetail.value,
  823 + ...addNewOpenRule,
  824 + ...addNewRuleTem,
  825 + ...kongOpenRuleObj,
  826 + ...kongRuleConditionObj,
  827 + };
  828 + addCreateRulesObj.createRules = createRulesObj.value;
  829 + initCreateRules.createRules = addCreateRulesObj;
  830 + } catch (e) {
  831 + return e;
  832 + }
874 833 };
875 834
876 835 //清除报警规则
... ... @@ -894,6 +853,9 @@
894 853 // 删除创建条件
895 854 const deleteCondition = (index: number, createIndex: number) => {
896 855 profileData.value[index].alarms.splice(createIndex, 1);
  856 + if (getStepThreeEditStatus.value) {
  857 + getFilterStepThreeEditArr.value.pop();
  858 + }
897 859 };
898 860
899 861 watch(isWhereType, (nV) => {
... ... @@ -902,9 +864,6 @@
902 864 isWhereTypeValueDisabled.value = true;
903 865 }
904 866 });
905   - watch(isLostFocux, (nV) => {
906   - isLostFocuxStatus.value = nV;
907   - });
908 867 //报警规则
909 868 //启用规则
910 869 const getAllFieldsEnabFunc = (v) => {
... ... @@ -917,36 +876,34 @@
917 876 addNewRuleTem.condition.condition = ruleObj.value as never;
918 877 fliterTempRuleConditionTempArr.value.push({
919 878 condition: addNewRuleTem.condition.condition,
920   - });
921   -
922   - getEditDataAndValue.value.push({
923   - condition: addNewRuleTem.condition.condition,
924   - });
925   - console.log(getEditDataAndValue.value);
  879 + } as never);
  880 + // getEditDataAndValue.value.push({
  881 + // condition: addNewRuleTem.condition.condition,
  882 + // } as never);
926 883 };
927 884 //格式化编辑
928   - const isEditDataAndValueFunc = (v) => {
929   - let formatMap = v.condition.map((f) => {
930   - return f.predicate.operation == 'EQUAL'
931   - ? f.key.key + '等于' + f.predicate.value.defaultValue
932   - : f.predicate.operation == 'STARTS_WITH'
933   - ? f.key.key + '开始于' + f.predicate.value.defaultValue
934   - : f.predicate.operation == 'ENDS_WITH'
935   - ? f.key.key + '结束于' + f.predicate.value.defaultValue
936   - : f.predicate.operation == 'NOT_CONTAINS'
937   - ? f.key.key + '不包含' + f.predicate.value.defaultValue
938   - : f.predicate.operation == 'NOT_EQUAL'
939   - ? f.key.key + '不等于' + f.predicate.value.defaultValue
940   - : f.predicate.operation == 'GREATER'
941   - ? f.key.key + '大于' + f.predicate.value.defaultValue
942   - : f.predicate.operation == 'LESS'
943   - ? f.key.key + '小于' + f.predicate.value.defaultValue
944   - : f.predicate.operation == 'GREATER_OR_EQUAL'
945   - ? f.key.key + '大于或等于' + f.predicate.value.defaultValue
946   - : f.key.key + '小于或等于' + f.predicate.value.defaultValue;
947   - });
948   - return formatMap;
949   - };
  885 + // const isEditDataAndValueFunc = (v) => {
  886 + // let formatMap = v.condition.map((f) => {
  887 + // return f.predicate.operation == 'EQUAL'
  888 + // ? f.key.key + '等于' + f.predicate.value.defaultValue
  889 + // : f.predicate.operation == 'STARTS_WITH'
  890 + // ? f.key.key + '开始于' + f.predicate.value.defaultValue
  891 + // : f.predicate.operation == 'ENDS_WITH'
  892 + // ? f.key.key + '结束于' + f.predicate.value.defaultValue
  893 + // : f.predicate.operation == 'NOT_CONTAINS'
  894 + // ? f.key.key + '不包含' + f.predicate.value.defaultValue
  895 + // : f.predicate.operation == 'NOT_EQUAL'
  896 + // ? f.key.key + '不等于' + f.predicate.value.defaultValue
  897 + // : f.predicate.operation == 'GREATER'
  898 + // ? f.key.key + '大于' + f.predicate.value.defaultValue
  899 + // : f.predicate.operation == 'LESS'
  900 + // ? f.key.key + '小于' + f.predicate.value.defaultValue
  901 + // : f.predicate.operation == 'GREATER_OR_EQUAL'
  902 + // ? f.key.key + '大于或等于' + f.predicate.value.defaultValue
  903 + // : f.key.key + '小于或等于' + f.predicate.value.defaultValue;
  904 + // });
  905 + // return formatMap;
  906 + // };
950 907 //格式化新增
951 908 const formatAddRuleFunc = (v) => {
952 909 let formatMap = v.condition.map((f) => {
... ... @@ -982,7 +939,7 @@
982 939 addNewRuleTem.condition.condition = ruleLastObj.value as never;
983 940 fliterClearTempRuleConditionTempArr.value.push({
984 941 condition: addNewRuleTem.condition.condition,
985   - });
  942 + } as never);
986 943 };
987 944
988 945 const formatClearRuleFunc = (v) => {
... ... @@ -1008,19 +965,6 @@
1008 965 return formatMap;
1009 966 };
1010 967
1011   - //生成uuid
1012   - function generateUUID() {
1013   - let d = new Date().getTime();
1014   - if (window.performance && typeof window.performance.now === 'function') {
1015   - d += performance.now();
1016   - }
1017   - let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1018   - let r = (d + Math.random() * 16) % 16 | 0;
1019   - d = Math.floor(d / 16);
1020   - return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);
1021   - });
1022   - return uuid;
1023   - }
1024 968 const handleFormStep3toStep4Next = () => {
1025 969 try {
1026 970 validateRegisterFormFunc();
... ... @@ -1031,7 +975,6 @@
1031 975 getRegisterFormChangeDetailFunc();
1032 976 addCreateRuleFunc();
1033 977 addClearAlaramRule();
1034   -
1035 978 getAllObjTemp = {
1036 979 ...alarmTypeGet.value,
1037 980 ...propagateAndpropagateRelationTypes,
... ... @@ -1041,7 +984,7 @@
1041 984 Object.assign(getAllObjTemp, addCreateRulesObj, getClearObj);
1042 985 }, 10);
1043 986 allAlarms.value.push(getAllObjTemp as never);
1044   - emit('next', allAlarms.value);
  987 + emit('next', allAlarms.value, getStepThreeEditStatus.value);
1045 988 } catch (e) {
1046 989 return e;
1047 990 }
... ... @@ -1073,6 +1016,7 @@
1073 1016 };
1074 1017 const handleOpenAlaramRuleConditions = () => {
1075 1018 isRuleAlarmRuleConditions.value = 3;
  1019 + getStepThreeEditStatus.value = false;
1076 1020 setTimeout(() => {
1077 1021 openModal3(true);
1078 1022 try {
... ... @@ -1109,11 +1053,33 @@
1109 1053 openModal6(true);
1110 1054 }, 10);
1111 1055 };
  1056 + const handleClickHidenEdit = (v) => {
  1057 + editIndex.value = v;
  1058 + };
  1059 + const returnChildItem = (v) => {
  1060 + let openRuleConditObj: any = {};
  1061 + for (let i in v) {
  1062 + if (i == 'CRITICAL') {
  1063 + openRuleConditObj = v[i];
  1064 + } else if (i == 'MAJOR') {
  1065 + openRuleConditObj = v[i];
  1066 + } else if (i == 'MINOR') {
  1067 + openRuleConditObj = v[i];
  1068 + } else if (i == 'WARNING') {
  1069 + openRuleConditObj = v[i];
  1070 + } else if (i == 'INDETERMINATE') {
  1071 + openRuleConditObj = v[i];
  1072 + }
  1073 + }
  1074 + return openRuleConditObj.alarmDetails;
  1075 + };
1112 1076
1113 1077 return {
  1078 + clearEditAllRegisterFormFunc,
  1079 + returnChildItem,
  1080 + editIndex,
1114 1081 isAddRuleStatusFunc,
1115 1082 isAddRuleStatus,
1116   - formatAlarmFunc,
1117 1083 createAlarmArray,
1118 1084 formatClearRuleFunc,
1119 1085 formatAddRuleFunc,
... ... @@ -1126,8 +1092,6 @@
1126 1092 getFilterStepThreeEditArr,
1127 1093 getStepThreeEditStatus,
1128 1094 getStepThreeEditArr,
1129   - setRegisterFormCreateAlarmFunc,
1130   - resetRegisterFormCreateAlarmFunc,
1131 1095 initClearCreateRuleFunc,
1132 1096 fliterTempOpenRuleTempArr,
1133 1097 fliterTempRuleConditionTempArr,
... ... @@ -1144,7 +1108,6 @@
1144 1108 setRegisterFormClearChangeDetailFunc,
1145 1109 setRegisterFormChangeDetailFunc,
1146 1110 registerFormChangeClearDetail,
1147   - registerFormChangeDetail,
1148 1111 clearProfileDataFunc,
1149 1112 setAlaramTypeFormFunc,
1150 1113 setTransmitAlarmFormFunc,
... ... @@ -1184,15 +1147,18 @@
1184 1147 addAlarmRule,
1185 1148 registerForm,
1186 1149 registerFormHighSetting,
1187   - registerFormCreateAlarm,
1188 1150 addCreateRole,
1189 1151 deleteCondition,
1190 1152 setCreateRegisterFormChangeDetailFunc,
1191 1153 detailDetailModelArray,
1192 1154 isLostFocuxStatus,
1193   - isEditDataAndValue,
1194   - getEditDataAndValue,
1195   - isEditDataAndValueFunc,
  1155 + // isEditDataAndValue,
  1156 + // getEditDataAndValue,
  1157 + // isEditDataAndValueFunc,
  1158 + handleClickHidenEdit,
  1159 + alarmSeverityRef,
  1160 + detailTemplateRef,
  1161 + clearDetailTemplateFunc,
1196 1162 };
1197 1163 },
1198 1164 });
... ...
src/views/device/profiles/step/DeviceProfileStep4.vue renamed from src/views/device/profile/step/DeviceProfileStep4.vue
... ... @@ -6,7 +6,7 @@
6 6 <script lang="ts">
7 7 import { defineComponent, ref } from 'vue';
8 8 import { BasicForm, useForm } from '/@/components/Form/index';
9   - import { alertContactsSchemas } from '../cpns/config';
  9 + import { alertContactsSchemas } from './data';
10 10
11 11 export default defineComponent({
12 12 components: {
... ...
src/views/device/profiles/step/cpns/alarmruleconditions/config.ts renamed from src/views/device/profile/step/cpns/alarmruleconditions/config.ts
src/views/device/profiles/step/cpns/alarmruleconditions/cpns/config.ts renamed from src/views/device/profile/step/cpns/alarmruleconditions/cpns/config.ts
src/views/device/profiles/step/cpns/alarmruleconditions/cpns/cpns/config.ts renamed from src/views/device/profile/step/cpns/alarmruleconditions/cpns/cpns/config.ts
src/views/device/profiles/step/cpns/alarmruleconditions/cpns/cpns/index.vue renamed from src/views/device/profile/step/cpns/alarmruleconditions/cpns/cpns/index.vue
src/views/device/profiles/step/cpns/alarmruleconditions/cpns/index.vue renamed from src/views/device/profile/step/cpns/alarmruleconditions/cpns/index.vue
... ... @@ -106,7 +106,7 @@
106 106 if (!unref(isUpdate)) {
107 107 getValue.value = getFieldsValue();
108 108 getKeyAndValArr.value.push(getValue.value);
109   - mapGetKeyAndValArr = getKeyAndValArr.value.map((m) => {
  109 + mapGetKeyAndValArr = getKeyAndValArr.value.map((m: any) => {
110 110 return {
111 111 key: {
112 112 type: m.type,
... ... @@ -131,7 +131,7 @@
131 131 } else {
132 132 getValue.value = getFieldsValue();
133 133 getKeyAndValArr.value.push(getValue.value);
134   - mapGetKeyAndValArr = getKeyAndValArr.value.map((m) => {
  134 + mapGetKeyAndValArr = getKeyAndValArr.value.map((m: any) => {
135 135 return {
136 136 key: {
137 137 type: m.type,
... ... @@ -207,7 +207,6 @@
207 207 }
208 208 watch(isWhereType, (v) => {
209 209 switch (v) {
210   - // console.log(v)
211 210 case 'STRING':
212 211 getIsWhereType.value = v;
213 212 break;
... ...
src/views/device/profiles/step/cpns/alarmruleconditions/index.vue renamed from src/views/device/profile/step/cpns/alarmruleconditions/index.vue
  1 +import { FormSchema } from '/@/components/Table';
  2 +import { ref } from 'vue';
  3 +export const isWhereType = ref(null);
  4 +
  5 +export const formSchema: FormSchema[] = [
  6 + {
  7 + field: 'default',
  8 + component: 'Select',
  9 + label: '报警严重程度:',
  10 + colProps: {
  11 + span: 17,
  12 + },
  13 + componentProps() {
  14 + return {
  15 + options: [
  16 + {
  17 + value: 'CRITICAL',
  18 + label: '危险',
  19 + },
  20 + {
  21 + value: 'MAJOR',
  22 + label: '重要',
  23 + },
  24 + {
  25 + value: 'MINOR',
  26 + label: '次要',
  27 + },
  28 + {
  29 + value: 'WARNING',
  30 + label: '警告',
  31 + },
  32 + {
  33 + value: 'INDETERMINATE',
  34 + label: '不确定',
  35 + },
  36 + ],
  37 + onChange: (v) => {
  38 + isWhereType.value = v ? v : 'CRITICAL';
  39 + },
  40 + };
  41 + },
  42 + },
  43 +];
... ...
src/views/device/profiles/step/cpns/alarmseverity/index.vue renamed from src/views/device/profile/step/cpns/detailtemplate/index.vue
... ... @@ -13,10 +13,11 @@
13 13 components: {
14 14 BasicForm,
15 15 },
  16 + props: ['alarmSeverityInfo'],
16 17 emits: ['success', 'register', 'getAllFields'],
17   - setup() {
  18 + setup(props) {
18 19 const fieldValue: any = ref({});
19   - const [registerForm, { getFieldsValue }] = useForm({
  20 + const [registerForm, { getFieldsValue, setFieldsValue }] = useForm({
20 21 labelWidth: 120,
21 22 schemas: formSchema,
22 23 });
... ... @@ -26,6 +27,17 @@
26 27 return fieldValue.value;
27 28 };
28 29
  30 + const setFieldsValueFunc = () => {
  31 + if (props.alarmSeverityInfo != 1) {
  32 + let newArr = Object.keys(props.alarmSeverityInfo);
  33 + setTimeout(() => {
  34 + newArr.forEach((f) => {
  35 + setFieldsValue({ default: f });
  36 + });
  37 + }, 10);
  38 + }
  39 + };
  40 + setFieldsValueFunc();
29 41 return {
30 42 getFieldsValueFunc,
31 43 registerForm,
... ...
src/views/device/profiles/step/cpns/detailtemplate/config.ts renamed from src/views/device/profile/step/cpns/detailtemplate/config.ts
  1 +<template>
  2 + <div>
  3 + <BasicForm :showResetButton="false" :showSubmitButton="false" @register="registerForm" />
  4 + </div>
  5 +</template>
  6 +<script lang="ts">
  7 + import { defineComponent, ref } from 'vue';
  8 + import { BasicForm, useForm } from '/@/components/Form';
  9 + import { formSchema } from './config';
  10 +
  11 + export default defineComponent({
  12 + name: 'DetailTemplate',
  13 + components: {
  14 + BasicForm,
  15 + },
  16 + props: ['detailTemplateInfo'],
  17 + emits: ['success', 'register', 'getAllFields'],
  18 + setup(props) {
  19 + const fieldValue: any = ref({});
  20 + const [registerForm, { getFieldsValue, setFieldsValue, resetFields }] = useForm({
  21 + labelWidth: 120,
  22 + schemas: formSchema,
  23 + });
  24 +
  25 + const getFieldsValueFunc = () => {
  26 + fieldValue.value = getFieldsValue();
  27 + return fieldValue.value;
  28 + };
  29 + const setFieldsValueFunc = () => {
  30 + if (props.detailTemplateInfo != 1) {
  31 + resetFields();
  32 + setTimeout(() => {
  33 + setFieldsValue({
  34 + alarmDetails: props.detailTemplateInfo,
  35 + });
  36 + }, 10);
  37 + }
  38 + };
  39 + setFieldsValueFunc();
  40 +
  41 + const resetFieldsFunc = () => {
  42 + resetFields();
  43 + };
  44 + return {
  45 + resetFieldsFunc,
  46 + getFieldsValueFunc,
  47 + registerForm,
  48 + };
  49 + },
  50 + });
  51 +</script>
... ...
src/views/device/profiles/step/cpns/enablerule/config.ts renamed from src/views/device/profile/step/cpns/enablerule/config.ts
src/views/device/profiles/step/cpns/enablerule/index.vue renamed from src/views/device/profile/step/cpns/enablerule/index.vue
... ... @@ -23,7 +23,6 @@
23 23 },
24 24 emits: ['success', 'register', 'getAllFieldsEnab'],
25 25 setup(_, { emit }) {
26   - // const getValueData: any = ref({});
27 26 const isUpdate = ref(true);
28 27 const [registerForm, { getFieldsValue, resetFields }] = useForm({
29 28 labelWidth: 120,
... ... @@ -39,19 +38,10 @@
39 38 const handleSubmit = () => {
40 39 const values = getFieldsValue();
41 40 emit('getAllFieldsEnab', values);
42   - // let getV = {};
43   - // getAllFieldsEnab(getV);
44 41 closeModal();
45 42 };
46   - // function getAllFieldsEnab(getV) {
47   - // const values = getFieldsValue();
48   - // getValueData.value = values;
49   - // getV = getValueData.value;
50   - // return getV;
51   - // }
52 43 return {
53 44 resetDataFunc,
54   - // getAllFieldsEnab,
55 45 registerForm,
56 46 handleSubmit,
57 47 register,
... ...
src/views/device/profiles/step/data.ts renamed from src/views/device/profile/step/data.ts
1 1 import { FormSchema } from '/@/components/Form';
2   -// import { getOrganizationList } from '/@/api/system/system';
3   -// import { copyTransFun } from '/@/utils/fnUtils';
4 2 import { deviceConfigGetRuleChain } from '/@/api/device/deviceConfigApi';
5 3 import { ref } from 'vue';
6 4 import { findDictItemByCode } from '/@/api/system/dict';
... ... @@ -148,7 +146,6 @@ export const step3HighSetting: FormSchema[] = [
148 146 ];
149 147
150 148 export const isWhereType = ref(null);
151   -export const isLostFocux = ref(true);
152 149
153 150 export const step3CreateAlarm: FormSchema[] = [
154 151 {
... ... @@ -185,9 +182,6 @@ export const step3CreateAlarm: FormSchema[] = [
185 182 onChange: (v) => {
186 183 isWhereType.value = v ? v : 'INDETERMINATE';
187 184 },
188   - onFocus: () => {
189   - isLostFocux.value = false;
190   - },
191 185 };
192 186 },
193 187 },
... ... @@ -224,7 +218,9 @@ export const alertContactsSchemas: FormSchema[] = [
224 218 field: 'alarmContactId',
225 219 label: '告警通知联系人',
226 220 component: 'ApiSelect',
  221 + required: true,
227 222 componentProps: {
  223 + mode: 'multiple',
228 224 placeholder: '请选择告警通知联系人',
229 225 api: alarmContactGetPage,
230 226 labelField: 'username',
... ... @@ -236,7 +232,9 @@ export const alertContactsSchemas: FormSchema[] = [
236 232 field: 'messageMode',
237 233 label: '告警通知方式',
238 234 component: 'ApiSelect',
  235 + required: true,
239 236 componentProps: {
  237 + mode: 'multiple',
240 238 placeholder: '请选择告警通知方式',
241 239 api: findDictItemByCode,
242 240 params: {
... ... @@ -256,7 +254,7 @@ export const formChangeDetailSchema: FormSchema[] = [
256 254 component: 'Input',
257 255 defaultValue: '',
258 256 componentProps: {
259   - placeholder: '.',
  257 + placeholder: '',
260 258 maxLength: 255,
261 259 },
262 260 },
... ...
src/views/device/profiles/step/index.t.ts renamed from src/views/device/profile/step/index.t.ts
... ... @@ -17,7 +17,6 @@
17 17 import { BasicForm, useForm } from '/@/components/Form/index';
18 18 import { Input } from 'ant-design-vue';
19 19 import { useConditionDrawerSchema } from '../config';
20   - // import { screenLinkPageByDeptIdGetDevice } from '/@/api/ruleengine/ruleengineApi';
21 20
22 21 export default defineComponent({
23 22 components: { CollapseContainer, BasicForm, [Input.name]: Input },
... ... @@ -96,14 +95,6 @@
96 95 },
97 96 });
98 97 };
99   - // const editSelectDevice = (v) => {
100   - // updateSchema({
101   - // field: 'entityId',
102   - // componentProps: {
103   - // options: v,
104   - // },
105   - // });
106   - // };
107 98 return {
108 99 updateFieldDeviceId,
109 100 resetFieldsValueFunc,
... ...
... ... @@ -293,7 +293,7 @@ export const useTriggerDrawerSchema: FormSchema[] = [
293 293 placeholder: '属性触发',
294 294 options: [
295 295 { label: '属性触发', value: 'ATTRIBUTE' },
296   - { label: '上下线触发', value: 'TIME_SERIES' },
  296 + // { label: '上下线触发', value: 'ATTRIBUTE' },
297 297 ],
298 298 },
299 299 ifShow: ({ values }) =>
... ... @@ -302,25 +302,25 @@ export const useTriggerDrawerSchema: FormSchema[] = [
302 302 !isHand(Reflect.get(values, 'triggerType')),
303 303 colProps: { span: 12 },
304 304 },
305   - {
306   - field: 'key1',
307   - label: '',
308   - component: 'Select',
309   - componentProps: {
310   - placeholder: '请选择上下线',
311   - options: [
312   - { label: '上下线', value: '1' },
313   - { label: '上线', value: '2' },
314   - { label: '下线', value: '3' },
315   - ],
316   - },
317   - colProps: { span: 12 },
318   - ifShow: ({ values }) =>
319   - isUpAndDown(Reflect.get(values, 'type1')) &&
320   - !isTime(Reflect.get(values, 'triggerType')) &&
321   - !isScene(Reflect.get(values, 'triggerType')) &&
322   - !isHand(Reflect.get(values, 'triggerType')),
323   - },
  305 + // {
  306 + // field: 'key1',
  307 + // label: '',
  308 + // component: 'Select',
  309 + // componentProps: {
  310 + // placeholder: '请选择上下线',
  311 + // options: [
  312 + // { label: '上下线', value: '1' },
  313 + // { label: '上线', value: '2' },
  314 + // { label: '下线', value: '3' },
  315 + // ],
  316 + // },
  317 + // colProps: { span: 12 },
  318 + // ifShow: ({ values }) =>
  319 + // isUpAndDown(Reflect.get(values, 'type1')) &&
  320 + // !isTime(Reflect.get(values, 'triggerType')) &&
  321 + // !isScene(Reflect.get(values, 'triggerType')) &&
  322 + // !isHand(Reflect.get(values, 'triggerType')),
  323 + // },
324 324 {
325 325 field: 'type2',
326 326 label: '',
... ... @@ -369,7 +369,6 @@ export const useTriggerDrawerSchema: FormSchema[] = [
369 369 maxLength: 16,
370 370 placeholder: '请输入比较值',
371 371 },
372   -
373 372 ifShow: ({ values }) =>
374 373 isWenDu(Reflect.get(values, 'type2')) &&
375 374 !isUpAndDown(Reflect.get(values, 'type1')) &&
... ...
... ... @@ -6,7 +6,9 @@
6 6 :rowSelection="{ type: 'checkbox' }"
7 7 >
8 8 <template #toolbar>
9   - <a-button type="primary" @click="handleAdd"> 新增场景联动 </a-button>
  9 + <a-button v-if="isSysadmin || isCustomer || isPlatform" type="primary" @click="handleAdd">
  10 + 新增场景联动
  11 + </a-button>
10 12 <a-button color="error" @click="handleDeleteOrBatchDelete(null)" :disabled="hasBatchDelete">
11 13 批量删除
12 14 </a-button>
... ... @@ -18,11 +20,13 @@
18 20 label: '编辑',
19 21 icon: 'clarity:note-edit-line',
20 22 onClick: handleEdit.bind(null, record),
  23 + ifShow: isTenant,
21 24 },
22 25 {
23 26 label: '删除',
24 27 icon: 'ant-design:delete-outlined',
25 28 color: 'error',
  29 + ifShow: isTenant,
26 30 popConfirm: {
27 31 title: '是否确认删除',
28 32 confirm: handleDeleteOrBatchDelete.bind(null, record),
... ... @@ -40,7 +44,7 @@
40 44 </div>
41 45 </template>
42 46 <script lang="ts">
43   - import { defineComponent, getCurrentInstance, ref } from 'vue';
  47 + import { defineComponent, getCurrentInstance, ref, computed } from 'vue';
44 48 import { BasicTable, useTable, TableAction } from '/@/components/Table';
45 49 import { useDrawer } from '/@/components/Drawer';
46 50 import SceneLinkAgeDrawer from './useDrawer.vue';
... ... @@ -48,13 +52,22 @@
48 52 import { useMessage } from '/@/hooks/web/useMessage';
49 53 import { screenLinkPageGetApi, screenLinkPageDeleteApi } from '/@/api/ruleengine/ruleengineApi';
50 54 import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
  55 + import { RoleEnum } from '/@/enums/roleEnum';
  56 + import { usePermission } from '/@/hooks/web/usePermission';
  57 + import { useUserStore } from '/@/store/modules/user';
51 58
52 59 export default defineComponent({
53 60 name: 'Index',
54 61 components: { BasicTable, SceneLinkAgeDrawer, TableAction },
55 62 emits: ['default', 'registerTable', 'registerDrawer', 'register'],
56 63 setup() {
57   - const { proxy } = getCurrentInstance();
  64 + const { hasPermission } = usePermission();
  65 + const userStore = useUserStore();
  66 + const isTenant = computed(() => userStore.getRoleList.includes(RoleEnum.TENANT_ADMIN));
  67 + const isCustomer = computed(() => userStore.getRoleList.includes(RoleEnum.CUSTOMER_USER));
  68 + const isSysadmin = computed(() => userStore.getRoleList.includes(RoleEnum.SYS_ADMIN));
  69 + const isPlatform = computed(() => userStore.getRoleList.includes(RoleEnum.PLATFORM_ADMIN));
  70 + const { proxy } = getCurrentInstance() as any;
58 71 const sceneLinkAgeDrawerRef: any = ref(null);
59 72 const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions } = useBatchDelete(
60 73 screenLinkPageDeleteApi,
... ... @@ -91,8 +104,6 @@
91 104 });
92 105 try {
93 106 setTimeout(() => {
94   - // proxy.$refs.sceneLinkAgeDrawerRef.defaultAddTrigger();
95   - // proxy.$refs.sceneLinkAgeDrawerRef.defaultAddCondition();
96 107 proxy.$refs.sceneLinkAgeDrawerRef.defaultAddAction();
97 108 }, 50);
98 109 } catch (e) {
... ... @@ -130,6 +141,12 @@
130 141 reload();
131 142 }
132 143 return {
  144 + isPlatform,
  145 + isSysadmin,
  146 + isCustomer,
  147 + isTenant,
  148 + RoleEnum,
  149 + hasPermission,
133 150 sceneLinkAgeDrawerRef,
134 151 useSelectionChange,
135 152 registerTable,
... ...
1 1 <template>
2   - <BasicDrawer
3   - v-bind="$attrs"
4   - @register="registerDrawer"
5   - showFooter
6   - :title="getTitle"
7   - width="1000px"
8   - @ok="handleSubmit"
9   - @close="handleClose"
10   - >
11   - <div>
12   - <BasicForm @register="registerForm" />
13   - <!-- 触发器 -->
14   - <div style="border-radius: 4px">
15   - <template
16   - v-for="(item, index) in isUpdate == false ? addTriggerPushData : editTriggerPushData"
17   - :key="index"
18   - >
19   - <span style="display: none">{{ item + index }}</span>
20   - <span style="position: relative; top: 3.2vh; left: 0.5vw">触发器 {{ index + 1 }}</span>
21   - <div style="display: block">
22   - <AddTriggerForm
23   - ref="refTriggerChild"
24   - :editTriggerFather="isUpdate == false ? 1 : item"
25   - :newFilterMapFather="isUpdate == false ? 1 : newFilterMap"
26   - :deviceInfo="getDeviceInfo"
27   - />
28   - </div>
29   - <div style="height: 3vh"></div>
30   - </template>
31   - <div
32   - style="
33   - display: flex;
34   - width: 11vw;
35   - height: 4vh;
36   - flex-direction: row;
37   - justify-content: space-between;
38   - "
39   - >
40   - <div style="display: flex; width: 4vw; height: 4vh">
41   - <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addTrigger"
42   - >新增触发器</Button
43   - >
44   - </div>
45   - <div style="display: flex; width: 4vw; height: 4vh">
46   - <Button
47   - v-if="addTriggerPushData.length != 0 || editTriggerPushData.length != 0"
48   - type="default"
49   - style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
50   - class="mt-5"
51   - @click="removeTrigger"
52   - >
53   - <span style="color: white">删除</span></Button
54   - >
  2 + <div>
  3 + <BasicDrawer
  4 + v-bind="$attrs"
  5 + @register="registerDrawer"
  6 + showFooter
  7 + :title="getTitle"
  8 + width="1000px"
  9 + @ok="handleSubmit"
  10 + @close="handleClose"
  11 + >
  12 + <div>
  13 + <BasicForm @register="registerForm" />
  14 + <!-- 触发器 -->
  15 + <div style="border-radius: 4px">
  16 + <template
  17 + v-for="(item, index) in isUpdate == false ? addTriggerPushData : editTriggerPushData"
  18 + :key="index"
  19 + >
  20 + <span style="display: none">{{ item + index }}</span>
  21 + <span style="position: relative; top: 3.2vh; left: 0.5vw">触发器 {{ index + 1 }}</span>
  22 + <div style="display: block">
  23 + <AddTriggerForm
  24 + ref="refTriggerChild"
  25 + :editTriggerFather="isUpdate == false ? 1 : item"
  26 + :newFilterMapFather="isUpdate == false ? 1 : newFilterMap"
  27 + :deviceInfo="getDeviceInfo"
  28 + />
  29 + </div>
  30 + <div style="height: 3vh"></div>
  31 + </template>
  32 + <div
  33 + style="
  34 + display: flex;
  35 + width: 11vw;
  36 + height: 4vh;
  37 + flex-direction: row;
  38 + justify-content: space-between;
  39 + "
  40 + >
  41 + <div style="display: flex; width: 4vw; height: 4vh">
  42 + <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addTrigger"
  43 + >新增触发器</Button
  44 + >
  45 + </div>
  46 + <div style="display: flex; width: 4vw; height: 4vh">
  47 + <Button
  48 + v-if="addTriggerPushData.length != 0 || editTriggerPushData.length != 0"
  49 + type="default"
  50 + style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
  51 + class="mt-5"
  52 + @click="removeTrigger"
  53 + >
  54 + <span style="color: white">删除</span></Button
  55 + >
  56 + </div>
55 57 </div>
56 58 </div>
57   - </div>
58   - <div style="height: 5vh"></div>
59   - <!-- 执行条件 -->
60   - <div style="border-radius: 4px" class="condition-style">
61   - <template
62   - v-for="(item, index) in isUpdate == false ? addConditionPushData : editConditionPushData"
63   - :key="index"
64   - >
65   - <span style="display: none">{{ item + index }}</span>
66   - <span style="position: relative; top: 3.2vh; left: 0.5vw">执行条件 {{ index + 1 }}</span>
67   -
68   - <div>
69   - <AddConditiForm
70   - :editConditionFather="isUpdate == false ? 1 : item"
71   - :newConditionMapFather="isUpdate == false ? 1 : newConditionFilterMap"
72   - :deviceInfo1="getDeviceInfo1"
73   - ref="refConditionChild"
74   - />
75   - </div>
76   - <div style="height: 3vh"></div>
77   - </template>
78   - <div
79   - style="
80   - display: flex;
81   - width: 11vw;
82   - height: 4vh;
83   - flex-direction: row;
84   - justify-content: space-between;
85   - "
86   - >
87   - <div style="display: flex; width: 4vw; height: 4vh">
88   - <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addCondition"
89   - >新增执行条件</Button
90   - >
91   - </div>
92   - <div style="display: flex; width: 4vw; height: 4vh">
93   - <Button
94   - v-if="addConditionPushData.length != 0 || editConditionPushData.length != 0"
95   - style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
96   - type="default"
97   - class="mt-5"
98   - @click="removeCondition"
99   - >
100   - <span style="color: white">删除</span></Button
  59 + <div style="height: 5vh"></div>
  60 + <!-- 执行条件 -->
  61 + <div style="border-radius: 4px" class="condition-style">
  62 + <template
  63 + v-for="(item, index) in isUpdate == false
  64 + ? addConditionPushData
  65 + : editConditionPushData"
  66 + :key="index"
  67 + >
  68 + <span style="display: none">{{ item + index }}</span>
  69 + <span style="position: relative; top: 3.2vh; left: 0.5vw"
  70 + >执行条件 {{ index + 1 }}</span
101 71 >
102   - </div>
103   - </div>
104   - </div>
105   - <!-- 执行动作 -->
106   - <div style="height: 5vh"></div>
107   - <div style="border-radius: 4px">
108   - <template
109   - v-for="(item, index) in isUpdate == false ? addActionPushData : editActionPushData"
110   - :key="index"
111   - >
112   - <span style="display: none">{{ item + index }}</span>
113   - <span style="position: relative; top: 4.2vh; left: 0.65vw">执行动作 {{ index + 1 }}</span>
114 72
115   - <div>
116   - <AddActionForm
117   - :editActionFather="isUpdate == false ? 1 : item"
118   - :newActionMapFather="isUpdate == false ? 1 : newActionFilterMap"
119   - :deviceInfo2="getDeviceInfo2"
120   - ref="refActionChild"
121   - />
122   - </div>
123   - <div style="height: 3vh"></div>
124   - </template>
125   - <div
126   - style="
127   - display: flex;
128   - width: 11vw;
129   - height: 4vh;
130   - flex-direction: row;
131   - justify-content: space-between;
132   - "
133   - >
134   - <div style="display: flex; width: 4vw; height: 4vh">
135   - <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addAction"
136   - >新增执行动作</Button
137   - >
  73 + <div>
  74 + <AddConditiForm
  75 + :editConditionFather="isUpdate == false ? 1 : item"
  76 + :newConditionMapFather="isUpdate == false ? 1 : newConditionFilterMap"
  77 + :deviceInfo1="getDeviceInfo1"
  78 + ref="refConditionChild"
  79 + />
  80 + </div>
  81 + <div style="height: 3vh"></div>
  82 + </template>
  83 + <div
  84 + style="
  85 + display: flex;
  86 + width: 11vw;
  87 + height: 4vh;
  88 + flex-direction: row;
  89 + justify-content: space-between;
  90 + "
  91 + >
  92 + <div style="display: flex; width: 4vw; height: 4vh">
  93 + <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addCondition"
  94 + >新增执行条件</Button
  95 + >
  96 + </div>
  97 + <div style="display: flex; width: 4vw; height: 4vh">
  98 + <Button
  99 + v-if="addConditionPushData.length != 0 || editConditionPushData.length != 0"
  100 + style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
  101 + type="default"
  102 + class="mt-5"
  103 + @click="removeCondition"
  104 + >
  105 + <span style="color: white">删除</span></Button
  106 + >
  107 + </div>
138 108 </div>
139   - <div style="display: flex; width: 4vw; height: 4vh">
140   - <Button
141   - v-if="addActionPushData.length !== 0 || editActionPushData.length !== 0"
142   - style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
143   - type="default"
144   - class="mt-5"
145   - @click="removeAction"
146   - >
147   - <span style="color: white">删除</span></Button
  109 + </div>
  110 + <!-- 执行动作 -->
  111 + <div style="height: 5vh"></div>
  112 + <div style="border-radius: 4px">
  113 + <template
  114 + v-for="(item, index) in isUpdate == false ? addActionPushData : editActionPushData"
  115 + :key="index"
  116 + >
  117 + <span style="display: none">{{ item + index }}</span>
  118 + <span style="position: relative; top: 4.2vh; left: 0.65vw"
  119 + >执行动作 {{ index + 1 }}</span
148 120 >
  121 +
  122 + <div>
  123 + <AddActionForm
  124 + :editActionFather="isUpdate == false ? 1 : item"
  125 + :newActionMapFather="isUpdate == false ? 1 : newActionFilterMap"
  126 + :deviceInfo2="getDeviceInfo2"
  127 + ref="refActionChild"
  128 + />
  129 + </div>
  130 + <div style="height: 3vh"></div>
  131 + </template>
  132 + <div
  133 + style="
  134 + display: flex;
  135 + width: 11vw;
  136 + height: 4vh;
  137 + flex-direction: row;
  138 + justify-content: space-between;
  139 + "
  140 + >
  141 + <div style="display: flex; width: 4vw; height: 4vh">
  142 + <Button type="primary" style="border-radius: 2px" class="mt-5" @click="addAction"
  143 + >新增执行动作</Button
  144 + >
  145 + </div>
  146 + <div style="display: flex; width: 4vw; height: 4vh">
  147 + <Button
  148 + v-if="addActionPushData.length !== 0 || editActionPushData.length !== 0"
  149 + style="border-radius: 2px; background-color: rgba(237, 111, 111, 1)"
  150 + type="default"
  151 + class="mt-5"
  152 + @click="removeAction"
  153 + >
  154 + <span style="color: white">删除</span></Button
  155 + >
  156 + </div>
149 157 </div>
  158 + <div style="height: 5vh"></div>
150 159 </div>
151   - <div style="height: 5vh"></div>
152 160 </div>
153   - </div>
154   - </BasicDrawer>
  161 + </BasicDrawer>
  162 + </div>
155 163 </template>
156 164 <script lang="ts">
157 165 import { defineComponent, ref, computed, unref, reactive, getCurrentInstance, watch } from 'vue';
... ... @@ -182,7 +190,7 @@
182 190 },
183 191 emits: ['success', 'register', 'registerForm'],
184 192 setup(_, { emit }) {
185   - const { proxy } = getCurrentInstance();
  193 + const { proxy } = getCurrentInstance() as any;
186 194 const lastEditRefTriggerChildDataArray = ref<[]>([]);
187 195 const lastRefTriggerChildDataArray = ref<[]>([]);
188 196 const lastRefConditionChildDataArray = ref<[]>([]);
... ... @@ -301,7 +309,6 @@
301 309 }
302 310 } else {
303 311 try {
304   - emit('success');
305 312 kongTriggerObj = {};
306 313 kongConditionObj = {};
307 314 kongActionObj = {};
... ... @@ -364,6 +371,7 @@
364 371 }
365 372 });
366 373 });
  374 + emit('success');
367 375 } catch (e) {
368 376 return e;
369 377 }
... ... @@ -464,7 +472,7 @@
464 472 let newTriggerArray = addTriggerPushData.value.concat(refTriggerChildData);
465 473 let newConditionArray = addConditionPushData.value.concat(refConditionChildData);
466 474 let newActionArray = addActionPushData.value.concat(refActionChildData);
467   - (newTriggerArray as any) = newTriggerArray.map((m) => {
  475 + (newTriggerArray as any) = newTriggerArray.map((m: any) => {
468 476 return {
469 477 triggerType: m?.triggerType,
470 478 entityId: m?.entityId || m?.entityId1 || m?.entityId2,
... ... @@ -492,7 +500,7 @@
492 500 },
493 501 };
494 502 });
495   - (newConditionArray as any) = newConditionArray.map((m) => {
  503 + (newConditionArray as any) = newConditionArray.map((m: any) => {
496 504 return {
497 505 triggerType: m?.triggerType,
498 506 entityId: m?.entityId,
... ... @@ -597,7 +605,6 @@
597 605 getAllFormData.doActions.forEach((f) => {
598 606 isKongNum = Object.keys(f).length;
599 607 });
600   -
601 608 if (getAllFormData.doActions.length == 1 && isKongNum == 0)
602 609 return createMessage.error('请填写执行动作');
603 610 Object.assign(getAllFormData, getValuesFormData);
... ... @@ -626,7 +633,7 @@
626 633 if (!unref(isUpdate)) {
627 634 refTriggerChildDataFunc();
628 635 unref(addTriggerPushData).push(refTriggerChildData as never);
629   - (addTriggerPushData.value as any) = addTriggerPushData.value.map((m) => {
  636 + (addTriggerPushData.value as any) = addTriggerPushData.value.map((m: any) => {
630 637 return {
631 638 triggerType: m?.triggerType,
632 639 entityId: m?.entityId || m?.entityId1 || m?.entityId2,
... ... @@ -644,7 +651,7 @@
644 651 value: {
645 652 defaultValue: Number(m.value) == null ? 0 : Number(m.value),
646 653 },
647   - operation: m.operation == null ? 'GREATER_OR_EQUAL' : m.operation,
  654 + operation: m.operation == null ? 'EQUAL' : m.operation,
648 655 },
649 656 },
650 657 ],
... ... @@ -684,7 +691,7 @@
684 691 value: {
685 692 defaultValue: Number(m.value) == null ? 0 : Number(m.value),
686 693 },
687   - operation: m.operation == null ? 'GREATER_OR_EQUAL' : m.operation,
  694 + operation: m.operation == null ? 'EQUAL' : m.operation,
688 695 },
689 696 },
690 697 ],
... ... @@ -725,7 +732,7 @@
725 732 if (!unref(isUpdate)) {
726 733 refConditionChildDataFunc();
727 734 unref(addConditionPushData).push(refConditionChildData as never);
728   - (addConditionPushData.value as any) = addConditionPushData.value.map((m) => {
  735 + (addConditionPushData.value as any) = addConditionPushData.value.map((m: any) => {
729 736 return {
730 737 triggerType: m?.triggerType,
731 738 entityId: m?.entityId,
... ...