Commit 3bc28b5e7125776abb1de96c09a6dfeedfee53be
1 parent
73d472e2
fix: DEFECT-534 edit record page seize
Showing
2 changed files
with
81 additions
and
106 deletions
@@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
31 | <script lang="ts"> | 31 | <script lang="ts"> |
32 | import { defineComponent, ref, computed, unref, nextTick } from 'vue'; | 32 | import { defineComponent, ref, computed, unref, nextTick } from 'vue'; |
33 | import { BasicForm, useForm } from '/@/components/Form'; | 33 | import { BasicForm, useForm } from '/@/components/Form'; |
34 | - import { formSchema, manuallyEnter, streamingMediaAcquire } from './config.data'; | 34 | + import { formSchema } from './config.data'; |
35 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 35 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
36 | import { createOrEditCameraManage } from '/@/api/camera/cameraManager'; | 36 | import { createOrEditCameraManage } from '/@/api/camera/cameraManager'; |
37 | import { message, Upload } from 'ant-design-vue'; | 37 | import { message, Upload } from 'ant-design-vue'; |
@@ -49,10 +49,7 @@ | @@ -49,10 +49,7 @@ | ||
49 | 49 | ||
50 | const isUpdate = ref(true); | 50 | const isUpdate = ref(true); |
51 | const editId = ref(''); | 51 | const editId = ref(''); |
52 | - const [ | ||
53 | - registerForm, | ||
54 | - { validate, setFieldsValue, resetFields, removeSchemaByFiled, appendSchemaByField }, | ||
55 | - ] = useForm({ | 52 | + const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ |
56 | labelWidth: 120, | 53 | labelWidth: 120, |
57 | schemas: formSchema, | 54 | schemas: formSchema, |
58 | showActionButtonGroup: false, | 55 | showActionButtonGroup: false, |
@@ -64,19 +61,6 @@ | @@ -64,19 +61,6 @@ | ||
64 | isUpdate.value = !!data?.isUpdate; | 61 | isUpdate.value = !!data?.isUpdate; |
65 | if (unref(isUpdate)) { | 62 | if (unref(isUpdate)) { |
66 | await nextTick(); | 63 | await nextTick(); |
67 | - removeSchemaByFiled([ | ||
68 | - 'videoPlatformId', | ||
69 | - 'streamType', | ||
70 | - 'playProtocol', | ||
71 | - 'sn', | ||
72 | - 'brand', | ||
73 | - 'videoUrl', | ||
74 | - ]); | ||
75 | - if (data.record.accessMode === 0) { | ||
76 | - manuallyEnter.forEach((schema) => appendSchemaByField(schema, undefined)); | ||
77 | - } else { | ||
78 | - streamingMediaAcquire.forEach((schema) => appendSchemaByField(schema, undefined)); | ||
79 | - } | ||
80 | editId.value = data.record.id; | 64 | editId.value = data.record.id; |
81 | tenantLogo.value = data.record?.avatar; | 65 | tenantLogo.value = data.record?.avatar; |
82 | await setFieldsValue(data.record); | 66 | await setFieldsValue(data.record); |
@@ -83,14 +83,70 @@ export const searchFormSchema: FormSchema[] = [ | @@ -83,14 +83,70 @@ export const searchFormSchema: FormSchema[] = [ | ||
83 | }, | 83 | }, |
84 | ]; | 84 | ]; |
85 | 85 | ||
86 | -/** | ||
87 | - * @description 手动输入 | ||
88 | - */ | ||
89 | -export const manuallyEnter: FormSchema[] = [ | 86 | +// 弹框配置项 |
87 | +export const formSchema: QFormSchema[] = [ | ||
88 | + { | ||
89 | + field: 'avatar', | ||
90 | + label: '视频封面', | ||
91 | + slot: 'iconSelect', | ||
92 | + component: 'Input', | ||
93 | + }, | ||
94 | + { | ||
95 | + field: 'name', | ||
96 | + label: '视频名字', | ||
97 | + required: true, | ||
98 | + component: 'Input', | ||
99 | + componentProps: { | ||
100 | + placeholder: '请输入视频名字', | ||
101 | + maxLength: 30, | ||
102 | + }, | ||
103 | + rules: [...CameraMaxLength, { required: true, message: '视频名是必填项' }], | ||
104 | + }, | ||
105 | + { | ||
106 | + field: 'organizationId', | ||
107 | + label: '所属组织', | ||
108 | + required: true, | ||
109 | + component: 'ApiTreeSelect', | ||
110 | + componentProps: { | ||
111 | + api: async () => { | ||
112 | + const data = await getOrganizationList(); | ||
113 | + copyTransFun(data as any as any[]); | ||
114 | + return data; | ||
115 | + }, | ||
116 | + }, | ||
117 | + }, | ||
118 | + { | ||
119 | + label: '视频流获取方式', | ||
120 | + field: 'accessMode', | ||
121 | + component: 'RadioGroup', | ||
122 | + rules: [{ required: true, message: '视频流获取方式为必选项', type: 'number' }], | ||
123 | + defaultValue: AccessMode.ManuallyEnter, | ||
124 | + componentProps({ formActionType }) { | ||
125 | + return { | ||
126 | + defaultValue: AccessMode.ManuallyEnter, | ||
127 | + placeholder: '请选择视频流获取方式', | ||
128 | + options: [ | ||
129 | + { label: '手动输入', value: AccessMode.ManuallyEnter }, | ||
130 | + { label: '流媒体获取', value: AccessMode.Streaming }, | ||
131 | + ], | ||
132 | + onChange() { | ||
133 | + formActionType.setFieldsValue({ | ||
134 | + brand: null, | ||
135 | + sn: null, | ||
136 | + videoUrl: null, | ||
137 | + videoPlatformId: null, | ||
138 | + }); | ||
139 | + }, | ||
140 | + }; | ||
141 | + }, | ||
142 | + }, | ||
90 | { | 143 | { |
91 | field: 'brand', | 144 | field: 'brand', |
92 | label: '视频厂家', | 145 | label: '视频厂家', |
93 | component: 'Input', | 146 | component: 'Input', |
147 | + ifShow({ values }) { | ||
148 | + return values.accessMode === AccessMode.ManuallyEnter; | ||
149 | + }, | ||
94 | componentProps: { | 150 | componentProps: { |
95 | placeholder: '请输入视频厂家', | 151 | placeholder: '请输入视频厂家', |
96 | }, | 152 | }, |
@@ -101,6 +157,9 @@ export const manuallyEnter: FormSchema[] = [ | @@ -101,6 +157,9 @@ export const manuallyEnter: FormSchema[] = [ | ||
101 | required: true, | 157 | required: true, |
102 | component: 'Input', | 158 | component: 'Input', |
103 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], | 159 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], |
160 | + ifShow({ values }) { | ||
161 | + return values.accessMode === AccessMode.ManuallyEnter; | ||
162 | + }, | ||
104 | componentProps: { | 163 | componentProps: { |
105 | placeholder: '请输入摄像头编号', | 164 | placeholder: '请输入摄像头编号', |
106 | }, | 165 | }, |
@@ -110,22 +169,23 @@ export const manuallyEnter: FormSchema[] = [ | @@ -110,22 +169,23 @@ export const manuallyEnter: FormSchema[] = [ | ||
110 | label: '视频流', | 169 | label: '视频流', |
111 | required: true, | 170 | required: true, |
112 | component: 'Input', | 171 | component: 'Input', |
172 | + ifShow({ values }) { | ||
173 | + return values.accessMode === AccessMode.ManuallyEnter; | ||
174 | + }, | ||
113 | componentProps: { | 175 | componentProps: { |
114 | placeholder: '请输入视频流', | 176 | placeholder: '请输入视频流', |
115 | maxLength: 255, | 177 | maxLength: 255, |
116 | }, | 178 | }, |
117 | rules: [...CameraVideoUrl, { required: true, message: '视频流是必填项' }], | 179 | rules: [...CameraVideoUrl, { required: true, message: '视频流是必填项' }], |
118 | }, | 180 | }, |
119 | -]; | ||
120 | 181 | ||
121 | -/** | ||
122 | - * @description 流媒体获取 | ||
123 | - */ | ||
124 | -export const streamingMediaAcquire: FormSchema[] = [ | ||
125 | { | 182 | { |
126 | field: 'videoPlatformId', | 183 | field: 'videoPlatformId', |
127 | label: '流媒体配置', | 184 | label: '流媒体配置', |
128 | component: 'ApiSelect', | 185 | component: 'ApiSelect', |
186 | + ifShow({ values }) { | ||
187 | + return values.accessMode === AccessMode.Streaming; | ||
188 | + }, | ||
129 | componentProps: { | 189 | componentProps: { |
130 | placeholder: '请选择流媒体配置', | 190 | placeholder: '请选择流媒体配置', |
131 | api: getStreamingMediaList, | 191 | api: getStreamingMediaList, |
@@ -138,6 +198,9 @@ export const streamingMediaAcquire: FormSchema[] = [ | @@ -138,6 +198,9 @@ export const streamingMediaAcquire: FormSchema[] = [ | ||
138 | label: '码流', | 198 | label: '码流', |
139 | component: 'RadioGroup', | 199 | component: 'RadioGroup', |
140 | defaultValue: StreamType.MASTER, | 200 | defaultValue: StreamType.MASTER, |
201 | + ifShow({ values }) { | ||
202 | + return values.accessMode === AccessMode.Streaming; | ||
203 | + }, | ||
141 | componentProps: { | 204 | componentProps: { |
142 | placeholder: '请选择码流', | 205 | placeholder: '请选择码流', |
143 | defaultValue: StreamType.MASTER, | 206 | defaultValue: StreamType.MASTER, |
@@ -153,6 +216,10 @@ export const streamingMediaAcquire: FormSchema[] = [ | @@ -153,6 +216,10 @@ export const streamingMediaAcquire: FormSchema[] = [ | ||
153 | label: '播放协议', | 216 | label: '播放协议', |
154 | component: 'RadioGroup', | 217 | component: 'RadioGroup', |
155 | defaultValue: PlayProtocol.HTTP, | 218 | defaultValue: PlayProtocol.HTTP, |
219 | + ifShow({ values }) { | ||
220 | + return values.accessMode === AccessMode.Streaming; | ||
221 | + }, | ||
222 | + helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'], | ||
156 | componentProps: { | 223 | componentProps: { |
157 | placeholder: '请选择播放协议', | 224 | placeholder: '请选择播放协议', |
158 | defaultValue: PlayProtocol.HTTP, | 225 | defaultValue: PlayProtocol.HTTP, |
@@ -167,87 +234,11 @@ export const streamingMediaAcquire: FormSchema[] = [ | @@ -167,87 +234,11 @@ export const streamingMediaAcquire: FormSchema[] = [ | ||
167 | label: h(SnHelpMessage) as any, | 234 | label: h(SnHelpMessage) as any, |
168 | component: 'Input', | 235 | component: 'Input', |
169 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], | 236 | rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], |
170 | - componentProps: { | ||
171 | - placeholder: '请输入监控点编号', | 237 | + ifShow({ values }) { |
238 | + return values.accessMode === AccessMode.Streaming; | ||
172 | }, | 239 | }, |
173 | - }, | ||
174 | -]; | ||
175 | - | ||
176 | -// 弹框配置项 | ||
177 | -export const formSchema: QFormSchema[] = [ | ||
178 | - { | ||
179 | - field: 'avatar', | ||
180 | - label: '视频封面', | ||
181 | - slot: 'iconSelect', | ||
182 | - component: 'Input', | ||
183 | - }, | ||
184 | - { | ||
185 | - field: 'name', | ||
186 | - label: '视频名字', | ||
187 | - required: true, | ||
188 | - component: 'Input', | ||
189 | componentProps: { | 240 | componentProps: { |
190 | - placeholder: '请输入视频名字', | ||
191 | - maxLength: 30, | ||
192 | - }, | ||
193 | - rules: [...CameraMaxLength, { required: true, message: '视频名是必填项' }], | ||
194 | - }, | ||
195 | - { | ||
196 | - field: 'organizationId', | ||
197 | - label: '所属组织', | ||
198 | - required: true, | ||
199 | - component: 'ApiTreeSelect', | ||
200 | - componentProps: { | ||
201 | - api: async () => { | ||
202 | - const data = await getOrganizationList(); | ||
203 | - copyTransFun(data as any as any[]); | ||
204 | - return data; | ||
205 | - }, | ||
206 | - }, | ||
207 | - }, | ||
208 | - { | ||
209 | - label: '视频流获取方式', | ||
210 | - field: 'accessMode', | ||
211 | - component: 'RadioGroup', | ||
212 | - rules: [{ required: true, message: '视频流获取方式为必选项', type: 'number' }], | ||
213 | - defaultValue: AccessMode.ManuallyEnter, | ||
214 | - componentProps({ formActionType }) { | ||
215 | - return { | ||
216 | - defaultValue: AccessMode.ManuallyEnter, | ||
217 | - placeholder: '请选择视频流获取方式', | ||
218 | - options: [ | ||
219 | - { label: '手动输入', value: AccessMode.ManuallyEnter }, | ||
220 | - { label: '流媒体获取', value: AccessMode.Streaming }, | ||
221 | - ], | ||
222 | - onChange(event: { target: { value: number } }) { | ||
223 | - formActionType.removeSchemaByFiled([ | ||
224 | - 'videoPlatformId', | ||
225 | - 'streamType', | ||
226 | - 'playProtocol', | ||
227 | - 'sn', | ||
228 | - 'brand', | ||
229 | - 'videoUrl', | ||
230 | - ]); | ||
231 | - const { | ||
232 | - target: { value }, | ||
233 | - } = event; | ||
234 | - if (value === AccessMode.ManuallyEnter) { | ||
235 | - manuallyEnter.forEach((schema) => | ||
236 | - formActionType.appendSchemaByField(schema, undefined) | ||
237 | - ); | ||
238 | - } else { | ||
239 | - streamingMediaAcquire.forEach((schema) => | ||
240 | - formActionType.appendSchemaByField(schema, undefined) | ||
241 | - ); | ||
242 | - | ||
243 | - formActionType.setFieldsValue({ | ||
244 | - streamType: StreamType.MASTER, | ||
245 | - playProtocol: PlayProtocol.HTTP, | ||
246 | - }); | ||
247 | - } | ||
248 | - }, | ||
249 | - }; | 241 | + placeholder: '请输入监控点编号', |
250 | }, | 242 | }, |
251 | }, | 243 | }, |
252 | - ...manuallyEnter, | ||
253 | ]; | 244 | ]; |