import { until } from '@vueuse/shared';
import type { VxeGridProps, VxeColumnPropTypes } from 'vxe-table';
import XEUtils from 'xe-utils';

interface VxeColumn {
  type?: string;
  field?: string;
  title?: string;
  width?: number | string;
  minWidth?: number | string;
  maxWidth?: number | string;
  sortable?: boolean;
  formatter?: (value: any) => string;
  treeNode?: boolean;
  slots?: {};
  visible?: boolean;
  editRender?: {};
  align?: string;
  showOverflow?: boolean | string;
  fixed?: string;
  filters?: [] | {};
  filterMethod?: any;
  filterMethodTp?: string;
  filterRender?: any;
}

export const tableFormData = [
  {
    serialNumber: '1',
    project: '业务连续性组织架构',
    code: 'TB9001',
    content: [
      { type: 'text', value: '（1）设立业务连续性管理委员会或类似组织' },
      { type: 'yesno', field: 'COL1' },
      { type: 'brspace' },
      { type: 'text', value: '若是，组织名称' },
      { type: 'input', field: 'COL2' },
      { type: 'text', value: '，成员部门' },
      { type: 'input', field: 'COL3' },
      { type: 'br' },

      { type: 'text', value: '（2）设立或指定业务连续性管理主管部门' },
      { type: 'yesno', field: 'COL4' },
      { type: 'brspace' },
      { type: 'text', value: '若是，业务连续性管理部门名称' },
      { type: 'input', field: 'COL5' },
      { type: 'text', value: '，专职人员数量' },
      { type: 'number', field: 'COL6', unit: '人' },
      { type: 'brspace' },
      { type: 'text', value: '业务连续性管理部门独立于信息科技部门' },
      { type: 'yesno', field: 'COL7' },
      { type: 'br' },
      { type: 'text', value: '（3）明确业务连续性管理的执行部门和保障部门' },
      { type: 'yesno', field: 'COL8' },

      { type: 'br' },
      { type: 'text', value: '（4）建立运营中断事件应急处置组织架构' },
      { type: 'yesno', field: 'COL9' },
      { type: 'brspace' },
      { type: 'text', value: '一级分支机构建立运营中断事件应急处置组织架构' },
      { type: 'radio-group', field: 'COL10', options: ['是', '否', '不适用'] },
    ],
    remarks: {
      rows: 10,
      field: 'COL11',
    },
  },

  {
    serialNumber: '2',
    project: '业务连续性管理体系与制度',
    code: 'TB9002',
    content: [
      { type: 'text', value: '（1）制定并发布业务连续性管理规章制度' },
      { type: 'yesno', field: 'COL12' },
      { type: 'br' },

      { type: 'text', value: '（2）已制定并发布的业务连续性管理规章制度包括' },
      { type: 'br' },
      {
        type: 'checkbox-group',
        field: 'COL13',
        options: ['业务影响分析及风险评估管理制度', '业务连续性计划', '应急预案', '业务连续性演练管理制度'],
        otherOption: true,
        otherField: 'COL14',
      },
    ],
    remarks: {
      rows: 6,
      field: 'COL15',
    },
  },
  {
    serialNumber: '3',
    project: '业务影响分析 ',
    code: 'TB9003',
    content: [
      { type: 'text', value: '已开展业务影响分析' },
      { type: 'yesno', field: 'COL16' },

      { type: 'brspace' },
      { type: 'text', value: '若是，牵头组织开展业务影响分析的部门' },
      {
        type: 'radio-group-extraFields',
        field: 'COL17',
        options: [
          { label: '风险管理部门', value: '风险管理部门' },
          { label: '合规部门', value: '合规部门' },
          { label: '其他部门', extraField: 'COL18', extraFieldLabel: '' },
        ],
      },
      { type: 'brspace' },
      { type: 'text', value: '根据业务影响分析结果制定业务恢复策略' },
      { type: 'yesno', field: 'COL19' },
      { type: 'brspace' },
      { type: 'text', value: '若是，包括的策略' },
      {
        type: 'checkbox-group',
        field: 'COL20',
        options: ['关键资源恢复', '业务替代手段', '数据追补', '恢复优先级别'],
        otherOption: true,
        otherField: 'COLA03',
      },

      { type: 'brspace' },
      { type: 'text', value: '已识别的重要业务总数' },
      { type: 'number', field: 'COL21', unit: '个' },
      { type: 'text', value: '，重要业务详细情况如下' },
      { type: 'brspace' },
      {
        serialNumber: '1006',
        code: 'TB90031',
        type: 'MultiColumnTable',
        project: '重要业务详细情况',
        content: [
          { name: '一级业务名称', formType: 'input', field: 'C24A002' },
          { name: '二级业务名称', formType: 'input', field: 'C24A003' },
          { name: '交易渠道', formType: 'input', field: 'C24A004' },
          { name: '涉及重要信息系统(与TB3系统名称保持一致)', formType: 'input', field: 'C24A005' },
          { name: '日均流量(万笔)', formType: 'input', field: 'C24A006' },
          { name: '业务恢复指标RTO(分钟)', formType: 'number', field: 'COL24' },
          { name: '业务恢复指标RPO(分钟)', formType: 'number', field: 'COL25' },
          { name: '业务归口管理部门', formType: 'input', field: 'COL26' },
          { name: '业务影响分析开展部门', formType: 'input', field: 'COL27' },
          { name: '完成时间', formType: 'date', field: 'COL28' },
          { name: '报告经高管层或业务连续性管理委员会审批', formType: 'yesno', field: 'COL29' },
        ],
      },
    ],
    remarks: {
      rows: 10,
      field: 'COL22',
    },
  },

  {
    serialNumber: '4',
    project: '业务连续性计划与资源建设',
    code: 'TB9004',
    content: [
      { type: 'text', value: '（1）全部重要业务制定和发布业务连续性计划' },
      { type: 'yesno', field: 'COL30' },
      { type: 'brspace' },
      { type: 'text', value: '建立业务连续性计划定期修订机制' },
      { type: 'yesno', field: 'COL31' },
      { type: 'brspace' },
      { type: 'text', value: '若是，最近一次修订并发布的时间' },
      { type: 'date', field: 'COL32' },

      { type: 'br' },
      { type: 'text', value: '（2）制定和发布专项应急预案' },
      { type: 'yesno', field: 'COL33' },
      { type: 'brspace' },
      { type: 'text', value: '如是，专项应急预案涵盖以下场景' },
      {
        type: 'checkbox-group',
        field: 'COL34',
        options: ['基础设施故障', '系统软硬件故障', '信息安全事件', '人员操作错误', '外部服务中断', '灾难'],
        otherOption: true,
        otherField: 'COL35',
      },
      { type: 'brspace' },
      { type: 'text', value: '建立专项应急预案定期修订机制' },
      { type: 'yesno', field: 'COL36' },
      { type: 'text', value: '，若是，最近一次修订的应急预案名称' },
      { type: 'input', field: 'COL36_1' },
      { type: 'text', value: '，发布时间' },
      { type: 'date', field: 'COL37' },

      { type: 'br' },

      { type: 'text', value: '（3）已建立专项应急预案的重要业务数量' },
      { type: 'number', field: 'COL38', unit: '个' },
      { type: 'text', value: '，重要业务专项应急预案覆盖率' },
      { type: 'number', field: 'COL39', unit: '%' },

      { type: 'br' },
      { type: 'text', value: '（4）已建设的业务连续性备用资源包括' },
      {
        type: 'checkbox-group',
        field: 'COL40',
        options: ['备用业务和办公场所资源', '备用信息系统运行场所资源', '备用信息科技资源', '备用人力资源', '电力、通讯、消防、安保'],
        otherOption: true,
        otherField: 'COLA04',
      },
    ],

    remarks: {
      rows: 10,
      field: 'COL41',
    },
  },
  {
    serialNumber: '5',
    project: '业务连续性演练',
    code: 'TB9005',
    content: [
      { type: 'text', value: '（1）本年度业务连续性演练总次数' },
      { type: 'number', field: 'COL42', unit: '次' },

      { type: 'brspace' },
      { type: 'text', value: '其中，关键基础设施演练次数' },
      { type: 'number', field: 'COL43', unit: '次' },
      { type: 'text', value: '，重要信息系统演练次数' },
      { type: 'number', field: 'COL44', unit: '次' },

      { type: 'brspace' },
      { type: 'text', value: '重要业务演练次数' },
      { type: 'number', field: 'COL45', unit: '次' },

      { type: 'text', value: '，切换并真实接管业务演练次数' },
      { type: 'number', field: 'COL46', unit: '次' },

      { type: 'br' },
      { type: 'text', value: '（2）本年度已开展业务连续性演练的重要业务数' },
      { type: 'number', field: 'COL47', unit: '个' },

      { type: 'text', value: '，重要业务的业务连续性演练覆盖率' },
      { type: 'number', field: 'COL48', unit: '%' },
      { type: 'br' },
      { type: 'text', value: '（3）近三年是否开展业务数据被恶意篡改的应急演练' },
      { type: 'yesno', field: 'C24A001' },
      { type: 'brspace' },
      {
        serialNumber: '1006',
        code: 'TB90051',
        type: 'MultiColumnTable',
        project: '演练明细 ',
        content: [
          { name: '演练日期', formType: 'date', field: 'COL50' },
          {
            name: '牵头部门',
            formType: 'radio-group',
            field: 'COL51',
            options: ['信息科技部门', '风险管理部门', '内部审计部门', '合规部门', '业务部门', '其他'],
            otherOption: true,
            otherField: 'COL52',
          },
          {
            name: '参与部门',
            formType: 'checkbox-group',
            field: 'COL53',
            options: ['办公室', '信息科技部门', '风险管理部门', '内部审计部门', '合规部门', '业务部门', '后勤保障部门', '其他'],
            otherOption: true,
            otherField: 'COL54',
          },
          {
            name: '演练内容',
            formType: 'checkbox-group',
            field: 'COL55',
            options: ['关键基础设施演练 ', '重要信息系统演练 ', '重要业务演练', '其他'],
            otherOption: true,
            otherField: 'COLA05',
          },
          { name: '演练方式', formType: 'checkbox-group', field: 'COL56', options: ['模拟 ', '切换测试 ', '切换并真实接管业务'] },
          { name: '涵盖范围 ', formType: 'input', field: 'COL57' },
          { name: '高管审批', formType: 'yesno', field: 'COL58' },
          { name: '演练后评估改进应急预案', formType: 'yesno', field: 'COL59' },
        ],
      },
    ],

    remarks: {
      rows: 10,
      field: 'COL49',
    },
  },

  {
    serialNumber: '6',
    project: '附件',
    code: 'TB9006',
    type: 'AttachTable',
    content: [
      {
        field: 'col1',
        title: '名称',
        width: '20%',
      },
      {
        field: 'col2',
        title: '附件索引',
        slots: { default: 'form_default' },
      },
    ],
    datas: [
      {
        col1: '业务影响分析报告',
        col2: { formType: 'input', field: 'COL61' },
      },
      {
        col1: '业务连续性计划',
        col2: { formType: 'input', field: 'COL62' },
      },
      {
        col1: '本年度业务连续性演练报告',
        col2: { formType: 'input', field: 'COL63' },
      },
    ],

    remarks: {
      rows: 10,
      field: 'COL64',
    },
  },
];
