Commit 8c106fcf1c076935912e7d8579ca442f04a8b2fe

Authored by ww
1 parent 1365217c

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

... ... @@ -40,7 +40,7 @@
40 40 <script lang="ts">
41 41 import { defineComponent, ref, computed, unref, nextTick, onMounted } from 'vue';
42 42 import { BasicForm, useForm } from '/@/components/Form';
43   - import { formSchema } from './config.data';
  43 + import { AccessMode, formSchema, VideoPlatformEnum } from './config.data';
44 44 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
45 45 import { createOrEditCameraManage } from '/@/api/camera/cameraManager';
46 46 import { useMessage } from '/@/hooks/web/useMessage';
... ... @@ -106,14 +106,23 @@
106 106 isUpdate.value = !!data?.isUpdate;
107 107 if (unref(isUpdate)) {
108 108 await nextTick();
  109 + const { record } = data || {};
109 110 editId.value = data.record.id;
  111 +
110 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 126 } else {
118 127 editId.value = '';
119 128 }
... ... @@ -138,6 +147,14 @@
138 147 }
139 148 let saveMessage = '添加成功';
140 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 158 await createOrEditCameraManage(values);
142 159 closeDrawer();
143 160 emit('success');
... ...
... ... @@ -48,6 +48,14 @@ export enum MediaType {
48 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 60 export const columns: BasicColumn[] = [
53 61 {
... ... @@ -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 122 export const formSchema: QFormSchema[] = [
... ... @@ -228,7 +238,7 @@ export const formSchema: QFormSchema[] = [
228 238 label: '流媒体平台',
229 239 component: 'ApiRadioGroup',
230 240 required: true,
231   - defaultValue: videTypeNum.SCI,
  241 + defaultValue: VideoPlatformEnum.SCI,
232 242 ifShow: ({ values }) => values.accessMode === AccessMode.Streaming,
233 243 componentProps: {
234 244 api: async (params) => {
... ... @@ -261,7 +271,8 @@ export const formSchema: QFormSchema[] = [
261 271 defaultValue: StreamType.MASTER,
262 272 ifShow({ values }) {
263 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 278 componentProps: {
... ... @@ -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 311 field: 'playProtocol',
279 312 label: '播放协议',
280 313 component: 'RadioGroup',
281 314 defaultValue: PlayProtocol.HTTP,
282 315 ifShow({ values }) {
283 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 321 helpMessage: ['平台使用https的hls协议,需联系海康开放平台专家支持。'],
... ... @@ -301,7 +335,8 @@ export const formSchema: QFormSchema[] = [
301 335 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }],
302 336 ifShow({ values }) {
303 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 342 componentProps: {
... ... @@ -315,7 +350,8 @@ export const formSchema: QFormSchema[] = [
315 350 rules: [...CameraVideoUrl, { required: true, message: '摄像头编号是必填项' }],
316 351 ifShow({ values }) {
317 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 357 componentProps: {
... ...