import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { h } from 'vue';
import { StatusColorEnum } from '/@/enums/jeecgEnum';
import { isEmpty } from 'lodash-es';

// 1. 颜色映射（修正原拼写错误，统一规则）
// export const StatusColorEnum: Record<string, string> = {
//   blue: '#1890ff',
//   green: '#208840',
//   gold: '#faad14',
//   red: '#f5222d',
//   gray: '#8c8c8c',
//   black: '#000000',
// };

// 2. 定义生产状态映射类型（和dataQuality保持一致）
export type ProductionStatusMap = Record<
  string | number,
  {
    label: string;
    value: number | string;
    color: string;
  }
>;

// 3. 生成动态表格列（接收动态状态映射）
export const columns: BasicColumn[] = [
  {
    title: '煤矿编号',
    dataIndex: 'mineCode',
    width: 100,
  },
  {
    title: '所属上级',
    dataIndex: 'parentArea',
    width: 100,
  },
  {
    title: '煤矿名称',
    dataIndex: 'mineName',
    width: 200,
  },
  {
    title: '煤矿简称',
    dataIndex: 'mineNameAbbr',
    width: 100,
    ifShow: false,
  },
  {
    title: '生产状态',
    dataIndex: 'gjMineStatus',
    width: 100,
    // customRender: ({ record }) => {
    //   // 空值/异常值处理
    //   const status = String(record.productionStatus || '');
    //   // 从动态映射取值，兜底未知状态
    //   const { label, color } = dynamicStatusMap.value[status] || {
    //     label: '-',
    //   };
    //   // 渲染带颜色的文字
    //   return h(
    //     'span',
    //     {
    //       style: { color: StatusColorEnum[color] },
    //     },
    //     label
    //   );
    // },
  },
  {
    title: '煤层自燃倾向性',
    dataIndex: 'fire',
    width: 100,
  },
  {
    title: '瓦斯等级',
    dataIndex: 'gasLevelName',
    width: 100,
  },
  {
    title: '接入状态',
    dataIndex: 'accessStatus',
    width: 100,
    customRender: ({ record }) => {
      // 空值/异常值处理
      const status = String(record.accessStatus);
      if (isEmpty(status)) {
        return h('span', '-');
      }
      const text = status === '1' ? '接入' : '未接入';
      const textColor = status === '1' ? StatusColorEnum.green : StatusColorEnum.gold;
      return h('span', { style: { color: textColor } }, text);
    },
  },
  {
    title: '在线状态',
    dataIndex: 'status',
    width: 100,
    customRender: ({ record }) => {
      const status = String(record.status);
      if (isEmpty(status)) {
        return h('span', '-');
      }
      const text = status === '1' ? '在线' : '中断';
      const textColor = status === '1' ? StatusColorEnum.green : StatusColorEnum.red;
      return h('span', { style: { color: textColor } }, text);
    },
  },
  // {
  //   title: '应接数量',
  //   dataIndex: 'yingjieNum',
  //   width: 100,
  // },
  {
    title: '已接数量',
    dataIndex: 'accessGoafNum',
    width: 100,
  },
  // {
  //   title: '未接数量',
  //   dataIndex: 'notAccessGoafNum',
  //   width: 100,
  // },
];

// 4. 生成动态搜索表单配置（接收动态下拉选项）
export const searchFormSchema: FormSchema[] = [
  {
    field: 'deptId',
    label: '煤矿名称',
    component: 'MineCascader',
    colProps: { span: 6 },
    componentProps: {
      initFromStore: true,
      syncToStore: false,
    },
  },
  {
    field: 'mineNameAbbr',
    label: '煤矿简称',
    component: 'Input',
    colProps: { span: 6 },
    show: false,
  },
  {
    field: 'gjMineStatus',
    label: '生产状态',
    component: 'JDictSelectTag',
    componentProps: {
      dictCode: 'mineProStatus',
      placeholder: '请选择生产状态',
    },
    colProps: { span: 6 },
  },
  {
    field: 'accessStatus',
    label: '接入状态',
    component: 'Select',
    componentProps: {
      options: [
        { label: '接入', value: '1' },
        { label: '未接入', value: '0' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'status',
    label: '在线状态',
    component: 'Select',
    componentProps: {
      options: [
        { label: '中断', value: '0' },
        { label: '在线', value: '1' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'gasLevelName',
    label: '瓦斯等级',
    component: 'Select',
    componentProps: {
      options: [
        { label: '低瓦斯', value: '低瓦斯' },
        { label: '高瓦斯', value: '高瓦斯' },
        { label: '突出', value: '突出' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'riskLevel',
    label: '风险等级',
    component: 'Select',
    componentProps: {
      options: [
        { label: 'Ⅰ类容易自燃', value: '0' },
        { label: 'Ⅱ类自燃', value: '1' },
        { label: 'Ⅲ类不易自燃', value: '2' },
      ],
    },
    colProps: { span: 6 },
    show: false,
  },
  {
    field: 'fire',
    label: '煤层自燃倾向性',
    component: 'Select',
    componentProps: {
      options: [
        { label: '不易自燃', value: '不易自燃' },
        { label: '容易自燃', value: '容易自燃' },
        { label: '未检测', value: '未检测' },
        { label: '自燃', value: '自燃' },
      ],
    },
    colProps: { span: 6 },
  },
];

// 3. 生成动态表格列（接收动态状态映射）
export const coalSeamColumns: BasicColumn[] = [
  {
    title: '煤层名称',
    dataIndex: 'coalSeamName',
  },
  {
    title: '自燃倾向性',
    dataIndex: 'coalSeamLevel',
  },
];
