import creditApi from "@/api/order/credit";
import { returnOptions } from "./config";
import type { IModalConfig } from "@/components/CURD/types";

const modalConfig: IModalConfig = {
  pageName: "sys:user",
  dialog: {
    title: "编辑挂账人",
    width: 800,
    draggable: true,
  },
  form: {
    labelWidth: 140,
  },
  formAction: function (data) {
    return creditApi.edit({ ...data });
  },
  beforeSubmit(data) {
    console.log("提交之前处理", data);
  },
  formItems: [


    {
      label: "挂账人",
      prop: "debtor",
      rules: [{ required: true, message: "请输入挂账人", trigger: "blur" }],
      attrs: {
        placeholder: "请输入挂账人",
      },
    },
    {
      label: "手机号",
      prop: "mobile",
      rules: [{ required: true, message: "请输入挂账人手机号", trigger: "blur" }],
      attrs: {
        placeholder: "请输入挂账人手机号",
      },
    },
    {
      label: "职务",
      prop: "position",
      rules: [{ required: false, message: "请输入挂账人职务", trigger: "blur" }],
      attrs: {
        placeholder: "请输入挂账人职务",
      },
    },
    {
      label: "挂账额度",
      prop: "creditAmount",
      type: "input-number",
      rules: [{ required: true, message: "请输入挂账额度", trigger: "blur" }],
      attrs: {
        placeholder: "请输入挂账额度",
      },
      initialValue: 0
    },
    // ===================== 新增 =====================
    {
      label: "还款提醒日",
      prop: "expireRemindDay",
      type: "input",
      rules: [
        {
          validator: (rule, value, callback) => {
            if (!value) return callback();
            const num = Number(value);
            if (!Number.isInteger(num) || num < 1 || num > 28) {
              callback(new Error("请输入 1~28 之间的整数"));
            }
            callback();
          }
        }
      ],
      attrs: {
        type: "number",
        placeholder: "每月几号提醒（1-28）",
        style: { width: "200px" },
        oninput: "value=value.replace(/\\D|\\./g,'')" // 禁止输入小数点
      },
      initialValue: "",
    },
    {
      label: "还款提醒",
      prop: "expireRemind",
      type: "input",
      rules: [
        {
          validator: (rule, value, callback) => {
            if (!value) return callback();
            const num = Number(value);
            if (!Number.isInteger(num) || num < 0) {
              callback(new Error("请输入大于等于 0 的整数"));
            }
            callback();
          }
        }
      ],
      attrs: {
        type: "number",
        placeholder: "提醒多久以前的数据单位(月)",
        style: { width: "240px" },
        oninput: "value=value.replace(/\\D|\\./g,'')" // 禁止输入小数点
      },
      initialValue: "",
    },
    // ================================================
    {
      label: "还款方式",
      prop: "repaymentMethod",
      type: "radio-button",
      options: returnOptions('repaymentMethod'),
      initialValue: returnOptions('repaymentMethod')[0].value
    },
    {
      label: "状态",
      prop: "status",
      type: 'switch',
      attrs: {
        activeText: '开启',
        inactiveText: '关闭',
        activeValue: 1,
        inactiveValue: 0
      },
      initialValue: 1
    },
  ],
};

// 如果有异步数据会修改配置的，推荐用reactive包裹，而纯静态配置的可以直接导出
export default reactive(modalConfig);
