Commit 1c479be841109c1dfaa4dd26a07fe6f3d3a67272

Authored by xp.Huang
2 parents 3aa5b0f1 128d206d

Merge branch 'fix/DEFECT-1618' into 'main_dev'

fix: 修复场景联动,数据流转,报表配置处于启用中,禁用操作

See merge request yunteng/thingskit-front!914
... ... @@ -3,24 +3,26 @@
3 3 <a-input
4 4 placeholder="请输入参数key"
5 5 v-model:value="param.label"
  6 + :disabled="disabled"
6 7 style="width: 38%; margin-bottom: 5px"
7 8 @change="emitChange"
8 9 />
9 10 <a-input
10 11 placeholder="请输入参数value"
  12 + :disabled="disabled"
11 13 v-model:value="param.value"
12 14 style="width: 38%; margin: 0 0 5px 60px"
13 15 @change="emitChange"
14 16 />
15 17 <MinusCircleOutlined
16   - v-if="dynamicInput.params.length > min"
  18 + v-if="dynamicInput.params.length > min && !disabled"
17 19 class="dynamic-delete-button"
18 20 @click="remove(param)"
19 21 style="width: 50px"
20 22 />
21 23 </div>
22 24 <div>
23   - <a-button type="dashed" style="width: 38%" @click="add">
  25 + <a-button :disabled="disabled" type="dashed" style="width: 38%" @click="add">
24 26 <PlusOutlined />
25 27 新增
26 28 </a-button>
... ... @@ -49,11 +51,17 @@
49 51 value: propTypes.object.def({}),
50 52 //自定义删除按钮多少才会显示
51 53 min: propTypes.integer.def(0),
  54 + disabled: {
  55 + type: Boolean,
  56 + default: false,
  57 + },
52 58 },
53 59 emits: ['change', 'update:value'],
54 60 setup(props, { emit }) {
55 61 //input动态数据
56 62 const dynamicInput: UnwrapRef<{ params: Params[] }> = reactive({ params: [] });
  63 +
  64 + console.log(dynamicInput, 'dynamicInput');
57 65 //删除Input
58 66 const remove = (item: Params) => {
59 67 let index = dynamicInput.params.indexOf(item);
... ... @@ -63,6 +71,11 @@
63 71 emitChange();
64 72 };
65 73
  74 + // const disabled = computed(() => {
  75 + // const { disabled } = props || {};
  76 + // return disabled;
  77 + // });
  78 +
66 79 //新增Input
67 80 const add = () => {
68 81 dynamicInput.params.push({
... ... @@ -108,6 +121,7 @@
108 121 emitChange,
109 122 remove,
110 123 add,
  124 + // disabled,
111 125 };
112 126 },
113 127 });
... ...
... ... @@ -37,6 +37,7 @@
37 37 const getBindProps = computed<Recordable>(() => {
38 38 const { value, apiTreeSelectProps = {} } = props;
39 39 const { params = {} } = apiTreeSelectProps;
  40 + console.log(props, 'props');
40 41 return {
41 42 replaceFields: { children: 'children', key: 'id', title: 'name', value: 'id' },
42 43 getPopupContainer: () => document.body,
... ...
... ... @@ -14,7 +14,11 @@
14 14 <!-- 设备选择 -->
15 15 <template #devices="{ model }">
16 16 <span class="hidden">{{ handleChangeOrg(model['organizationId']) }}</span>
17   - <SelectDevice ref="selectDeviceRef" :selectOptions="selectOptions" />
  17 + <SelectDevice
  18 + ref="selectDeviceRef"
  19 + :selectOptions="selectOptions"
  20 + v-model:disabled="deviceDisabled"
  21 + />
18 22 </template>
19 23 </BasicForm>
20 24 </BasicDrawer>
... ... @@ -82,12 +86,14 @@
82 86 }
83 87 );
84 88
85   - const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
86   - labelWidth: 120,
87   - schemas: formSchema,
88   - showActionButtonGroup: false,
89   - fieldMapToTime: [[SchemaFiled.DATE_RANGE, [SchemaFiled.START_TS, SchemaFiled.END_TS]]],
90   - });
  89 + const [registerForm, { validate, resetFields, setFieldsValue, updateSchema, setProps }] = useForm(
  90 + {
  91 + labelWidth: 120,
  92 + schemas: formSchema,
  93 + showActionButtonGroup: false,
  94 + fieldMapToTime: [[SchemaFiled.DATE_RANGE, [SchemaFiled.START_TS, SchemaFiled.END_TS]]],
  95 + }
  96 + );
91 97
92 98 const businessText = ref('');
93 99
... ... @@ -95,11 +101,27 @@
95 101 data: {},
96 102 });
97 103
  104 + const deviceDisabled = ref<boolean>(false);
  105 +
98 106 const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
99 107 try {
100 108 await nextTick();
101 109 handleClose();
102 110 businessText.value = data.text;
  111 + if (businessText.value == BusinessReportConfigTextEnum.BUSINESS_VIEW_TEXT) {
  112 + deviceDisabled.value = true;
  113 + setProps({ disabled: true });
  114 + updateSchema({
  115 + field: 'organizationId',
  116 + componentProps: { apiTreeSelectProps: { disabled: true } },
  117 + });
  118 + } else {
  119 + deviceDisabled.value = false;
  120 + updateSchema({
  121 + field: 'organizationId',
  122 + componentProps: { apiTreeSelectProps: { disabled: false } },
  123 + });
  124 + }
103 125 setFieldsValue(setDefaultTime());
104 126 updateSchema(disableCustomWeekly(BusinessExecutewayEnum.BUSINESS_EXECUTEWAY_IMMEDIATE));
105 127 setDrawerProps(setPropsForModal(businessText.value));
... ...
... ... @@ -11,6 +11,7 @@
11 11 v-model:value="param.attributes"
12 12 style="width: 38%; margin-left: 1.8vw"
13 13 :options="selectOptions"
  14 + :disabled="disabled"
14 15 @change="emitChange"
15 16 mode="multiple"
16 17 allowClear
... ... @@ -31,6 +32,10 @@
31 32
32 33 const props = defineProps({
33 34 value: propTypes.object.def({}),
  35 + disabled: {
  36 + type: Boolean,
  37 + required: false,
  38 + },
34 39 });
35 40
36 41 const selectOptions: any = ref([]);
... ...
... ... @@ -5,11 +5,17 @@
5 5 style="width: 100%"
6 6 :options="selectOptions"
7 7 @change="handleDeviceChange"
  8 + :disabled="disabled"
8 9 mode="multiple"
9 10 labelInValue
10 11 />
11 12 <template v-for="(item, index) in deviceList" :key="item.value">
12   - <SelectAttributes :ref="bindDeviceRef.deviceAttrRef" :value="item" :index="index" />
  13 + <SelectAttributes
  14 + :ref="bindDeviceRef.deviceAttrRef"
  15 + :value="item"
  16 + :index="index"
  17 + :disabled="disabled"
  18 + />
13 19 </template>
14 20 </template>
15 21 <script lang="ts" setup name="SelectDevice">
... ... @@ -23,6 +29,10 @@
23 29 type: Array as PropType<TSelectOption[]>,
24 30 required: true,
25 31 },
  32 + disabled: {
  33 + type: Boolean,
  34 + required: false,
  35 + },
26 36 });
27 37
28 38 const selectValue = ref([]);
... ...
... ... @@ -41,7 +41,6 @@
41 41 const [register, { setModalProps, closeModal }] = useModalInner(async (data) => {
42 42 setModalProps({ loading: true });
43 43 const { text, record } = data || {};
44   - console.log(data, 'data');
45 44 isUpdate.value = record ? true : false;
46 45 ruleTile.value = text;
47 46 const { name, additionalInfo, debugMode } = record || {};
... ...
... ... @@ -4,18 +4,21 @@
4 4 <template #uploadFilesSlot="{ model }">
5 5 <UploadFile
6 6 :url="credentialsFile.caCertFileName"
  7 + :disabled="disabled"
7 8 @fileUrlEmit="handleFileUrlEmitH"
8 9 v-show="model['type'] === CredentialsEnum.IS_PEM"
9 10 />
10 11 <div class="h-4"></div>
11 12 <UploadFile
12 13 :url="credentialsFile.certFileName"
  14 + :disabled="disabled"
13 15 @fileUrlEmit="handleFileUrlEmitC"
14 16 v-show="model['type'] === CredentialsEnum.IS_PEM"
15 17 />
16 18 <div class="h-4"></div>
17 19 <UploadFile
18 20 :url="credentialsFile.privateKeyFileName"
  21 + :disabled="disabled"
19 22 @fileUrlEmit="handleFileUrlEmitB"
20 23 v-show="model['type'] === CredentialsEnum.IS_PEM"
21 24 /> </template
... ... @@ -23,7 +26,7 @@
23 26 </div>
24 27 </template>
25 28 <script lang="ts" setup name="DataFlowMethodIsApi">
26   - import { reactive } from 'vue';
  29 + import { reactive, ref } from 'vue';
27 30 import { BasicForm, useForm } from '/@/components/Form';
28 31 import { modeApiForm } from './config';
29 32 import { modelFormPublicConfig } from '../../../dataflowmodal/config';
... ... @@ -36,10 +39,11 @@
36 39 privateKeyFileName: undefined,
37 40 });
38 41
39   - const [register, { validateFields, setFieldsValue, resetFields }] = useForm({
40   - schemas: modeApiForm,
41   - ...modelFormPublicConfig,
42   - });
  42 + const [register, { validateFields, setFieldsValue, resetFields, setProps, updateSchema }] =
  43 + useForm({
  44 + schemas: modeApiForm,
  45 + ...modelFormPublicConfig,
  46 + });
43 47
44 48 const handleFileUrlEmitH = (fileUrl) => (credentialsFile.caCertFileName = fileUrl);
45 49
... ... @@ -78,10 +82,24 @@
78 82 };
79 83
80 84 const resetValue = () => resetFields();
  85 +
  86 + const disabled = ref<boolean>(false);
  87 + const setDisabledProps = (value) => {
  88 + setProps(value);
  89 + disabled.value = true;
  90 + updateSchema({ field: 'headers', componentProps: { disabled: false } });
  91 + };
  92 +
  93 + const setCancelDisabled = () => {
  94 + updateSchema({ field: 'headers', componentProps: { disabled: false } });
  95 + };
  96 +
81 97 defineExpose({
82 98 getValue,
83 99 setValue,
84 100 resetValue,
  101 + setDisabledProps,
  102 + setCancelDisabled,
85 103 });
86 104 </script>
87 105
... ...
... ... @@ -29,7 +29,7 @@ class ApiFormPartialConfig {
29 29 return [
30 30 { label: 'Anonymous', value: 'anonymous' },
31 31 { label: 'Basic', value: 'basic' },
32   - { label: 'PEM', value: 'pem' },
  32 + { label: 'PEM', value: 'cert.PEM' },
33 33 ];
34 34 }
35 35 }
... ...
... ... @@ -8,7 +8,7 @@
8 8 import { modelKafkaForm } from './config';
9 9 import { modelFormPublicConfig } from '../../../dataflowmodal/config';
10 10
11   - const [register, { validate, setFieldsValue, resetFields }] = useForm({
  11 + const [register, { validate, setFieldsValue, resetFields, setProps, updateSchema }] = useForm({
12 12 schemas: modelKafkaForm,
13 13 ...modelFormPublicConfig,
14 14 });
... ... @@ -19,13 +19,28 @@
19 19 return values;
20 20 };
21 21
22   - const setValue = (value) => setFieldsValue(value);
  22 + const setValue = (value) => {
  23 + setFieldsValue(value);
  24 + };
  25 +
  26 + // 禁用表单
  27 + const setDisabledProps = (value) => {
  28 + setProps(value);
  29 + updateSchema({ field: 'otherProperties', componentProps: { disabled: true } });
  30 + };
  31 +
  32 + // 取消禁用
  33 + const setCancelDisabled = () => {
  34 + updateSchema({ field: 'otherProperties', componentProps: { disabled: false } });
  35 + };
23 36
24 37 const resetValue = () => resetFields();
25 38 defineExpose({
26 39 getValue,
27 40 setValue,
28 41 resetValue,
  42 + setDisabledProps,
  43 + setCancelDisabled,
29 44 });
30 45 </script>
31 46
... ...
... ... @@ -4,18 +4,21 @@
4 4 <template #uploadFilesSlot="{ model }">
5 5 <UploadFile
6 6 :url="credentialsFile.caCertFileName"
  7 + :disabled="disabled"
7 8 @fileUrlEmit="handleFileUrlEmitH"
8 9 v-show="model['type'] === CredentialsEnum.IS_PEM"
9 10 />
10 11 <div class="h-4"></div>
11 12 <UploadFile
12 13 :url="credentialsFile.certFileName"
  14 + :disabled="disabled"
13 15 @fileUrlEmit="handleFileUrlEmitC"
14 16 v-show="model['type'] === CredentialsEnum.IS_PEM"
15 17 />
16 18 <div class="h-4"></div>
17 19 <UploadFile
18 20 :url="credentialsFile.privateKeyFileName"
  21 + :disabled="disabled"
19 22 @fileUrlEmit="handleFileUrlEmitB"
20 23 v-show="model['type'] === CredentialsEnum.IS_PEM"
21 24 />
... ... @@ -24,7 +27,7 @@
24 27 </div>
25 28 </template>
26 29 <script lang="ts" setup name="DataFlowMethodIsMqtt">
27   - import { reactive } from 'vue';
  30 + import { reactive, ref } from 'vue';
28 31 import { BasicForm, useForm } from '/@/components/Form';
29 32 import { modeMqttForm } from './config';
30 33 import { UploadFile } from '../../../uploadfile';
... ... @@ -37,7 +40,7 @@
37 40 privateKeyFileName: undefined,
38 41 });
39 42
40   - const [register, { validateFields, setFieldsValue, resetFields }] = useForm({
  43 + const [register, { validateFields, setFieldsValue, resetFields, setProps }] = useForm({
41 44 schemas: modeMqttForm,
42 45 ...modelFormPublicConfig,
43 46 });
... ... @@ -81,11 +84,18 @@
81 84 });
82 85 };
83 86
  87 + const disabled = ref<boolean>(false);
  88 + const setDisabledProps = (value) => {
  89 + setProps(value);
  90 + disabled.value = true;
  91 + };
  92 +
84 93 const resetValue = () => resetFields();
85 94 defineExpose({
86 95 getValue,
87 96 setValue,
88 97 resetValue,
  98 + setDisabledProps,
89 99 });
90 100 </script>
91 101
... ...
... ... @@ -145,7 +145,6 @@ export const modeMqttForm: FormSchema[] = [
145 145 options: MqttFormPartialConfig.getType(),
146 146 onChange(e) {
147 147 if (e) {
148   - console.log('执行');
149 148 setFieldsValue({
150 149 password: undefined,
151 150 username: undefined,
... ...
... ... @@ -8,10 +8,11 @@
8 8 import { modeRabbitMqForm } from './config';
9 9 import { modelFormPublicConfig } from '../../../dataflowmodal/config';
10 10
11   - const [register, { validateFields, setFieldsValue, resetFields }] = useForm({
12   - schemas: modeRabbitMqForm,
13   - ...modelFormPublicConfig,
14   - });
  11 + const [register, { validateFields, setFieldsValue, resetFields, setProps, updateSchema }] =
  12 + useForm({
  13 + schemas: modeRabbitMqForm,
  14 + ...modelFormPublicConfig,
  15 + });
15 16
16 17 const getValue = async () => {
17 18 const values = await validateFields();
... ... @@ -22,10 +23,22 @@
22 23 const setValue = (value) => setFieldsValue(value);
23 24
24 25 const resetValue = () => resetFields();
  26 +
  27 + const setDisabledProps = (value) => {
  28 + setProps(value);
  29 + updateSchema({ field: 'clientProperties', componentProps: { disabled: true } });
  30 + };
  31 +
  32 + const setCancelDisabled = () => {
  33 + updateSchema({ field: 'clientProperties', componentProps: { disabled: false } });
  34 + };
  35 +
25 36 defineExpose({
26 37 getValue,
27 38 setValue,
28 39 resetValue,
  40 + setDisabledProps,
  41 + setCancelDisabled,
29 42 });
30 43 </script>
31 44 <style lang="less" scoped></style>
... ...
... ... @@ -25,7 +25,7 @@
25 25
26 26 const emit = defineEmits(['currentDataFlowMethodEmitNext']);
27 27
28   - const [register, { validateFields, setFieldsValue, resetFields }] = useForm({
  28 + const [register, { validateFields, setFieldsValue, resetFields, setProps }] = useForm({
29 29 schemas: modeForm(props.saveContent),
30 30 ...modelFormPublicConfig,
31 31 });
... ... @@ -66,6 +66,7 @@
66 66 getValue,
67 67 setValue,
68 68 resetValue,
  69 + setProps,
69 70 });
70 71 </script>
71 72 <style lang="less" scoped>
... ...
... ... @@ -74,6 +74,9 @@
74 74 resetValue();
75 75 const { text, record } = data;
76 76 businessText.value = text;
  77 + if (businessText.value == BusinessDataFlowTextEnum.BUSINESS_MODAL_VIEW_TEXT) {
  78 + dataFlowMethodRef.value?.setProps({ disabled: true });
  79 + }
77 80 restData.data = record;
78 81 setModalProps(modalProps(businessText.value));
79 82 if (!record) return;
... ... @@ -161,6 +164,12 @@
161 164
162 165 //下一步
163 166 const handleNextDataFlowParams = async (value) => {
  167 + //判断是否是查看 查看禁用表单
  168 + if (businessText.value == BusinessDataFlowTextEnum.BUSINESS_MODAL_VIEW_TEXT) {
  169 + dataFlowParamsRef.value?.setProps();
  170 + } else {
  171 + dataFlowParamsRef.value?.setCancelDisabled();
  172 + }
164 173 value
165 174 .then(async (res) => {
166 175 currentStep.value = 1;
... ...
... ... @@ -104,10 +104,35 @@
104 104 if (!findDateFlow) return;
105 105 findDateFlow[3](0);
106 106 };
  107 +
  108 + const setProps = async () => {
  109 + await nextTick();
  110 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_KAFKA &&
  111 + dataFlowMethodIsKafkaRef.value?.setDisabledProps({ disabled: true });
  112 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_MQTT &&
  113 + dataFlowMethodIsMqttRef.value?.setDisabledProps({ disabled: true });
  114 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_RABBITMQ &&
  115 + dataFlowMethodIsRabbitMqRef.value?.setDisabledProps({ disabled: true });
  116 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_REST_API &&
  117 + dataFlowMethodIsApiRef.value?.setDisabledProps({ disabled: true });
  118 + };
  119 +
  120 + const setCancelDisabled = async () => {
  121 + await nextTick();
  122 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_KAFKA &&
  123 + dataFlowMethodIsKafkaRef.value?.setCancelDisabled();
  124 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_RABBITMQ &&
  125 + dataFlowMethodIsRabbitMqRef.value?.setCancelDisabled();
  126 + props.dataFlowType === BusinessDataFlowMethodEnum.DATAFLOW_METHOD_REST_API &&
  127 + dataFlowMethodIsApiRef.value?.setCancelDisabled();
  128 + };
  129 +
107 130 defineExpose({
108 131 getValue,
109 132 setValue,
110 133 resetValue,
  134 + setCancelDisabled,
  135 + setProps,
111 136 });
112 137 </script>
113 138 <style lang="less" scoped>
... ...
... ... @@ -3,6 +3,7 @@
3 3 <a-upload-dragger
4 4 v-model:fileList="fileList.list"
5 5 name="file"
  6 + :disabled="disabled"
6 7 :multiple="false"
7 8 @change="handleChange($event)"
8 9 :before-upload="() => false"
... ... @@ -37,6 +38,10 @@
37 38 type: String,
38 39 default: '',
39 40 },
  41 + disabled: {
  42 + type: Boolean,
  43 + default: false,
  44 + },
40 45 });
41 46
42 47 const emit = defineEmits(['fileUrlEmit']);
... ...
... ... @@ -153,11 +153,14 @@
153 153 let getActionFormValue = ref([]);
154 154 const editEntryIdData = ref([]);
155 155 const editAlarmConfigData = ref([]);
156   - const isUpdate = ref(false);
  156 + const isUpdate = ref<boolean | number>(false);
157 157 const id = ref(undefined);
158 158 const tenantId = ref(undefined);
159 159 const isView = ref(true);
160   - const [registerForm, { resetFields, validate, setFieldsValue, getFieldsValue }] = useForm({
  160 + const [
  161 + registerForm,
  162 + { resetFields, validate, setFieldsValue, getFieldsValue, setProps, updateSchema },
  163 + ] = useForm({
161 164 labelWidth: 120,
162 165 schemas: formSchema,
163 166 showActionButtonGroup: false,
... ... @@ -532,6 +535,37 @@
532 535 showFooter: unref(isView),
533 536 loading: false,
534 537 });
  538 +
  539 + if (isUpdate.value == 3) {
  540 + setProps({ disabled: true });
  541 + updateSchema({
  542 + field: 'organizationId',
  543 + componentProps: { apiTreeSelectProps: { disabled: true } },
  544 + });
  545 + await nextTick();
  546 + unref(skipUnwrap.triggerItemRefs)?.forEach((item) => {
  547 + item.setDisabledProps({ disabled: true });
  548 + });
  549 +
  550 + unref(skipUnwrap.conditionItemRefs)?.forEach((item) => {
  551 + item.setDisabledProps({ disabled: true });
  552 + });
  553 +
  554 + unref(skipUnwrap.actionItemRefs)?.forEach((item) => {
  555 + item.setDisabledProps({ disabled: true });
  556 + });
  557 + } else {
  558 + updateSchema({
  559 + field: 'organizationId',
  560 + componentProps: { apiTreeSelectProps: { disabled: false } },
  561 + });
  562 + unref(skipUnwrap.triggerItemRefs)?.forEach((item) => {
  563 + item.setCancelDisabled();
  564 + });
  565 + unref(skipUnwrap.conditionItemRefs)?.forEach((item) => {
  566 + item.setCancelDisabled();
  567 + });
  568 + }
535 569 });
536 570
537 571 // 设置设备的options
... ...
... ... @@ -29,6 +29,7 @@
29 29 <template #operationType="{ model, field }">
30 30 <Select
31 31 :options="options"
  32 + :disabled="disabled"
32 33 v-model:value="model[field]"
33 34 @change="operationType = model[field]"
34 35 placeholder="请选择比较类型"
... ... @@ -39,6 +40,7 @@
39 40 <Input v-model:value="model[field]" placeholder="请输入持续时间">
40 41 <template #addonAfter>
41 42 <Select
  43 + :disabled="disabled"
42 44 v-model:value="model[`timeUnit`]"
43 45 :options="timeUnitOptions"
44 46 style="width: 60px"
... ... @@ -58,7 +60,7 @@
58 60 </div>
59 61 </template>
60 62 <script lang="ts" setup>
61   - import { ref, provide, nextTick } from 'vue';
  63 + import { ref, provide, nextTick, unref } from 'vue';
62 64 import { CollapseContainer } from '/@/components/Container/index';
63 65 import { BasicForm, useForm } from '/@/components/Form/index';
64 66 import { Card, Select, Input, Tooltip } from 'ant-design-vue';
... ... @@ -86,12 +88,13 @@
86 88 const emit = defineEmits(['delete']);
87 89 const isUpdate = ref(false);
88 90 const conditionScreeningRef = ref();
89   - const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue }] = useForm({
90   - //TODO-wenwei-修复
91   - schemas: cloneDeep(trigger_condition_schema),
92   - //TODO-wenwei-修复
93   - showActionButtonGroup: false,
94   - });
  91 + const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue, setProps }] =
  92 + useForm({
  93 + //TODO-wenwei-修复
  94 + schemas: cloneDeep(trigger_condition_schema),
  95 + //TODO-wenwei-修复
  96 + showActionButtonGroup: false,
  97 + });
95 98
96 99 const alarmScheduleRef = ref<InstanceType<typeof AlarmSchedule>>();
97 100 const getFieldsValueFunc = () => {
... ... @@ -144,6 +147,7 @@
144 147 const currentIndex = ref(0);
145 148 const [registerModal, { openModal }] = useModal();
146 149 const handleScheduleChange = (value) => {
  150 + if (unref(disabled)) return;
147 151 const index = scheduleOptions.findIndex((item) => item.value === value);
148 152 // 报警日程弹窗
149 153 if (index !== 0) {
... ... @@ -164,6 +168,16 @@
164 168 currentIndex.value = index;
165 169 };
166 170 const scheduleData = ref(null);
  171 +
  172 + const disabled = ref<boolean>(false);
  173 + const setDisabledProps = (value) => {
  174 + setProps(value);
  175 + disabled.value = true;
  176 + };
  177 +
  178 + const setCancelDisabled = () => {
  179 + disabled.value = false;
  180 + };
167 181 defineExpose({
168 182 getFieldsValue,
169 183 updateFieldDeviceId,
... ... @@ -182,6 +196,8 @@
182 196 isUpdate,
183 197 alarmScheduleRef,
184 198 updateFieldAttributeFunc,
  199 + setDisabledProps,
  200 + setCancelDisabled,
185 201 });
186 202 </script>
187 203 <style>
... ...
... ... @@ -31,8 +31,11 @@
31 31 const emit = defineEmits(['deleteConditionForm']);
32 32 const operationType = inject('operationType');
33 33 let schemas = ref([]);
  34 + const isViewDisabledBtn = window.localStorage.getItem('isViewDisabledBtn');
34 35 onMounted(() => {
35 36 schemas.value = isType(operationType.value);
  37 +
  38 + if (isViewDisabledBtn == 'isView') setProps({ disabled: true });
36 39 });
37 40 watch(operationType, (newValue) => {
38 41 schemas.value = isType(newValue);
... ... @@ -47,6 +50,7 @@
47 50 getFieldsValue,
48 51 setFieldsValue,
49 52 validate,
  53 + setProps,
50 54 },
51 55 ] = useForm({
52 56 showActionButtonGroup: false,
... ... @@ -55,6 +59,7 @@
55 59 schemas,
56 60 });
57 61 const deleteConditionForm = (index: number) => {
  62 + if (isViewDisabledBtn == 'isView') return;
58 63 emit('deleteConditionForm', index);
59 64 };
60 65 // ft add
... ...
... ... @@ -8,7 +8,8 @@
8 8 <template v-for="(item, scheduleIndex) in scheduleOptions" :key="item.label">
9 9 <div
10 10 :class="{ 'ml-4': scheduleIndex >= 1, active: scheduleIndex === currentIndex }"
11   - class="cursor-pointer"
  11 + class="cursor-pointer !p-0"
  12 + :disabled="disabled"
12 13 @click="handleScheduleChange(item.value)"
13 14 >{{ item.label }}</div
14 15 >
... ... @@ -28,6 +29,7 @@
28 29 <template #operationType="{ model, field }">
29 30 <Select
30 31 :options="options"
  32 + :disabled="disabled"
31 33 v-model:value="model[field]"
32 34 @change="operationType = model[field]"
33 35 placeholder="请选择比较类型"
... ... @@ -38,6 +40,7 @@
38 40 <Input v-model:value="model[field]" placeholder="请输入持续时间">
39 41 <template #addonAfter>
40 42 <Select
  43 + :disabled="disabled"
41 44 v-model:value="model[`timeUnit`]"
42 45 :options="timeUnitOptions"
43 46 style="width: 60px"
... ... @@ -71,6 +74,7 @@
71 74 import { Icon } from '/@/components/Icon';
72 75 import { useModal } from '/@/components/Modal';
73 76 import { useMessage } from '/@/hooks/web/useMessage';
  77 + import { unref } from 'vue';
74 78
75 79 const { useByProductGetAttribute } = useCommonFun();
76 80 defineProps({
... ... @@ -92,12 +96,13 @@
92 96
93 97 const isUpdate = ref(false);
94 98 const conditionScreeningRef = ref();
95   - const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue }] = useForm({
96   - //TODO-wenwei-修复
97   - schemas: cloneDeep(trigger_condition_schema),
98   - //TODO-wenwei-修复
99   - showActionButtonGroup: false,
100   - });
  99 + const [registerForm, { resetFields, getFieldsValue, updateSchema, setFieldsValue, setProps }] =
  100 + useForm({
  101 + //TODO-wenwei-修复
  102 + schemas: cloneDeep(trigger_condition_schema),
  103 + //TODO-wenwei-修复
  104 + showActionButtonGroup: false,
  105 + });
101 106
102 107 const alarmScheduleRef = ref<InstanceType<typeof AlarmSchedule>>();
103 108
... ... @@ -168,6 +173,7 @@
168 173 };
169 174 //TODO-fengtao
170 175 const handleDelete = (params: { index: number; title: string }) => {
  176 + if (unref(disabled)) return;
171 177 emit('delete', params);
172 178 };
173 179 const operationType = ref<string>('');
... ... @@ -192,6 +198,7 @@
192 198 const [registerModal, { openModal }] = useModal();
193 199 const currentIndex = ref(0);
194 200 const handleScheduleChange = (value) => {
  201 + if (unref(disabled)) return;
195 202 const index = scheduleOptions.findIndex((item) => item.value === value);
196 203 // 报警日程弹窗
197 204 if (index !== 0) {
... ... @@ -223,6 +230,16 @@
223 230 // console.log(alarmConfigList);
224 231 };
225 232
  233 + const disabled = ref<boolean>(false);
  234 + const setDisabledProps = (value) => {
  235 + setProps(value);
  236 + disabled.value = true;
  237 + };
  238 +
  239 + const setCancelDisabled = () => {
  240 + disabled.value = false;
  241 + };
  242 +
226 243 defineExpose({
227 244 getFieldsValueFunc,
228 245 updateFieldDeviceId,
... ... @@ -240,6 +257,8 @@
240 257 updateFieldAttributeFunc,
241 258 updateFieldAlarmConfig,
242 259 updateEditFieldAlarmConfig,
  260 + setDisabledProps,
  261 + setCancelDisabled,
243 262 });
244 263 </script>
245 264
... ...
... ... @@ -13,6 +13,7 @@
13 13 <BasicForm @register="registerAction">
14 14 <template #outTarget="{ model, field }">
15 15 <Select
  16 + :disabled="disabled"
16 17 :options="options"
17 18 v-model:value="model[field]"
18 19 @change="changeOutTarget"
... ... @@ -24,6 +25,7 @@
24 25 <template #alarmConfigSlot="{ model, field }">
25 26 <a-select
26 27 allowClear
  28 + :disabled="disabled"
27 29 placeholder="请选择告警配置"
28 30 v-model:value="model[field]"
29 31 style="width: 205px; margin-left: 10px"
... ... @@ -41,14 +43,22 @@
41 43 </template>
42 44 <template #doContext="{ model, field }">
43 45 <div v-if="model['transportType'] === TransportTypeEnum.TCP">
44   - <Input v-model:value="model[field]" placeholder="请输入自定义命令" />
  46 + <Input v-model:value="model[field]" :disabled="disabled" placeholder="请输入自定义命令" />
45 47 </div>
46 48 <div
47 49 v-show="model['transportType'] !== TransportTypeEnum.TCP"
48 50 class="flex"
49 51 style="align-items: center"
50 52 >
51   - <div ref="jsoneditorRef" style="height: 100%; width: 100%"></div>
  53 + <div v-show="!disabled" ref="jsoneditorRef" style="height: 100%; width: 100%"></div>
  54 +
  55 + <a-textarea
  56 + v-show="disabled"
  57 + :disabled="true"
  58 + :value="JSON.stringify(disabledValue)"
  59 + :rows="4"
  60 + />
  61 +
52 62 <a-button style="margin: -5px 0" type="text" @click="handlePremitter">格式化</a-button>
53 63 <Tooltip
54 64 :title="
... ... @@ -64,7 +74,9 @@
64 74 </div>
65 75 </template>
66 76 <template #clearAlarm>
67   - <Checkbox v-model:checked="checked" @change="handleCheckedChange"> 清除告警 </Checkbox>
  77 + <Checkbox v-model:checked="checked" :disabled="disabled" @change="handleCheckedChange">
  78 + 清除告警
  79 + </Checkbox>
68 80 <Tooltip title="清除告警与触发器一一对应">
69 81 <QuestionCircleOutlined />
70 82 </Tooltip>
... ... @@ -192,10 +204,11 @@
192 204 const changeOutTarget = () => {
193 205 emit('getActionFormArr');
194 206 };
195   - const [registerAction, { getFieldsValue, resetFields, setFieldsValue, validate }] = useForm({
196   - schemas: actionSchema,
197   - showActionButtonGroup: false,
198   - });
  207 + const [registerAction, { getFieldsValue, resetFields, setFieldsValue, validate, setProps }] =
  208 + useForm({
  209 + schemas: actionSchema,
  210 + showActionButtonGroup: false,
  211 + });
199 212
200 213 // 获取整个执行动作表单值
201 214 const getFieldsValueFunc = () => {
... ... @@ -369,6 +382,7 @@
369 382 };
370 383
371 384 const handleDelete = (actionIndex) => {
  385 + if (unref(disabled)) return;
372 386 emit('deleteAction', actionIndex);
373 387 };
374 388
... ... @@ -404,6 +418,8 @@
404 418 const jsoneditorRef = ref();
405 419 const jsonValue = ref({});
406 420 const jsonInstance = ref();
  421 +
  422 + const disabledValue = ref(); //查看时使用表单全部禁用使用这个来获取表单数据
407 423 onMounted(() => {
408 424 nextTick(() => {
409 425 let options = {
... ... @@ -420,6 +436,7 @@
420 436 const getJsonValue = () => unref(jsonInstance).get();
421 437 const setJsonValue = (Json) => {
422 438 nextTick(() => {
  439 + disabledValue.value = Json;
423 440 unref(jsonInstance).set(Json);
424 441 });
425 442 };
... ... @@ -447,6 +464,23 @@
447 464 emit('getActionFormArr');
448 465 };
449 466
  467 + const disabled = ref<boolean>(false);
  468 + const setDisabledProps = async (value) => {
  469 + setProps(value);
  470 + disabled.value = true;
  471 + await nextTick();
  472 + unref(refItem.clearRuleRefs)?.forEach((item) => {
  473 + item.setDisabledProps(value);
  474 + });
  475 + };
  476 +
  477 + const setCancelDisabled = () => {
  478 + disabled.value = false;
  479 + unref(refItem.clearRuleRefs)?.forEach((item) => {
  480 + item.setCancelDisabled();
  481 + });
  482 + };
  483 +
450 484 defineExpose({
451 485 getFieldsValue,
452 486 getFieldsValueFunc,
... ... @@ -467,6 +501,8 @@
467 501 clearRuleList,
468 502 resetConditionForm,
469 503 handleDropdownVisibleChange,
  504 + setDisabledProps,
  505 + setCancelDisabled,
470 506 });
471 507 </script>
472 508
... ...
... ... @@ -286,6 +286,7 @@ export const useSocket = (dataSourceRef: Ref<WidgetDataType[]>) => {
286 286 throw Error(error as string);
287 287 }
288 288 },
  289 + autoReconnect: true,
289 290 });
290 291
291 292 const initSubscribe = () => {
... ...