Commit 30126b273fdb5c3ab504c2e2e5bbb312dd501e8b

Authored by fengtao
1 parent 6fed128d

pref:select新增流媒体配置

@@ -25,11 +25,28 @@ @@ -25,11 +25,28 @@
25 </div> 25 </div>
26 </Upload> 26 </Upload>
27 </template> 27 </template>
  28 + <template #videoPlatformIdSlot="{ model, field }">
  29 + <a-select
  30 + placeholder="请选择流媒体配置"
  31 + v-model:value="model[field]"
  32 + :options="streamConfigOptions.map((item) => ({ value: item.value, label: item.label }))"
  33 + >
  34 + <template #dropdownRender="{ menuNode: menu }">
  35 + <v-nodes :vnodes="menu" />
  36 + <a-divider style="margin: 4px 0" />
  37 + <div @click="handleOpenStreamConfig" style="padding: 4px 8px; cursor: pointer">
  38 + <plus-outlined />
  39 + 新增流媒体配置
  40 + </div>
  41 + </template>
  42 + </a-select>
  43 + </template>
28 </BasicForm> 44 </BasicForm>
29 </BasicDrawer> 45 </BasicDrawer>
  46 + <SteramingDrawer @register="registerSteramingDrawer" @success="handleSuccess" />
30 </template> 47 </template>
31 <script lang="ts"> 48 <script lang="ts">
32 - import { defineComponent, ref, computed, unref, nextTick } from 'vue'; 49 + import { defineComponent, ref, computed, unref, nextTick, onMounted } from 'vue';
33 import { BasicForm, useForm } from '/@/components/Form'; 50 import { BasicForm, useForm } from '/@/components/Form';
34 import { formSchema } from './config.data'; 51 import { formSchema } from './config.data';
35 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; 52 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
@@ -39,14 +56,27 @@ @@ -39,14 +56,27 @@
39 import { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue'; 56 import { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue';
40 import { upload } from '/@/api/oss/ossFileUploader'; 57 import { upload } from '/@/api/oss/ossFileUploader';
41 import { FileItem } from '/@/components/Upload/src/typing'; 58 import { FileItem } from '/@/components/Upload/src/typing';
  59 + import { getStreamingMediaList } from '/@/api/camera/cameraManager';
  60 + import SteramingDrawer from '../streaming/SteramingDrawer.vue';
  61 + import { useDrawer } from '/@/components/Drawer';
42 62
43 export default defineComponent({ 63 export default defineComponent({
44 name: 'ContactDrawer', 64 name: 'ContactDrawer',
45 - components: { BasicDrawer, BasicForm, Upload, PlusOutlined, LoadingOutlined }, 65 + components: {
  66 + BasicDrawer,
  67 + BasicForm,
  68 + Upload,
  69 + PlusOutlined,
  70 + LoadingOutlined,
  71 + SteramingDrawer,
  72 + VNodes: (_, { attrs }) => {
  73 + return attrs.vnodes;
  74 + },
  75 + },
46 emits: ['success', 'register'], 76 emits: ['success', 'register'],
47 setup(_, { emit }) { 77 setup(_, { emit }) {
48 const loading = ref(false); 78 const loading = ref(false);
49 - 79 + const streamConfigOptions: any = ref([]);
50 const isUpdate = ref(true); 80 const isUpdate = ref(true);
51 const editId = ref(''); 81 const editId = ref('');
52 const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ 82 const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({
@@ -54,7 +84,32 @@ @@ -54,7 +84,32 @@
54 schemas: formSchema, 84 schemas: formSchema,
55 showActionButtonGroup: false, 85 showActionButtonGroup: false,
56 }); 86 });
  87 + onMounted(async () => {
  88 + const res = await getStreamingMediaList({});
  89 + streamConfigOptions.value = res.map((m) => {
  90 + return {
  91 + label: m.host,
  92 + value: m.id,
  93 + };
  94 + });
  95 + });
  96 + const [registerSteramingDrawer, { openDrawer }] = useDrawer();
57 97
  98 + const handleOpenStreamConfig = () => {
  99 + openDrawer(true, {
  100 + createFlag: true,
  101 + });
  102 + };
  103 + async function handleSuccess() {
  104 + const res = await getStreamingMediaList({});
  105 + if (res) {
  106 + streamConfigOptions.value = res.map((m) => {
  107 + return { label: m.host, value: m.id };
  108 + });
  109 + } else {
  110 + streamConfigOptions.value = [];
  111 + }
  112 + }
58 const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { 113 const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
59 await resetFields(); 114 await resetFields();
60 setDrawerProps({ confirmLoading: false }); 115 setDrawerProps({ confirmLoading: false });
@@ -136,6 +191,10 @@ @@ -136,6 +191,10 @@
136 beforeUpload, 191 beforeUpload,
137 tenantLogo, 192 tenantLogo,
138 loading, 193 loading,
  194 + streamConfigOptions,
  195 + registerSteramingDrawer,
  196 + handleOpenStreamConfig,
  197 + handleSuccess,
139 }; 198 };
140 }, 199 },
141 }); 200 });
@@ -4,7 +4,6 @@ import { copyTransFun } from '/@/utils/fnUtils'; @@ -4,7 +4,6 @@ import { copyTransFun } from '/@/utils/fnUtils';
4 import type { FormSchema as QFormSchema } from '/@/components/Form/index'; 4 import type { FormSchema as QFormSchema } from '/@/components/Form/index';
5 5
6 import { CameraVideoUrl, CameraMaxLength, MediaTypeValidate } from '/@/utils/rules'; 6 import { CameraVideoUrl, CameraMaxLength, MediaTypeValidate } from '/@/utils/rules';
7 -import { getStreamingMediaList } from '/@/api/camera/cameraManager';  
8 import { h } from 'vue'; 7 import { h } from 'vue';
9 import SnHelpMessage from './SnHelpMessage.vue'; 8 import SnHelpMessage from './SnHelpMessage.vue';
10 export enum AccessMode { 9 export enum AccessMode {
@@ -190,15 +189,13 @@ export const formSchema: QFormSchema[] = [ @@ -190,15 +189,13 @@ export const formSchema: QFormSchema[] = [
190 { 189 {
191 field: 'videoPlatformId', 190 field: 'videoPlatformId',
192 label: '流媒体配置', 191 label: '流媒体配置',
193 - component: 'ApiSelect', 192 + component: 'Select',
194 ifShow({ values }) { 193 ifShow({ values }) {
195 return values.accessMode === AccessMode.Streaming; 194 return values.accessMode === AccessMode.Streaming;
196 }, 195 },
  196 + slot: 'videoPlatformIdSlot',
197 componentProps: { 197 componentProps: {
198 placeholder: '请选择流媒体配置', 198 placeholder: '请选择流媒体配置',
199 - api: getStreamingMediaList,  
200 - labelField: 'host',  
201 - valueField: 'id',  
202 }, 199 },
203 }, 200 },
204 { 201 {
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 import { useMessage } from '/@/hooks/web/useMessage'; 9 import { useMessage } from '/@/hooks/web/useMessage';
10 import { PlayProtocol } from '../manage/config.data'; 10 import { PlayProtocol } from '../manage/config.data';
11 11
12 - const emit = defineEmits(['success','register']); 12 + const emit = defineEmits(['success', 'register']);
13 13
14 const createFlag = ref(false); 14 const createFlag = ref(false);
15 15
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 showActionButtonGroup: false, 23 showActionButtonGroup: false,
24 }); 24 });
25 25
26 - const [registerDrawer, { setDrawerProps }] = useDrawerInner((data: DrawerParams) => { 26 + const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner((data: DrawerParams) => {
27 createFlag.value = data.createFlag; 27 createFlag.value = data.createFlag;
28 if (!unref(createFlag)) { 28 if (!unref(createFlag)) {
29 id = data.record!.id; 29 id = data.record!.id;
@@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
48 const { createMessage } = useMessage(); 48 const { createMessage } = useMessage();
49 createMessage.success(message); 49 createMessage.success(message);
50 emit('success'); 50 emit('success');
  51 + closeDrawer();
51 } catch (e) { 52 } catch (e) {
52 } finally { 53 } finally {
53 setDrawerProps({ 54 setDrawerProps({
@@ -185,6 +185,7 @@ export const formSchema: QFormSchema[] = [ @@ -185,6 +185,7 @@ export const formSchema: QFormSchema[] = [
185 { 185 {
186 field: 'executeWay', 186 field: 'executeWay',
187 component: 'RadioGroup', 187 component: 'RadioGroup',
  188 + helpMessage: [''],
188 label: '执行方式', 189 label: '执行方式',
189 colProps: { 190 colProps: {
190 span: 24, 191 span: 24,
@@ -225,6 +226,8 @@ export const formSchema: QFormSchema[] = [ @@ -225,6 +226,8 @@ export const formSchema: QFormSchema[] = [
225 }); 226 });
226 } else { 227 } else {
227 setFieldsValue({ queryMode: QueryWay.LATEST }); 228 setFieldsValue({ queryMode: QueryWay.LATEST });
  229 + setFieldsValue({ startTs: 5000 });
  230 + setFieldsValue({ interval: 1000 });
228 dataCompareOpions = [{ label: '固定周期', value: QueryWay.LATEST }]; 231 dataCompareOpions = [{ label: '固定周期', value: QueryWay.LATEST }];
229 updateSchema({ 232 updateSchema({
230 defaultValue: QueryWay.LATEST, 233 defaultValue: QueryWay.LATEST,
@@ -437,7 +440,7 @@ export const formSchema: QFormSchema[] = [ @@ -437,7 +440,7 @@ export const formSchema: QFormSchema[] = [
437 }, 440 },
438 { 441 {
439 field: SchemaFiled.START_TS, 442 field: SchemaFiled.START_TS,
440 - label: '时间周期', 443 + label: '最近时间',
441 component: 'Select', 444 component: 'Select',
442 required: true, 445 required: true,
443 ifShow({ values }) { 446 ifShow({ values }) {
@@ -447,7 +450,7 @@ export const formSchema: QFormSchema[] = [ @@ -447,7 +450,7 @@ export const formSchema: QFormSchema[] = [
447 const { setFieldsValue } = formActionType; 450 const { setFieldsValue } = formActionType;
448 return { 451 return {
449 defaultValue: 1000, 452 defaultValue: 1000,
450 - placeholder: '请选择时间周期', 453 + placeholder: '请选择近期时间',
451 options: intervalOption, 454 options: intervalOption,
452 onChange() { 455 onChange() {
453 setFieldsValue({ [SchemaFiled.INTERVAL]: null }); 456 setFieldsValue({ [SchemaFiled.INTERVAL]: null });