import { BasicColumn } from '/@/components/Table';
import { FormSchema } from '/@/components/Table';
import { h } from 'vue';
import { Tag } from 'ant-design-vue';

// 生产状态映射表（扩展所有状态）
const productionStatusMap: Record<string | number, { text: string; color: string }> = {
  0: { text: '拟建矿井', color: 'blue' },
  1: { text: '正常生产矿井', color: 'green' },
  2: { text: '正常建设煤矿', color: 'green' },
  3: { text: '自行停产矿井', color: 'green' },
  4: { text: '正在关闭', color: 'green' },
  5: { text: '责令停产整顿', color: 'green' },
  6: { text: '责令停止建设', color: 'green' },
  7: { text: '已关闭矿井', color: 'green' },
  8: { text: '长期停产矿井', color: 'green' },
  9: { text: '长期停建矿井', color: 'green' },
  10: { text: '停产整改矿井', color: 'green' },
  11: { text: '长期停建无法联系', color: 'green' },
  12: { text: '停建整改', color: 'green' },
  13: { text: '自行停建', color: 'green' },
  14: { text: '正在实施关闭', color: 'green' },
  15: { text: '已关闭矿井', color: 'green' },
};

// 通用空值处理函数（非在线状态的空值统一显示「—」）
const formatEmptyValue = (value: any) => {
  return value === null || value === undefined || value === '' || /^\s*$/.test(String(value));
};

export const columns: BasicColumn[] = [
  {
    title: '煤矿编号',
    dataIndex: 'mineCode',
  },
  {
    title: '所属执法处',
    dataIndex: 'managementName',
  },
  {
    title: '煤矿名称',
    dataIndex: 'mineName',
  },
  {
    title: '煤矿简称',
    dataIndex: 'mineNameAbbr',
  },
  {
    title: '生产状态',
    dataIndex: 'productionStatus',
    customRender: ({ record }) => {
      // 空值处理
      // 状态映射 + 标签渲染
      const status = String(record.productionStatus);
      const { text, color } = productionStatusMap[status] || { text: '未知状态', color: 'gray' };
      return h(Tag, { color }, () => text);
    },
  },
  {
    title: '自燃情况',
    dataIndex: 'riskLevel',
  },
  {
    title: '接入状态',
    dataIndex: 'accessStatus',
    customRender: ({ record }) => {
      // 空值处理
      // 状态映射 + 标签渲染
      const status = String(record.accessStatus);
      const text = status === '1' ? '已接入' : '未接入';
      const color = status === '1' ? 'green' : 'gold'; // gold=黄色
      return h(Tag, { color }, () => text);
    },
  },
  {
    title: '在线状态',
    dataIndex: 'status',
    customRender: ({ record }) => {
      // 未连接/空值 显示「/」
      // 状态映射 + 标签渲染
      const status = String(record.status);
      const text = status === '1' ? '在线' : '离线';
      const color = status === '1' ? 'green' : 'red';
      return h(Tag, { color }, () => text);
    },
  },
  {
    title: '应接数量',
    dataIndex: 'yingjieNum',
  },
  {
    title: '已接数量',
    dataIndex: 'accessGoafNum',
  },
  {
    title: '未接数量',
    dataIndex: 'notAccessGoafNum',
  },
];

export const searchFormSchema: FormSchema[] = [
  {
    field: 'mineName',
    label: '煤矿名称',
    component: 'MineCascader',
    colProps: { span: 6 },
  },
  {
    field: 'mineNameAbbr',
    label: '煤矿简称',
    component: 'Input',
    colProps: { span: 6 },
  },
  {
    field: 'productionStatus',
    label: '生产状态',
    component: 'Select',
    componentProps: {
      options: [
        { label: '拟建矿井', value: '0' },
        { label: '正常生产矿井', value: '1' },
        { label: '长期停产矿井', value: '8' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'isConnected',
    label: '是否需要接入',
    component: 'Select',
    componentProps: {
      options: [
        { label: '否', value: '0' },
        { label: '是', value: '1' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'status',
    label: '在线状态',
    component: 'Select',
    componentProps: {
      options: [
        { label: '离线', value: '0' },
        { label: '在线', value: '1' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'riskLevel',
    label: '风险等级',
    component: 'Select',
    componentProps: {
      options: [
        { label: 'Ⅰ类容易自燃', value: '0' },
        { label: 'Ⅱ类自燃', value: '1' },
        { label: 'Ⅲ类不易自燃', value: '2' },
      ],
    },
    colProps: { span: 6 },
  },
  {
    field: 'statusChange',
    label: '状态变化',
    component: 'Select',
    componentProps: {
      options: [
        { label: '否', value: '0' },
        { label: '是', value: '1' },
      ],
    },
    colProps: { span: 6 },
  },
];

export const minesData = [
  {
    mineCode: '61082400879',
    managementName: '执法二处',
    mineName: '府谷县能源有限公司古城一号煤矿',
    mineNameAbbr: '府谷县一号煤矿',
    productionStatus: '0', // 拟建矿井（蓝色）
    riskLevel: '0',
    accessStatus: '0', // 未接入（黄色）
    status: '0', // 离线（红色）
    yingjieNum: '0',
    accessGoafNum: '0',
    notAccessGoafNum: '0',
  },
  {
    mineCode: '61082400878',
    managementName: '执法二处',
    mineName: '府谷县能源有限公司古城二号煤矿',
    mineNameAbbr: '府谷县二号煤矿',
    productionStatus: '1', // 正常生产矿井（绿色）
    riskLevel: '0',
    accessStatus: '1', // 已接入（绿色）
    status: '1', // 在线（绿色）
    yingjieNum: '0',
    accessGoafNum: '0',
    notAccessGoafNum: '0',
  },
  {
    mineCode: '',
    managementName: null,
    mineName: undefined,
    mineNameAbbr: '   ',
    productionStatus: '', // 空值显示「—」
    riskLevel: null,
    accessStatus: undefined, // 空值显示「—」
    status: '', // 未连接显示「/」
    yingjieNum: null,
    accessGoafNum: '   ',
    notAccessGoafNum: undefined,
  },
];
