import type {
  OnActionClickFn,
  VbenFormSchema,
  VxeTableGridOptions,
} from '#/adapter';

import { ConfigApi } from '#/api';

export const useSearchSchema = (): VbenFormSchema[] => {
  return [
    {
      component: 'Input',
      fieldName: 'name',
      label: '名称',
    },
    {
      component: 'Input',
      fieldName: 'code',
      label: '编码',
    },
  ];
};

export function useColumns(
  onActionClick?: OnActionClickFn<ConfigApi.RecordItem>,
): VxeTableGridOptions<ConfigApi.RecordItem>['columns'] {
  return [
    { title: '序号', type: 'seq', width: 50 },
    {
      align: 'left',
      field: 'code',
      title: '编码',
      width: 250,
    },
    { align: 'left', field: 'name', title: '名称', width: 200 },
    { align: 'left', field: 'value', title: '参数值', width: 150 },
    { align: 'left', field: 'remark', title: '备注' },
    {
      align: 'right',
      cellRender: {
        attrs: {
          nameField: 'name',
          nameTitle: '配置',
          onClick: onActionClick,
        },
        name: 'CellAction',
        options: [
          {
            code: 'edit',
            auth: ['config:edit'],
          },
          {
            code: 'delete',
            auth: ['config:delete'],
          },
        ],
      },
      field: 'operation',
      fixed: 'right',
      headerAlign: 'center',
      showOverflow: false,
      title: '操作',
      width: 100,
    },
  ];
}

export const useSchema = (): VbenFormSchema[] => {
  return [
    {
      component: 'Input',
      componentProps: {
        placeholder: '请输入编号',
      },
      fieldName: 'code',
      label: '编号',
      rules: 'required',
    },
    {
      component: 'Input',
      componentProps: {
        placeholder: '请输入名称',
      },
      fieldName: 'name',
      label: '名称',
      rules: 'required',
    },
    {
      component: 'Input',
      componentProps: {
        placeholder: '请输入参数值',
      },
      fieldName: 'value',
      label: '参数值',
      rules: 'required',
    },
    {
      component: 'InputNumber',
      componentProps: {
        placeholder: '请输入排序',
      },
      fieldName: 'sort',
      label: '排序',
      rules: 'required',
    },
    {
      component: 'Input',
      componentProps: {
        placeholder: '请输入',
      },
      fieldName: 'remark',
      label: '备注',
    },
  ];
};
