Commit 8c106fcf1c076935912e7d8579ca442f04a8b2fe

Authored by ww
1 parent 1365217c

feat: 视频配置新增萤石云清晰度选项

@@ -40,7 +40,7 @@ @@ -40,7 +40,7 @@
40 <script lang="ts"> 40 <script lang="ts">
41 import { defineComponent, ref, computed, unref, nextTick, onMounted } from 'vue'; 41 import { defineComponent, ref, computed, unref, nextTick, onMounted } from 'vue';
42 import { BasicForm, useForm } from '/@/components/Form'; 42 import { BasicForm, useForm } from '/@/components/Form';
43 - import { formSchema } from './config.data'; 43 + import { AccessMode, formSchema, VideoPlatformEnum } from './config.data';
44 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; 44 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
45 import { createOrEditCameraManage } from '/@/api/camera/cameraManager'; 45 import { createOrEditCameraManage } from '/@/api/camera/cameraManager';
46 import { useMessage } from '/@/hooks/web/useMessage'; 46 import { useMessage } from '/@/hooks/web/useMessage';
@@ -106,14 +106,23 @@ @@ -106,14 +106,23 @@
106 isUpdate.value = !!data?.isUpdate; 106 isUpdate.value = !!data?.isUpdate;
107 if (unref(isUpdate)) { 107 if (unref(isUpdate)) {
108 await nextTick(); 108 await nextTick();
  109 + const { record } = data || {};
109 editId.value = data.record.id; 110 editId.value = data.record.id;
  111 +
110 if (data.record.avatar) { 112 if (data.record.avatar) {
111 - setFieldsValue({  
112 - avatar: [{ uid: buildUUID(), name: 'name', url: data.record.avatar } as FileItem], 113 + Object.assign(record, {
  114 + avatar: [{ uid: buildUUID(), name: 'name', url: record.avatar } as FileItem],
113 }); 115 });
114 } 116 }
115 - const { ...params } = data.record;  
116 - await setFieldsValue({ ...params, videoType: params.videoPlatformDTO?.type }); 117 +
  118 + if (
  119 + record?.accessMode === AccessMode.Streaming &&
  120 + record.videoPlatformDTO?.type === VideoPlatformEnum.FLUORITE
  121 + ) {
  122 + Object.assign(record, { articulation: record.streamType });
  123 + }
  124 +
  125 + setFieldsValue({ ...record, videoType: record.videoPlatformDTO?.type });
117 } else { 126 } else {
118 editId.value = ''; 127 editId.value = '';
119 } 128 }
@@ -138,6 +147,14 @@ @@ -138,6 +147,14 @@
138 } 147 }
139 let saveMessage = '添加成功'; 148 let saveMessage = '添加成功';
140 let updateMessage = '修改成功'; 149 let updateMessage = '修改成功';
  150 +
  151 + if (
  152 + values?.accessMode === AccessMode.Streaming &&
  153 + values.videoType === VideoPlatformEnum.FLUORITE
  154 + ) {
  155 + values.streamType = values.articulation;
  156 + }
  157 +
141 await createOrEditCameraManage(values); 158 await createOrEditCameraManage(values);
142 closeDrawer(); 159 closeDrawer();
143 emit('success'); 160 emit('success');
@@ -48,6 +48,14 @@ export enum MediaType { @@ -48,6 +48,14 @@ export enum MediaType {
48 M3U8 = 'm3u8', 48 M3U8 = 'm3u8',
49 } 49 }
50 50
  51 +export enum ArticulationEnumType {
  52 + HIGH_DEFINITION = 1,
  53 + SMOOTH = 2,
  54 +}
  55 +export enum ArticulationEnumNameType {
  56 + HIGH_DEFINITION = '高清',
  57 + SMOOTH = '流畅',
  58 +}
51 // 表格列数据 59 // 表格列数据
52 export const columns: BasicColumn[] = [ 60 export const columns: BasicColumn[] = [
53 { 61 {
@@ -103,10 +111,12 @@ export const searchFormSchema: FormSchema[] = [ @@ -103,10 +111,12 @@ export const searchFormSchema: FormSchema[] = [
103 }, 111 },
104 ]; 112 ];
105 113
106 -const videTypeNum = {  
107 - SCI: 0,  
108 - FLUORITE: 1,  
109 -}; 114 +export enum VideoPlatformEnum {
  115 + // 海康
  116 + SCI = 0,
  117 + // 萤石云
  118 + FLUORITE = 1,
  119 +}
110 120
111 // 弹框配置项 121 // 弹框配置项
112 export const formSchema: QFormSchema[] = [ 122 export const formSchema: QFormSchema[] = [
@@ -228,7 +238,7 @@ export const formSchema: QFormSchema[] = [ @@ -228,7 +238,7 @@ export const formSchema: QFormSchema[] = [
228 label: '流媒体平台', 238 label: '流媒体平台',
229 component: 'ApiRadioGroup', 239 component: 'ApiRadioGroup',
230 required: true, 240 required: true,
231 - defaultValue: videTypeNum.SCI, 241 + defaultValue: VideoPlatformEnum.SCI,
232 ifShow: ({ values }) => values.accessMode === AccessMode.Streaming, 242 ifShow: ({ values }) => values.accessMode === AccessMode.Streaming,
233 componentProps: { 243 componentProps: {
234 api: async (params) => { 244 api: async (params) => {
@@ -261,7 +271,8 @@ export const formSchema: QFormSchema[] = [ @@ -261,7 +271,8 @@ export const formSchema: QFormSchema[] = [
261 defaultValue: StreamType.MASTER, 271 defaultValue: StreamType.MASTER,
262 ifShow({ values }) { 272 ifShow({ values }) {
263 return ( 273 return (
264 - values.accessMode === AccessMode.Streaming && values.videoType !== videTypeNum.FLUORITE 274 + values.accessMode === AccessMode.Streaming &&
  275 + values.videoType !== VideoPlatformEnum.FLUORITE
265 ); 276 );
266 }, 277 },
267 componentProps: { 278 componentProps: {
@@ -275,13 +286,36 @@ export const formSchema: QFormSchema[] = [ @@ -275,13 +286,36 @@ export const formSchema: QFormSchema[] = [
275 }, 286 },
276 }, 287 },
277 { 288 {
  289 + field: 'articulation',
  290 + label: '清晰度',
  291 + component: 'RadioGroup',
  292 + defaultValue: ArticulationEnumType.HIGH_DEFINITION,
  293 + ifShow: ({ model }) =>
  294 + model.accessMode === AccessMode.Streaming && model.videoType === VideoPlatformEnum.FLUORITE,
  295 + componentProps: () => {
  296 + return {
  297 + options: [
  298 + {
  299 + label: ArticulationEnumNameType.HIGH_DEFINITION,
  300 + value: ArticulationEnumType.HIGH_DEFINITION,
  301 + },
  302 + {
  303 + label: ArticulationEnumNameType.SMOOTH,
  304 + value: ArticulationEnumType.SMOOTH,
  305 + },
  306 + ],
  307 + };
  308 + },
  309 + },
  310 + {
278 field: 'playProtocol', 311 field: 'playProtocol',
279 label: '播放协议', 312 label: '播放协议',
280 component: 'RadioGroup', 313 component: 'RadioGroup',
281 defaultValue: PlayProtocol.HTTP, 314 defaultValue: PlayProtocol.HTTP,
282 ifShow({ values }) { 315 ifShow({ values }) {
283 return ( 316 return (
284 - values.accessMode === AccessMode.Streaming && values.videoType !== videTypeNum.FLUORITE 317 + values.accessMode === AccessMode.Streaming &&
  318 + values.videoType !== VideoPlatformEnum.FLUORITE
285 ); 319 );
286 }, 320 },
287 helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'], 321 helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'],
@@ -301,7 +335,8 @@ export const formSchema: QFormSchema[] = [ @@ -301,7 +335,8 @@ export const formSchema: QFormSchema[] = [
301 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], 335 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }],
302 ifShow({ values }) { 336 ifShow({ values }) {
303 return ( 337 return (
304 - values.accessMode === AccessMode.Streaming && values.videoType !== videTypeNum.FLUORITE 338 + values.accessMode === AccessMode.Streaming &&
  339 + values.videoType !== VideoPlatformEnum.FLUORITE
305 ); 340 );
306 }, 341 },
307 componentProps: { 342 componentProps: {
@@ -315,7 +350,8 @@ export const formSchema: QFormSchema[] = [ @@ -315,7 +350,8 @@ export const formSchema: QFormSchema[] = [
315 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }], 350 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }],
316 ifShow({ values }) { 351 ifShow({ values }) {
317 return ( 352 return (
318 - values.accessMode === AccessMode.Streaming && values.videoType === videTypeNum.FLUORITE 353 + values.accessMode === AccessMode.Streaming &&
  354 + values.videoType === VideoPlatformEnum.FLUORITE
319 ); 355 );
320 }, 356 },
321 componentProps: { 357 componentProps: {