import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
import { dateFormatter,dateFormatter2 } from '@/utils/formatTime'
import * as getRequestsettingApi  from '@/api/wms/requestsetting/index'

import * as WorkshopApi from '@/api/wms/workshop'
import { Workshop } from '@/views/wms/basicDataManage/factoryModeling/workshop/workshop.data'

import * as ShiftApi from '@/api/wms/shift'
import { Shift } from '@/views/wms/basicDataManage/orderManage/shift/shift.data'

import * as TeamApi from '@/api/wms/team'
import { Team } from '@/views/wms/basicDataManage/orderManage/team/team.data'

import * as WorkstationApi from '@/api/wms/workstation'
import { Workstation } from '@/views/wms/basicDataManage/factoryModeling/workstation/workstation.data'

import * as ProcessApi from '@/api/wms/process'
import { Process } from '@/views/wms/basicDataManage/factoryModeling/process/process.data'

import * as ProductionlineitemApi from '@/api/wms/productionlineitem'
import { Productionlineitem } from '@/views/wms/basicDataManage/itemManage/productionlineitem/productionlineitem.data'

import * as ProductionlineApi from '@/api/wms/productionline'
import { Productionline } from '@/views/wms/basicDataManage/factoryModeling/productionline/productionline.data'

import * as BomApi from '@/api/wms/bom'
import { Bom } from '@/views/wms/basicDataManage/itemManage/bom/bom.data'

import * as SupplieritemApi  from '@/api/wms/supplieritem'
import { Supplieritem } from '@/views/wms/basicDataManage/supplierManage/supplieritem/supplieritem.data'

import { Itempackaging } from '@/views/wms/basicDataManage/itemManage/itempackage/itempackage.data'
import * as ItemPackageApi from '@/api/wms/itempackage/index'

const { t } = useI18n() // 国际化

// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值
const queryParams = {
  pageSize:10,
  pageNo:1,
  code:'ProductReceiptRequest'
}
 const data = await getRequestsettingApi.getRequestsettingPage(queryParams)
 const requestsettingData =data?.list[0]||{}

 // 获取当前操作人的部门
 import { useUserStore } from '@/store/modules/user'
 import { TableColumn } from '@/types/table'
 const userStore = useUserStore()
 const userDept = userStore.userSelfInfo.dept
 // id 转str 否则form回显匹配不到
 userDept.id = userDept.id.toString()
 const userDeptArray:any = [userDept]
 
/**
 * @returns {Array} 制品收货申请主表
 */
export const ProductreceiptRequestMain = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '单据号',
    field: 'number',
    sort: 'custom',
    table: {
      width: 180,
      fixed: 'left'
    },
    isForm: false,
    isSearch: true,
  },
  {
    label: '生产计划单号',
    field: 'productionPlanNumber',
    sort: 'custom',
    table: {
      width: 180
    },
    isSearch: true,
    isForm: false,
  },
  {
    label: '车间代码',
    field: 'workshopCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isSearch: true,
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择车间',
        searchField: 'code',
        searchTitle: '车间信息',
        searchAllSchemas: Workshop.allSchemas,
        searchPage: WorkshopApi.getWorkshopPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
      }
    }
  },
  {
    label: '班组',
    field: 'team',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择班组',
        searchField: 'code',
        searchTitle: '班组信息',
        searchAllSchemas: Team.allSchemas,
        searchPage: TeamApi.getTeamPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
      }
    }
  },
  {
    label: '班次',
    field: 'shift',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择班次',
        searchField: 'code',
        searchTitle: '班次信息',
        searchAllSchemas: Shift.allSchemas,
        searchPage: ShiftApi.getShiftPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
      }
    }
  },
  {
    label: '收货类型',
    field: 'type',
    dictType: DICT_TYPE.PLAN_PRODUCTION_TYPE,
    dictClass: 'string',
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false
  },
  {
    label: '到仓库代码',
    field: 'toWarehouseCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false,
  },
  {
    label: '到库区类型范围',
    field: 'toAreaTypes',
    dictType: DICT_TYPE.AREA_TYPE,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false,
  },
  {
    label: '到库区代码范围',
    field: 'toAreaCodes',
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false,
  },
  {
    label: '业务类型',
    field: 'businessType',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      value: 'ProductReceipt',
      componentProps: {
        disabled: true
      }
    },
    isForm: false,
  },
  {
    label: '备注',
    field: 'remark',
    sort: 'custom',
    table: {
      width: 150
    },
    isTable: false
  },
  {
    label: '创建时间',
    field: 'createTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
    isForm: false
  },
  {
    label: '创建者',
    field: 'creator',
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false
  },
  {
    label: '申请时间',
    field: 'requestTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
    isForm: false
  },
  {
    label: '截止时间',
    field: 'dueTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '部门',
    field: 'departmentCode',
    sort: 'custom',
    table: {
      width: 150
    },
    formatter: (_: Recordable, __: TableColumn, cellValue: number) => {
      return userDeptArray.find((account) => account.id == cellValue)?.name
    },
    form: {
      value: userDept.id,
      component: 'Select',
      api: () => userDeptArray,
      componentProps: {
        disabled: true,
        optionsAlias: {
          labelField: 'name',
          valueField: 'id'
        }
      }
    }
  },
  {
    label: '状态',
    field: 'status',
    dictType: DICT_TYPE.REQUEST_STATUS,
    dictClass: 'string',
    isSearch: true,
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      value: '1',
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '最后更新时间',
    field: 'updateTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
    isForm: false
  },
  {
    label: '最后更新者',
    field: 'updater',
    sort: 'custom',
    table: {
      width: 150
    },
    isForm: false
  },
  {
    label: '自动提交',
    field: 'autoCommit',
    dictType: DICT_TYPE.TRUE_FALSE,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'Switch',
      value: requestsettingData.autoCommit,
      componentProps: {
        inactiveValue: 'FALSE',
        activeValue: 'TRUE',
        disabled: true
      }
    }
  },
  {
    label: '自动通过',
    field: 'autoAgree',
    dictType: DICT_TYPE.TRUE_FALSE,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'Switch',
      value: requestsettingData.autoAgree,
      componentProps: {
        inactiveValue: 'FALSE',
        activeValue: 'TRUE',
        disabled: true
      }
    }
  },
  {
    label: '自动执行',
    field: 'autoExecute',
    dictType: DICT_TYPE.TRUE_FALSE,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'Switch',
      value: requestsettingData.autoExecute,
      componentProps: {
        inactiveValue: 'FALSE',
        activeValue: 'TRUE',
        disabled: true
      }
    }
  },
  {
    label: '直接生成记录',
    field: 'directCreateRecord',
    dictType: DICT_TYPE.TRUE_FALSE,
    dictClass: 'string',
    isForm: false,
    isTable: false,
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'Switch',
      value: requestsettingData.directCreateRecord,
      componentProps: {
        inactiveValue: 'FALSE',
        activeValue: 'TRUE',
        disabled: true
      }
    }
  },
  {
    label: '操作',
    field: 'action',
    isDetail: false,
    isForm: false,
    table: {
      width: 300,
      fixed: 'right'
    },
  }
]))

//表单校验
export const ProductreceiptRequestMainRules = reactive({
  workshopCode: [
    { required: true, message: '请选择车间代码', trigger: 'change' }
  ],
  team: [
    { required: true, message: '请选择班组代码', trigger: 'change' }
  ],
  shift: [
    { required: true, message: '请选择班次代码', trigger: 'change' }
  ],
  // departmentCode: [
  //   { required: true, message: '请输入部门', trigger: 'blur' }
  // ],
  autoCommit: [
    { required: true, message: '请选择是否自动提交', trigger: 'change' }
  ],
  autoAgree: [
    { required: true, message: '请选择是否自动通过', trigger: 'change' }
  ],
  autoExecute: [
    { required: true, message: '请选择是否自动执行', trigger: 'change' }
  ],
  directCreateRecord: [
    { required: true, message: '请选择是否跳过任务直接生成记录', trigger: 'change' }
  ],
  remark:  [
    { max: 50, message: '不得超过50个字符', trigger: 'blur' }
  ],
})

/**
 * @returns {Array} 制品收货申请子表
 */
export const ProductreceiptRequestDetail = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '生产线代码',
    field: 'productionLineCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择生产线代码',
      searchField: 'code',
      searchTitle: '生产线信息',
      searchAllSchemas: Productionline.allSchemas,
      searchPage: ProductionlineApi.getProductionlinePage,
      searchCondition: [{
        key: 'available',
        value: 'TRUE',
        isMainValue: false
      },{
        key: 'workshopCode',
        value: 'workshopCode',
        message: '请填写车间代码!',
        isMainValue: true
      }]
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择生产线代码',
        searchField: 'code',
        searchTitle: '生产线信息',
        searchAllSchemas: Productionline.allSchemas,
        searchPage: ProductionlineApi.getProductionlinePage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        },{
          key: 'workshopCode',
          value: 'workshopCode',
          message: '请填写车间代码!',
          isMainValue: true
        }]
      }
    }
  },
  {
    label: '工位代码',
    field: 'workStationCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择工位代码',
      searchField: 'code',
      searchTitle: '工位信息',
      searchAllSchemas: Workstation.allSchemas,
      searchPage: WorkstationApi.getWorkstationPage,
      searchCondition: [{
        key: 'available',
        value: 'TRUE',
        isMainValue: false
      },{
        key: 'productionLineCode',
        value: 'productionLineCode',
        message: '请填写生产线代码!',
        isMainValue: true
      }]
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择工位代码',
        searchField: 'code',
        searchTitle: '工位信息',
        searchAllSchemas: Workstation.allSchemas,
        searchPage: WorkstationApi.getWorkstationPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        },{
          key: 'productionLineCode',
          value: 'productionLineCode',
          message: '请填写生产线代码!',
          isMainValue: true
        }]
      }
    }
  },
  {
    label: '工序代码',
    field: 'processCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择工序代码',
      searchField: 'code',
      searchTitle: '工序信息',
      searchAllSchemas: Process.allSchemas,
      searchPage: ProcessApi.getProcessPage,
      searchCondition: [{
        key: 'available',
        value: 'TRUE',
        isMainValue: false
      }]
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择工序代码',
        searchField: 'code',
        searchTitle: '工序信息',
        searchAllSchemas: Process.allSchemas,
        searchPage: ProcessApi.getProcessPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
      }
    }
  },
  {
    label: '包装号',
    field: 'packingNumber',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '器具号',
    field: 'containerNumber',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '库存状态',
    field: 'inventoryStatus',
    dictType: DICT_TYPE.INVENTORY_STATUS,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '订单号',
    field: 'woNumber',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '订单行',
    field: 'woLine',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '包装数量',
    field: 'packQty',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'InputNumber',
      componentProps: {
        min: 1,
        precision: 6
      },
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '包装规格',
    field: 'packUnit',
    // dictType: DICT_TYPE.PACK_UNIT,
    // dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '到货主代码',
    field: 'toOwnerCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '单据号',
    field: 'number',
    sort: 'custom',
    table: {
      width: 180
    },
    isTableForm: false,
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '物料代码',
    field: 'itemCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择物料代码',
      searchField: 'itemCode',
      searchTitle: '生产线物料关系信息',
      searchAllSchemas: Productionlineitem.allSchemas,
      searchPage: ProductionlineitemApi.getProductionlineitemPage,
      searchCondition: [{
        key: 'available',
        value: 'TRUE',
        isMainValue: false
      },{
        key: 'productionLineCode',
        value: 'productionLineCode',
        message: '请填写生产线代码!',
        isMainValue: true
      }]
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true,
        searchListPlaceholder: '请选择物料代码',
        searchField: 'itemCode',
        searchTitle: '生产线物料关系信息',
        searchAllSchemas: Productionlineitem.allSchemas,
        searchPage: ProductionlineitemApi.getProductionlineitemPage,
        searchCondition: [{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        },{
          key: 'productionLineCode',
          value: 'productionLineCode',
          message: '请填写生产线代码!',
          isMainValue: true
        }]
      }
    }
  },
  {
    label: 'Bom版本',
    field: 'bomVersion',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择Bom版本', // 输入框占位文本
      searchField: 'version', // 查询弹窗赋值字段
      searchTitle: '物料清单信息', // 查询弹窗标题
      searchAllSchemas: Bom.allSchemas, // 查询弹窗所需类
      searchPage: BomApi.getBomPage, // 查询弹窗所需分页方法
      searchCondition: [{
        key:'productItemCode',
        value:'itemCode',
        message: '请填写物料代码!',
        isMainValue: true
      },{
        key: 'available',
        value: 'TRUE',
        isMainValue: false
      }]
    },
    form: {
      // labelMessage: '信息提示说明!!!',
      componentProps: {
        isSearchList: true, // 开启查询弹窗
        searchListPlaceholder: '请选择Bom版本', // 输入框占位文本
        searchField: 'version', // 查询弹窗赋值字段
        searchTitle: '物料清单信息', // 查询弹窗标题
        searchAllSchemas: Bom.allSchemas, // 查询弹窗所需类
        searchPage: BomApi.getBomPage, // 查询弹窗所需分页方法
        searchCondition: [{
          key:'productItemCode',
          value:'itemCode',
          message: '请填写物料代码!',
          isMainValue: true
        },{
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
      }
    },
  },
  {
    label: '批次',
    field: 'batch',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '物料名称',
    field: 'itemName',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料描述1',
    field: 'itemDesc1',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料描述2',
    field: 'itemDesc2',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '项目代码',
    field: 'projectCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '数量',
    field: 'qty',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'InputNumber',
      componentProps: {
        min: 0,
        precision: 6
      },
    },
    tableForm: {
      type: 'InputNumber',
      min: 0,
      precision: 6
    }
  },
  {
    label: '计量单位',
    field: 'uom',
    dictType: DICT_TYPE.UOM,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      type: 'Select'
    }
    
  },
  {
    label: '生产日期',
    field: 'produceDate',
    formatter: dateFormatter2,
    detail: {
      dateFormat: 'YYYY-MM-DD'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    tableForm: {
      type: 'FormDate',
      valueFormat: 'x',
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'date',
        dateFormat: 'YYYY-MM-DD',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '过期日期',
    field: 'expireDate',
    formatter: dateFormatter2,
    detail: {
      dateFormat: 'YYYY-MM-DD'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    tableForm: {
      type: 'FormDate',
      valueFormat: 'x',
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'date',
        dateFormat: 'YYYY-MM-DD',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '备注',
    field: 'remark',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '创建时间',
    field: 'createTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '创建者',
    field: 'creator',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '最后更新时间',
    field: 'updateTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        style: {width: '100%'},
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '最后更新者',
    field: 'updater',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '操作',
    field: 'action',
    isDetail: false,
    isForm: false ,
    table: {
      width: 150,
      fixed: 'right'
    },
    isTableForm:false,
  }
]))

//表单校验
export const ProductreceiptRequestDetailRules = reactive({
  produceDate: [
    { required: true, message: '请选择生产日期', trigger: 'change' }
  ],
  expireDate: [
    { required: true, message: '请选择过期日期', trigger: 'change' }
  ],
  batch: [
    { required: true, message: '请输入批次', trigger: 'blur' },
    { max: 50, message: '不得超过50个字符', trigger: 'blur' }
  ],
  itemCode: [
    { required: true, message: '请选择物料代码', trigger: 'change' }
  ],
  bomVersion: [
    { required: true, message: '请选择Bom版本', trigger: 'change' }
  ],
  workStationCode: [
    { required: true, message: '请选择工位代码', trigger: 'change' }
  ],
  uom: [
    { required: true, message: '请选择计量单位', trigger: 'change' }
  ],
  productionLineCode: [
    { required: true, message: '请选择生产线代码', trigger: 'change' }
  ],
  remark:  [
    { max: 50, message: '不得超过50个字符', trigger: 'blur' }
  ],
})

/**
 * @returns {Array} 制品收货申请子表
 */
export const BackflushRequestDetailb = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '工序代码',
    field: 'processCode',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '单据号',
    field: 'number',
    sort: 'custom',
    table: {
      width: 180
    },
  },
  {
    label: '物料代码',
    field: 'itemCode',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '备注',
    field: 'remark',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '创建时间',
    field: 'createTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '创建者',
    field: 'creator',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '物料名称',
    field: 'itemName',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '物料描述1',
    field: 'itemDesc1',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '物料描述2',
    field: 'itemDesc2',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '项目代码',
    field: 'projectCode',
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '数量',
    field: 'qty',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      component: 'InputNumber',
    }
  },
  {
    label: '计量单位',
    field: 'uom',
    dictType: DICT_TYPE.UOM,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
  },
  {
    label: '最后更新时间',
    field: 'updateTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    form: {
      component: 'DatePicker',
      componentProps: {
        type: 'datetime',
        dateFormat: 'YYYY-MM-DD HH:mm:ss',
        valueFormat: 'x',
      }
    },
  },
  {
    label: '最后更新者',
    field: 'updater',
    sort: 'custom',
    table: {
      width: 150
    },
  }
]))

//表单校验
export const BackflushRequestDetailbRules = reactive({
  number: [
    { required: true, message: '请输入单据号', trigger: 'blur' }
  ],
  itemCode: [
    { required: true, message: '请选择物料代码', trigger: 'change' }
  ],
  createTime: [
    { required: true, message: '请输入创建时间', trigger: 'blur' }
  ],
  creator: [
    { required: true, message: '请输入创建者', trigger: 'blur' }
  ],
  
})





/**
 * @returns {Array} 制品收货申请子表二子表
 */
export const BackflushDetailRequest = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '工序代码',
    field: 'processCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: 'BOM版本',
    field: 'bomVersion',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料代码',
    field: 'itemCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料名称',
    field: 'itemName',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料描述1',
    field: 'itemDesc1',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '物料描述2',
    field: 'itemDesc2',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '项目代码',
    field: 'projectCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '数量',
    field: 'qty',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '计量单位',
    field: 'uom',
    dictType: DICT_TYPE.UOM,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '单据号',
    field: 'number',
    sort: 'custom',
    table: {
      width: 180,
      fixed: 'left'
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '备注',
    field: 'remark',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '创建时间',
    field: 'createTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '创建者',
    field: 'creator',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '最后更新时间',
    field: 'updateTime',
    formatter: dateFormatter,
    detail: {
      dateFormat: 'YYYY-MM-DD HH:mm:ss'
    },
    sort: 'custom',
    table: {
      width: 180
    },
    isTableForm: false,
    isForm: false
  },
  {
    label: '最后更新者',
    field: 'updater',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false
  },
]))


/**
 * @returns {Array} 制品收货申请创建标签
 */
export const ProductreceiptRequestLabel = useCrudSchemas(reactive<CrudSchema[]>([
  {
    label: '生产线代码',
    field: 'productionLineCodePackage',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      disabled: true
      // isInpuFocusShow: true,
      // searchListPlaceholder: '请选择生产线代码', // 输入框占位文本
      // searchField: 'productionLineCode', // 查询弹窗赋值字段
      // searchTitle: '生产线物料关系信息', // 查询弹窗标题
      // searchAllSchemas: Productionlineitem.allSchemas, // 查询弹窗所需类
      // searchPage: ProductionlineitemApi.getProductionlineitemPage, // 查询弹窗所需分页方法
      // searchCondition:[{
      //   key: 'itemCode',
      //   value: 'itemCode',
      //   isMainValue: true
      // }]
    }
  },
  {
    label: '供应商代码',
    field: 'supplierItemCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm:{
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择供应商代码', // 输入框占位文本
      searchField: 'supplierCode', // 查询弹窗赋值字段
      searchTitle: '供应商信息', // 查询弹窗标题
      searchAllSchemas: Supplieritem.allSchemas, // 查询弹窗所需类
      searchPage: SupplieritemApi.getSupplieritemPage, // 查询弹窗所需分页方法
      searchCondition:[{
        key: 'itemCode',
        value: 'itemCode',
        message: '请填写物料代码!',
        isMainValue: true
      }]
    }
  },
  {
    label: '物料代码',
    field: 'itemCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '物料名称',
    field: 'itemName',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false,
  },
  {
    label: '物料描述1',
    field: 'itemDesc1',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false,
  },
  {
    label: '物料描述2',
    field: 'itemDesc2',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false,
  },
  {
    label: '项目代码',
    field: 'projectCode',
    sort: 'custom',
    table: {
      width: 150
    },
    isTableForm: false,
    isForm: false,
  },
  {
    label: '批次',
    field: 'batch',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true,
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '数量',
    field: 'qty',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '计量单位',
    field: 'uom',
    dictType: DICT_TYPE.UOM,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '库存状态',
    field: 'inventoryStatus',
    dictType: DICT_TYPE.INVENTORY_STATUS,
    dictClass: 'string',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      type: 'Select',
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '来源生产线代码',
    field: 'productionLineCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '来源生产线代码',
    field: 'productionLineCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '来源工位代码',
    field: 'workStationCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '来源库位代码',
    field: 'fromLocationCode',
    sort: 'custom',
    table: {
      width: 150
    },
    tableForm: {
      disabled: true
    },
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '单据号',
    field: 'number',
    sort: 'custom',
    table: {
      width: 180
    },
    isTableForm: false,
    form: {
      componentProps: {
        disabled: true
      }
    }
  },
  {
    label: '包装规格1',
    field: 'packUnit',
    sort: 'custom',
    table: {
      width: 180
    },
    tableForm: {
      disabled: true
    },
  },
  {
    label: '包装数量1',
    field: 'packQty',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      componentProps: {
        disabled: true
      }
    },
    tableForm: {
      disabled: true,
    }
  },
  {
    label: '包装规格2',
    field: 'secondPackUnit',
    isTable: true,
    sort: 'custom',
    table: {
      width: 150,
      componentProps: {
        disabled: true,
        isSearchList: true,
        searchListPlaceholder: '请选择包装',
        searchField: 'packUnit',
        searchTitle: '物品包装信息',
        searchAllSchemas: Itempackaging.allSchemas,
        searchPage: ItemPackageApi.getItempackagingPageByProductreceipt,
        searchCondition: [
          {
            key: 'itemCode',
            value: 'itemCode',
            message: '请选择订单行',
            isMainValue: true
          },
          {
            key: 'available',
            value: 'TRUE',
            isMainValue: false
          }
        ]

      }
    },
    tableForm: {
      disabled: true,
      isInpuFocusShow: true,
      searchListPlaceholder: '请选择包装',
      searchField: 'packUnit',
      searchTitle: '物品包装信息',
      searchAllSchemas: Itempackaging.allSchemas,
      searchPage: ItemPackageApi.getItempackagingPageByProductreceipt,
      searchCondition: [
        {
          key: 'itemCode',
          value: 'itemCode',
          message: '请选择订单行',
          isMainValue: true
        },
        {
          key: 'available',
          value: 'TRUE',
          isMainValue: false
        }]
    }
  },
  {
    label: '包装数量2',
    field: 'secondPackQty',
    sort: 'custom',
    table: {
      width: 150
    },
    form: {
      componentProps: {
        disabled:true
      }
    },
    tableForm: {
      disabled: true,
    }
  },
]))

//表单校验
export const ProductreceiptRequestLabelRules = reactive({
  supplierItemCode: [
    { required: true, message: '请选择供应商', trigger: 'change' }
  ],
  productionLineCodePackage: [
    { required: true, message: '请选择生产线', trigger: 'change' }
  ]
})