index.vue 8.81 KB
<template>
  <BasicTable
    class="bg-neutral-100 dark:text-gray-300 dark:bg-dark-700 p-4"
    @register="registerTable"
  >
    <template #turnOnAudio="{ record }">
      <Switch
        :checked="record.status === 1"
        :loading="record.pendingStatus"
        checkedChildren="开启"
        unCheckedChildren="关闭"
        @change="(checked:boolean)=>handleTurnVideo(checked,record)"
      />
    </template>
    <template #action="{ record }">
      <TableAction
        :actions="[
          {
            label: '播放',
            auth: 'api:yt:sceneLinkage:get',
            icon: 'ant-design:play-circle-outlined',
            onClick: handlePlay.bind(null, record),
          },
        ]"
    /></template>
  </BasicTable>
  <VideoModal @register="registerModal" />
</template>

<script lang="ts" setup>
  import { configColumns, searchFormSchema } from './config';
  import { BasicTable, useTable, TableAction } from '/@/components/Table';
  import { Switch } from 'ant-design-vue';
  import { DeviceRecord } from '/@/api/device/model/deviceModel';
  import VideoModal from './videoModal.vue';
  import { useModal } from '/@/components/Modal';
  import { onMounted } from 'vue';
  import { useMessage } from '/@/hooks/web/useMessage';

  defineProps({
    fromId: {
      type: String,
      default: '',
    },
    deviceDetail: {
      type: Object as PropType<DeviceRecord>,
      required: true,
    },
  });

  const [registerModal, { openModal }] = useModal();

  const [registerTable, { setTableData, setProps, setSelectedRowKeys, reload }] = useTable({
    // api: deviceCommandRecordGetQuery,
    columns: configColumns,
    showTableSetting: true,
    bordered: true,
    showIndexColumn: false,
    formConfig: {
      labelWidth: 120,
      schemas: searchFormSchema,
    },
    useSearchForm: true,
  });

  const handleTurnVideo = async (checked: Boolean, _record: Recordable) => {
    setProps({
      loading: true,
    });
    setSelectedRowKeys([]);
    const newStatus = checked ? 1 : 0;
    const { createMessage } = useMessage();
    try {
      if (newStatus) createMessage.success('开启成功');
      else createMessage.success('关闭成功');
    } finally {
      setProps({
        loading: false,
      });
      reload();
    }
  };

  const tableList = [
    {
      id: '8b66f4fa-88e0-42b2-be33-60652cd2bda1',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2023-03-10 17:16:54',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:25:49',
      name: 'dasd',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl: 'ws://192.168.10.134:28080/rtp/62020000492000000002_34020000001320000001.live.flv',
      sn: 's',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      playProtocol: 0,
      channellNumber: 1,
    },
    {
      id: '9ff408ab-980f-470c-a55c-e4e284ddd34d',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2023-02-22 14:50:13',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:36:25',
      name: '2',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl:
        'https://vcsplay.scjtonline.cn:8099/live/HD_d80a740b-2672-4ad1-90e4-52eb71d8c2ef.m3u8?auth_key=1681180571-0-0-dfdb334e5f83838ade5f01f61f910107',
      sn: '212',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      playProtocol: 0,
      channellNumber: 1,
    },
    {
      id: 'a6edd8fb-a91a-4a1b-8124-65959206dac4',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2023-02-21 16:39:51',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:33:27',
      name: 'dasda',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl:
        'https://vcsplay.scjtonline.cn:8200/live/HD_1b361aa9-5230-48ba-b8be-d1e2c4e9b178.m3u8?auth_key=1681180365-0-0-e77f40e88550091053139f5562d8afa2',
      brand: 'dasdad',
      sn: 'adsad',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      playProtocol: 0,
      channellNumber: 1,
    },
    {
      id: '51b4c0bc-8050-4b37-bdb3-9fe08b14cf86',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2023-02-21 16:37:44',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:56:59',
      name: '视频',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl:
        'https://vcsplay.scjtonline.cn:8093/live/HD_c54034ca-4a6d-11eb-8edc-3cd2e55e088c.m3u8?auth_key=1681181808-0-0-d756d9b0426b71482e45b9377958e4dc',
      brand: '视频厂家',
      sn: 'DART2143SAD12RE',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      playProtocol: 0,
      channellNumber: 1,
    },
    {
      id: '8c0e6ed0-3176-4e76-bd8e-92f722f61e79',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2022-12-01 15:55:54',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:59:22',
      name: '视频',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      avatar: 'https://demo.thingskit.com:9000/yunteng/itbbqOBXIUzWvjq.jpeg',
      videoUrl: 'http://113.204.115.250:83/openUrl/iFzoWME/live.m3u8',
      brand: '厂家',
      sn: 'JDKSA11321',
      organizationId: '9196fd9a-624a-4891-a8b3-ce588baedf9f',
      organizationName: '丰田',
      status: false,
      channellNumber: 1,
      accessMode: 0,
      playProtocol: 0,
    },
    {
      id: 'c30422a7-9498-49a5-96d5-e77f3a2823e3',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2022-12-01 14:42:52',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-03-02 17:12:53',
      name: '湖南卫视',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl:
        'http://219.151.31.38/liveplay-kk.rtxapp.com/live/program/live/hnwshd/4000000/mnf.m3u8',
      brand: 'BUZHIDAO',
      sn: 'QKDK123456',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      channellNumber: 1,
      accessMode: 0,
      playProtocol: 0,
    },
    {
      id: 'e3253015-b8df-4e8f-ad0c-f634d3fd927e',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2022-11-29 11:19:00',
      name: '玩具视频播放',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      avatar: 'http://nc.tianzow.com:29000/yunteng/tgygMQmYaaPDPdG.jpg',
      videoUrl: 'https://ask.dcloud.net.cn/topic.m3u8',
      brand: '成都厂家',
      sn: 'TCL1528GOP',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      channellNumber: 1,
      playProtocol: 0,
    },
    {
      id: '9edc9f73-3a9a-4e4b-9b4c-b955329b99b3',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2022-11-29 11:13:44',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-01-11 10:03:18',
      name: '视频',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      sn: '7aeb4061f3cf4ba384ed8e1a3027d2a8',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 1,
      videoPlatformId: '8cc7c20e-693b-48ea-9124-994e0908c83e',
      streamType: 0,
      playProtocol: 0,
      channellNumber: 1,
      videoPlatformDTO: {
        enabled: false,
        host: '113.204.115.250:7120',
        appKey: '28238690',
        appSecret: 'F3e3Ffvo9Wyg9jkl8BUS',
        ssl: 1,
      },
    },
    {
      id: '9d6675ad-07ed-45ae-bb4a-457000e164f8',
      creator: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      createTime: '2022-11-21 11:49:59',
      updater: '694a8f7f-f7ed-4a9c-af89-a3d18fc3663e',
      updateTime: '2023-04-11 10:53:27',
      name: '新视频',
      enabled: false,
      tenantId: '0277ca80-693d-11ed-9e12-e5edad4f7148',
      videoUrl: 'http://www.w3school.com.cn/example/html5/mov_bbb.mp4',
      brand: '1111',
      sn: 'XYZ',
      organizationId: '27ef2a83-6f1f-4e33-824b-80afac684699',
      organizationName: '车车组织',
      status: false,
      accessMode: 0,
      channellNumber: 1,
      playProtocol: 0,
    },
  ];

  onMounted(() => {
    setTableData(tableList);
  });

  const handlePlay = (record: Recordable) => {
    openModal(true, {
      record,
    });
  };
</script>