Showing
2 changed files
with
51 additions
and
13 deletions
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | <BasicForm @register="registerForm"> |
11 | 11 | <!-- 模板选择 --> |
12 | 12 | <template #templateId="{ model }"> |
13 | + <span style="display: none">{{ getFieldOrg(model['organizationId']) }}</span> | |
13 | 14 | <Select |
14 | 15 | v-model:value="model['templateId']" |
15 | 16 | placeholder="请选择模板" |
... | ... | @@ -35,7 +36,7 @@ |
35 | 36 | </BasicDrawer> |
36 | 37 | </template> |
37 | 38 | <script lang="ts"> |
38 | - import { defineComponent, ref, computed, unref, Ref, onMounted, nextTick } from 'vue'; | |
39 | + import { defineComponent, ref, computed, unref, Ref, onMounted, nextTick, watch } from 'vue'; | |
39 | 40 | import { BasicForm, useForm } from '/@/components/Form'; |
40 | 41 | import { Select } from 'ant-design-vue'; |
41 | 42 | import { formSchema, PC_DEFAULT_CONTENT, PHONE_DEFAULT_CONTENT, Platform } from './center.data'; |
... | ... | @@ -61,11 +62,12 @@ |
61 | 62 | |
62 | 63 | const selectDeviceProfileRef = ref<InstanceType<typeof SelectDeviceProfile>>(); |
63 | 64 | |
64 | - const [registerForm, { validate, setFieldsValue, resetFields, updateSchema }] = useForm({ | |
65 | - labelWidth: 120, | |
66 | - schemas: formSchema, | |
67 | - showActionButtonGroup: false, | |
68 | - }); | |
65 | + const [registerForm, { validate, setFieldsValue, resetFields, updateSchema, clearValidate }] = | |
66 | + useForm({ | |
67 | + labelWidth: 120, | |
68 | + schemas: formSchema, | |
69 | + showActionButtonGroup: false, | |
70 | + }); | |
69 | 71 | |
70 | 72 | const updateEnableTemplate = async (enable: number, disabled: boolean) => { |
71 | 73 | await setFieldsValue({ |
... | ... | @@ -90,6 +92,14 @@ |
90 | 92 | }; |
91 | 93 | }, |
92 | 94 | }); |
95 | + await updateSchema({ | |
96 | + field: 'organizationId', | |
97 | + componentProps: () => { | |
98 | + return { | |
99 | + disabled, | |
100 | + }; | |
101 | + }, | |
102 | + }); | |
93 | 103 | }; |
94 | 104 | |
95 | 105 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
... | ... | @@ -107,6 +117,7 @@ |
107 | 117 | ]; |
108 | 118 | } |
109 | 119 | if (data.record.organizationDTO) { |
120 | + organizationIdStr.value = data.record['organizationId']; | |
110 | 121 | await setFieldsValue(data.record); |
111 | 122 | } else { |
112 | 123 | Reflect.deleteProperty(data.record, 'organizationId'); |
... | ... | @@ -135,16 +146,41 @@ |
135 | 146 | //新增修改 |
136 | 147 | const templateDisabled = ref(false); |
137 | 148 | onMounted(() => { |
138 | - getTemplate({ | |
139 | - page: 1, | |
140 | - pageSize: 30, | |
141 | - }); | |
149 | + getTemplate( | |
150 | + { | |
151 | + page: 1, | |
152 | + pageSize: 30, | |
153 | + }, | |
154 | + null | |
155 | + ); | |
142 | 156 | }); |
143 | 157 | |
144 | 158 | const selectTemplateOptions: Ref<any[]> = ref([]); |
145 | 159 | |
146 | - const getTemplate = async (params: queryPageParams) => { | |
147 | - const { items } = await getPage({ ...params, isTemplate: 1 }); | |
160 | + const organizationIdStr = ref(''); | |
161 | + | |
162 | + const getFieldOrg = (org: string) => (organizationIdStr.value = org); | |
163 | + | |
164 | + watch( | |
165 | + () => organizationIdStr.value, | |
166 | + (newValue) => { | |
167 | + getTemplate( | |
168 | + { | |
169 | + page: 1, | |
170 | + pageSize: 30, | |
171 | + }, | |
172 | + newValue | |
173 | + ); | |
174 | + if (!isUpdate.value) { | |
175 | + setFieldsValue({ | |
176 | + templateId: null, | |
177 | + }); | |
178 | + } | |
179 | + } | |
180 | + ); | |
181 | + | |
182 | + const getTemplate = async (params: queryPageParams, organizationId) => { | |
183 | + const { items } = await getPage({ ...params, isTemplate: 1, organizationId }); | |
148 | 184 | selectTemplateOptions.value = items.map((item) => ({ |
149 | 185 | ...item, |
150 | 186 | label: item.name, |
... | ... | @@ -154,6 +190,7 @@ |
154 | 190 | const selectOptions: Ref<any[]> = ref([]); |
155 | 191 | |
156 | 192 | const handleTemplateChange = async (_, option) => { |
193 | + clearValidate('templateId'); | |
157 | 194 | const { productAndDevice } = option; |
158 | 195 | setFieldsValue({ platform: option?.platform }); |
159 | 196 | await nextTick(); |
... | ... | @@ -249,6 +286,7 @@ |
249 | 286 | createPickerSearch, |
250 | 287 | selectDeviceProfileRef, |
251 | 288 | templateDisabled, |
289 | + getFieldOrg, | |
252 | 290 | }; |
253 | 291 | }, |
254 | 292 | }); | ... | ... |