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: 'br' },
      { type: 'text', value: '已识别的重要业务总数' },
      { type: 'number', field: 'COL21', unit: '个' },
      { type: 'text', value: '，重要业务详细情况如下' },
      { type: 'brspace' },
      {
        serialNumber: '1006',
        code: 'TB90031',
        type: 'VxeTable',
        project: '重要业务详细情况',
        columns: [
          { field: 'C24A002', title: '一级业务名称', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'C24A003', title: '二级业务名称', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'C24A004', title: '交易渠道', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'C24A005', title: '涉及重要信息系统', width: 300, editRender: { name: 'VxeInput' } },
          { field: 'C24A006', title: '日均流量(万笔)', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'COL24', title: '业务恢复指标RTO(分钟)', width: 200, editRender: { name: 'VxeNumberInput' } },
          { field: 'COL25', title: '业务恢复指标RPO(分钟)', width: 200, editRender: { name: 'VxeNumberInput' } },
          { field: 'COL26', title: '业务归口管理部门', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'COL27', title: '业务影响分析开展部门', width: 200, editRender: { name: 'VxeInput' } },
          { field: 'COL28', title: '完成时间', width: 200, editRender: { name: 'VxeDatePicker' } },
          {
            field: 'COL29',
            title: '报告审批',
            width: 300,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '是', value: '是' },
                { label: '否', value: '否' },
              ],
            },
          },
          { title: '操作', slots: { default: 'action' }, width: 100 },
        ],
        datas: [],
      },
    ],
    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: 'radio-group', field: 'C24A001', options: ['是', '否'] },
      { type: 'brspace' },
      {
        serialNumber: '1006',
        code: 'TB90051',
        type: 'VxeTable',
        project: '演练明细',
        columns: [
          { field: 'COL50', title: '演练日期', width: 150, editRender: { name: 'VxeDatePicker' } },
          {
            field: 'COL51',
            title: '牵头部门',
            width: 200,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '信息科技部门', value: '信息科技部门' },
                { label: '风险管理部门', value: '风险管理部门' },
                { label: '内部审计部门', value: '内部审计部门' },
                { label: '合规部门', value: '合规部门' },
                { label: '业务部门', value: '业务部门' },
                { label: '其他', value: '其他' },
              ],
            },
          },
          { field: 'COL52', title: '牵头部门其他', width: 150, editRender: { name: 'VxeInput' } },
          {
            field: 'COL53',
            title: '参与部门',
            width: 250,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '办公室', value: '办公室' },
                { label: '信息科技部门', value: '信息科技部门' },
                { label: '风险管理部门', value: '风险管理部门' },
                { label: '内部审计部门', value: '内部审计部门' },
                { label: '合规部门', value: '合规部门' },
                { label: '业务部门', value: '业务部门' },
                { label: '后勤保障部门', value: '后勤保障部门' },
                { label: '其他', value: '其他' },
              ],
            },
          },
          { field: 'COL54', title: '参与部门其他', width: 150, editRender: { name: 'VxeInput' } },
          {
            field: 'COL55',
            title: '演练内容',
            width: 200,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '关键基础设施演练', value: '关键基础设施演练' },
                { label: '重要信息系统演练', value: '重要信息系统演练' },
                { label: '重要业务演练', value: '重要业务演练' },
                { label: '其他', value: '其他' },
              ],
            },
          },
          { field: 'COLA05', title: '演练内容其他', width: 150, editRender: { name: 'VxeInput' } },
          {
            field: 'COL56',
            title: '演练方式',
            width: 200,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '模拟', value: '模拟' },
                { label: '切换测试', value: '切换测试' },
                { label: '切换并真实接管业务', value: '切换并真实接管业务' },
              ],
            },
          },
          { field: 'COL57', title: '涵盖范围', width: 200, editRender: { name: 'VxeInput' } },
          {
            field: 'COL58',
            title: '高管审批',
            width: 120,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '是', value: '是' },
                { label: '否', value: '否' },
              ],
            },
          },
          {
            field: 'COL59',
            title: '演练后评估改进应急预案',
            width: 200,
            editRender: {
              name: 'VxeSelect',
              options: [
                { label: '是', value: '是' },
                { label: '否', value: '否' },
              ],
            },
          },
          { title: '操作', slots: { default: 'action' }, width: 100 },
        ],
        datas: [],
      },
    ],

    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',
    },
  },
];
