index.ts 6.29 KB
import { h } from 'vue';
import { handeleCopy } from '../profiles/step/topic';
import { DescItem } from '/@/components/Description/src/typing';
import { BasicColumn, FormSchema } from '/@/components/Table';

//设备接入信息权限标识枚举
export enum DEVICE_ACCESS_PERMISSION_ENUM {
  CREATE = 'api:yt:device_profile:access_information:post',
  UPDATE = 'api:yt:device_profile:access_information:update',
  DELETE = 'api:yt:device_profile:access_information:delete',
  GET = 'api:yt:device_profile:access_information:get',
}

//要删除的表单字段
export const deleteFormField = [
  'serverId',
  'serverDomain',
  'serverPassword',
  'intranetIpAndPort',
  'outerIpAndPort',
];

//表格字段
export const columns: BasicColumn[] = [
  {
    title: '内网ip',
    dataIndex: 'intranetIp',
  },
  {
    title: '内网端口',
    dataIndex: 'intranetPort',
  },
  {
    title: '外网ip',
    dataIndex: 'outerNetIp',
  },
  {
    title: '外网端口',
    dataIndex: 'outerNetPort',
  },
  {
    title: '接入协议',
    dataIndex: 'deviceAgreement',
  },
];

//表单查询
export const searchFormSchema: FormSchema[] = [
  {
    field: 'intranetIp',
    label: '内网ip',
    component: 'Input',
    colProps: { span: 6 },
    componentProps: {
      maxLength: 255,
      placeholder: '请输入内网ip',
    },
  },
  {
    field: 'outerNetIp',
    label: '外网ip',
    component: 'Input',
    colProps: { span: 6 },
    componentProps: {
      maxLength: 255,
      placeholder: '请输入外网ip',
    },
  },
  {
    field: 'deviceAgreement',
    label: '接入协议',
    component: 'Select',
    colProps: { span: 6 },
    componentProps() {
      return {
        options: [
          { label: '默认', value: 'DEFAULT' },
          { label: 'MQTT', value: 'MQTT' },
          { label: 'CoAP', value: 'COAP' },
          { label: 'TCP', value: 'TCP' },
          { label: 'GBT28181', value: 'GBT28181' },
        ],
        getPopupContainer: () => document.body,
        placeholder: '请选择接入协议',
      };
    },
  },
];

//表单字段
export const schemas: FormSchema[] = [
  {
    field: 'intranetIpAndPort',
    label: '内网ip&端口',
    component: 'FormInputGroup',
    required: true,
    componentProps: {
      inputPlaceholder: '请输入内网ip',
      inputNumberPlaceholder: '内网端口',
    },
    colProps: { span: 24 },
  },
  {
    field: 'outerIpAndPort',
    label: '外网ip&端口',
    component: 'FormInputGroup',
    required: true,
    componentProps: {
      inputPlaceholder: '请输入外网ip',
      inputNumberPlaceholder: '外网端口',
    },
    colProps: { span: 24 },
  },
  {
    field: 'deviceAgreement',
    component: 'Select',
    required: true,
    label: '接入协议',
    componentProps() {
      return {
        options: [
          { label: '默认', value: 'DEFAULT' },
          { label: 'MQTT', value: 'MQTT' },
          { label: 'CoAP', value: 'COAP' },
          { label: 'TCP', value: 'TCP' },
          { label: 'GBT28181', value: 'GBT28181' },
        ],
        getPopupContainer: () => document.body,
        placeholder: '请选择接入协议',
      };
    },
    colProps: { span: 19 },
  },
  {
    field: 'serverId',
    label: '服务器ID',
    required: false,
    colProps: { span: 19 },
    component: 'Input',
    componentProps: {
      maxLength: 255,
      placeholder: '请输入服务器ID',
    },
    ifShow({ values }) {
      return values.deviceAgreement === 'GBT28181';
    },
  },
  {
    field: 'serverDomain',
    label: '服务器域',
    required: false,
    colProps: { span: 19 },
    component: 'Input',
    componentProps: {
      maxLength: 255,
      placeholder: '请输入服务器域',
    },
    ifShow({ values }) {
      return values.deviceAgreement === 'GBT28181';
    },
  },
  {
    field: 'serverPassword',
    label: '密码',
    required: false,
    colProps: { span: 19 },
    component: 'InputPassword',
    componentProps: {
      maxLength: 255,
      placeholder: '请输入密码',
    },
    ifShow({ values }) {
      return values.deviceAgreement === 'GBT28181';
    },
  },
];

//详情字段
export const detailSchema: DescItem[] = [
  {
    field: 'intranetIp',
    label: '内网ip',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'intranetPort',
    label: '内网端口',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'outerNetIp',
    label: '外网ip',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'outerNetPort',
    label: '外网端口',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'deviceAgreement',
    label: '接入协议',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'serverId',
    label: '服务器ID',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'serverDomain',
    label: '服务器域',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
  {
    field: 'serverPassword',
    label: '密码',
    render: (text) => {
      return h(
        'span',

        {
          style: { cursor: 'pointer' },
          onClick: () => {
            handeleCopy(text);
          },
        },
        text
      );
    },
  },
];