Commit 3bc28b5e7125776abb1de96c09a6dfeedfee53be

Authored by ww
1 parent 73d472e2

fix: DEFECT-534 edit record page seize

@@ -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 ];