import { dateUtil } from '/nerv-lib/util/date-util';
import { device } from '/@/api/deviceManage';
import { ref } from 'vue';
import { http } from '/nerv-lib/util';

export const tableConfig = (orgId) => {
  return ref({
    title: '设备信息',
    api: device.queryDevicePage,
    params: { orgId },
    treeConfig: {
      header: {
        icon: 'deviceType',
        title: '设备类别',
      },
      params: { orgId },
      dynamicParams: 'code',
      defaultExpandAll: true,
      api: device.queryDeviceTree,
      fieldNames: { title: 'deviceType', key: 'code' },
      formConfig: {
        schemas: [
          {
            field: 'deviceType',
            label: '设备名称',
            component: 'NsInput',
            autoSubmit: true,
            componentProps: {
              placeholder: '请输入设备类型',
            },
          },
        ],
      },
    },
    rowSelection: null,
    columns: [
      {
        title: '设备名称',
        dataIndex: 'deviceName',
      },
      {
        title: '设备型号',
        dataIndex: 'deviceModel',
      },
      {
        title: 'SN码',
        dataIndex: 'snCode',
        textNumber: 5,
        textEllipsis: true,
      },
      {
        title: '设备一级区域',
        dataIndex: 'device1Area',
        textNumber: 5,
        textEllipsis: true,
      },
      {
        title: '设备二级区域',
        dataIndex: 'device2Area',
        textNumber: 5,
        textEllipsis: true,
      },
      {
        title: '设备详细位置',
        dataIndex: 'deviceAddress',
        textNumber: 5,
        textEllipsis: true,
      },
      {
        title: '设备规格',
        dataIndex: 'deviceTp',
        textNumber: 4,
      },
      {
        title: '设备厂商纳税人识别号',
        dataIndex: 'deviceRatepay',
        textNumber: 8,
        textEllipsis: true,
      },
      {
        title: '设备厂商',
        textNumber: 4,
        dataIndex: 'manufacturer',
      },
      {
        title: '厂商联系人',
        dataIndex: 'contactPerson',
      },
      {
        title: '设备描述',
        dataIndex: 'deviceDesc',
        textNumber: 5,
        textEllipsis: true,
      },
      {
        title: 'IP地址',
        dataIndex: 'ipAddress',
      },
      {
        title: '生产日期',
        dataIndex: 'manufactureDate',
      },
      {
        title: '采购日期',
        dataIndex: 'purchaseDate',
      },
      {
        title: '启用日期',
        dataIndex: 'startDate',
      },
      {
        title: '设备成本（元）',
        dataIndex: 'equipmentCost',
        textNumber: 6,
      },
      {
        title: '使用期限',
        dataIndex: 'usagePeriod',
        textNumber: 4,
        customRender: ({ value }) => `${value}年`,
      },
      {
        title: '额定功率',
        dataIndex: 'ratedPower',
        textNumber: 4,
        // customRender: ({ value }) => `${value}年`,
      },
      {
        title: '特殊参数',
        textNumber: 4,
        dataIndex: 'specialParameters',
      },
    ],

    formConfig: {
      schemas: [
        {
          field: 'deviceName',
          label: '设备名称',
          component: 'NsInput',
          componentProps: {
            placeholder: '请输入设备名称',
          },
        },
        {
          field: 'areas',
          label: '设备区域',
          component: 'NsCascader',
          format: (record) => {
            console.log(record);

            return record?.reduce(
              (pre, cur) => {
                const len = cur?.length - 1;
                pre[len].push(cur[len]);
                return pre;
              },
              [[], []],
            );
          },
          fieldMap: ['area1', 'area2'],
          componentProps: {
            placeholder: '请选择设备区域',
            multiple: true,
            loadData: (selectedOptions, options) => {
              const targetOption = selectedOptions[selectedOptions.length - 1];
              if (!selectedOptions.length) {
                http.post(device.dropArea, { orgId }).then((res) => {
                  options.value = res.data?.map((item) => {
                    return { label: item, value: item, children: [], isLeaf: false };
                  });
                });
              }
              const value = targetOption?.value;
              if (targetOption) {
                targetOption.loading = true;
                http.post(device.dropArea, { device1Area: value, orgId }).then((res) => {
                  targetOption.loading = false;
                  targetOption.children = res.data?.map((item) => {
                    return { label: item, value: item, children: [], isLeaf: true };
                  });
                });
              }
            },
          },
        },
        {
          field: 'manufacturer',
          label: '设备厂商',
          component: 'NsInput',
          componentProps: {
            placeholder: '请输入设备厂商',
            options: [
              {
                label: '全部',
                value: '',
              },
            ],
          },
        },
        {
          field: 'createTime',
          label: '生产日期',
          component: 'NsRangePicker',
          fieldMap: ['manufactureBeginDate', 'manufactureEndDate'],
          componentProps: {
            valueFormat: 'YYYY-MM-DD',
            placeholder: ['设备生产开始日期', '设备生产结束日期'],
          },
        },
        {
          field: 'createTime1',
          label: '采购日期',
          component: 'NsRangePicker',
          fieldMap: ['purchaseBeginDate', 'purchaseEndDate'],
          componentProps: {
            valueFormat: 'YYYY-MM-DD',
            placeholder: ['设备采购开始日期', '设备采购结束日期'],
          },
        },
        {
          field: 'createTime2',
          label: '启用日期',
          component: 'NsRangePicker',
          fieldMap: ['startBeginDate', 'startEndDate'],
          componentProps: {
            valueFormat: 'YYYY-MM-DD',
            placeholder: ['设备启用开始日期', '设备启用结束日期'],
          },
        },
      ],
      params: {},
    },
    // pagination: { pageSizeOptions: false },
    rowKey: 'uuid',
  });
};
