import type { CrudSchema } from '@/hooks/web/useCrudSchemas' import { dateFormatter2 } from '@/utils/formatTime' import { validateHanset, validateEmail } from '@/utils/validator' import { dateFormatter } from '@/utils/formatTime' import { validateTwoNum, validateSixNum } from '@/utils/validator' const { t } = useI18n() // 国际化 import { DICT_TYPE, getStrDictOptions } from '@/utils/dict' const resultEntryMethodList = getStrDictOptions(DICT_TYPE.INSPECTION_CHARACTERISTICS_RESULT_ENTRY) const featureTypeList = getStrDictOptions(DICT_TYPE.INSPECTION_CHARACTERISTICS_FEATURE_TYPE) const isCanUpdateList = [ { label: '是', value: true }, { label: '否', value: false } ] /** * @returns {Array} 检验任务主表 */ export const InspectionJobMain = useCrudSchemas( reactive([ { label: '编码', field: 'number', sort: 'custom', isSearch: true, form: { componentProps: { disabled: true } }, table: { width: 200, fixed: 'left' } }, { label: '申请单号', field: 'requestNumber', sort: 'custom', isSearch: true, form: { componentProps: { disabled: true } }, table: { width: 200 } }, { label: '发货单号', field: 'asnNumber', sort: 'custom', isSearch: true, form: { componentProps: { disabled: true } }, table: { width: 180 } }, { label: '供应商编码', field: 'supplierCode', sort: 'custom', isSearch: true, form: { componentProps: { disabled: true } }, table: { width: 175 } }, { label: '供应商名称', field: 'supplierName', sort: 'custom', isSearch: false, table: { width: 175 }, form: { componentProps: { disabled: true } } }, { label: '物料编码', field: 'itemCode', sort: 'custom', isSearch: false, table: { width: 150 }, form: { componentProps: { disabled: true } } }, { label: '物料名称', field: 'itemName', sort: 'custom', isSearch: false, table: { width: 175 }, form: { componentProps: { disabled: true } } }, { label: '物料批次', field: 'batch', sort: 'custom', isSearch: false, form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '参考订单号', field: 'referenceOrderCode', sort: 'custom', isSearch: false, form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '参考订单行', field: 'referenceOrderRow', sort: 'custom', isSearch: false, form: { component: 'InputNumber', value: 0, componentProps: { disabled: true } }, table: { width: 150 } }, { label: '参考凭证号', field: 'referenceCertificateCode', sort: 'custom', isSearch: false, form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '参考凭证行', field: 'referenceCertificateRow', sort: 'custom', isSearch: false, form: { component: 'InputNumber', value: 0, componentProps: { disabled: true } }, table: { width: 150 } }, { label: '检验方案编码', field: 'inspectionSchemeCode', sort: 'custom', isSearch: false, form: { componentProps: { disabled: true } }, table: { width: 200 } }, { label: '批次', field: 'inspectionBatch', sort: 'custom', isSearch: false, isDetail: true, form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '供应商批次', field: 'supplierBatch', sort: 'custom', isSearch: false, isDetail: true, form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '检验批数量', field: 'inspectionBatchAmount', sort: 'custom', isSearch: false, form: { componentProps: { disabled: true } }, table: { width: 150 } }, // { // label: '采样总数量', // field: 'sampleTotalAmount', // sort: 'custom', // isSearch: false, // form: { // componentProps:{ // disabled:true // } // }, // table: { // width: 150 // } // }, { label: '检验类型', field: 'inspectionType', sort: 'custom', dictType: DICT_TYPE.INSPECTION_TYPE_NEW, dictClass: 'string', isSearch: true, form: { component: 'Select', componentProps: { disabled: true } }, table: { width: 150 } }, { label: '完成人', field: 'completeUser', sort: 'custom', dictType: DICT_TYPE.TRUE_FALSE, dictClass: 'string', // 默认都是字符串类型其他暂不考虑 isTable: false, isDetail: false, isSearch: true, isTableForm: false, isForm: false }, // { // label: '检验批来源', // field: 'inspectionBatchSource', // sort: 'custom', // isSearch: false, // dictType: DICT_TYPE.INSPECTION_BATCH_SOURCE, // dictClass: 'string', // form:{ // componentProps:{ // disabled:true // } // }, // table: { // width: 150 // } // }, { label: '检验阶段', field: 'inspectionStage', sort: 'custom', isSearch: false, form: { component: 'InputNumber', value: 0, componentProps: { disabled: true } }, table: { width: 150 } }, { label: '检验严格性', field: 'inspectionStringency', sort: 'custom', isSearch: false, dictType: DICT_TYPE.INSPECTION_SEVERITY, dictClass: 'string', form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: '计划开始时间', field: 'planStartTime', sort: 'custom', formatter: dateFormatter, isSearch: false, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD HH:mm:ss', type: 'daterange', defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] } }, form: { component: 'DatePicker', componentProps: { type: 'datetime', valueFormat: 'x', disabled: true } }, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, table: { width: 175 } }, { label: '计划结束时间', field: 'planEndTime', sort: 'custom', formatter: dateFormatter, isSearch: false, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD HH:mm:ss', type: 'daterange', defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] } }, form: { component: 'DatePicker', componentProps: { type: 'datetime', valueFormat: 'x', disabled: true } }, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, table: { width: 175 } }, { label: '检验水平', field: 'inspectionLevel', sort: 'custom', isSearch: false, dictType: DICT_TYPE.INSPECTION_LEVEL, dictClass: 'string', form: { componentProps: { disabled: true } }, table: { width: 150 } }, { label: 'AQL值', field: 'aqlValue', sort: 'custom', isSearch: false, dictType: DICT_TYPE.BASIC_AQL, dictClass: 'string', form: { componentProps: { disabled: true } }, table: { width: 150 } }, // { // label: '使用决策', // field: 'usageDecision', // sort: 'custom', // isSearch: false, // dictType: DICT_TYPE.USAGE_DECISION, // form:{ // componentProps:{ // } // } // }, // { // label: '是否可用', // field: 'available', // dictType: DICT_TYPE.TRUE_FALSE, // dictClass: 'string', // isTable: true, // sort: 'custom', // table: { // width: 150 // }, // form: { // component: 'Switch', // value: 'TRUE', // componentProps: { // inactiveValue: 'FALSE', // activeValue: 'TRUE', // disabled:true // } // } // }, { label: '承接人', field: 'acceptUserName', table: { width: 130 }, isForm: false, isTable: false, isDetail: true }, { label: '承接时间', field: 'acceptTime', isForm: false, table: { width: 180 }, isTable: false, isDetail: true, formatter: dateFormatter, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, form: { component: 'DatePicker', componentProps: { style: { width: '100%' }, type: 'datetime', dateFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'x' } } }, { label: '收货时间', field: 'deliveryTime', sort: 'custom', formatter: dateFormatter, isSearch: false, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD HH:mm:ss', type: 'daterange', defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] } }, form: { component: 'DatePicker', componentProps: { type: 'datetime', valueFormat: 'x' } }, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, table: { width: 175 } }, { label: '完成人', field: 'completeUserName', table: { width: 130 }, isForm: false, isTable: true, isDetail: true }, { label: '完成时间', field: 'completeTime', isForm: false, table: { width: 180 }, formatter: dateFormatter, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, form: { component: 'DatePicker', componentProps: { style: { width: '100%' }, type: 'datetime', dateFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'x' } } }, { label: '状态', field: 'status', dictType: DICT_TYPE.JOB_STATUS, dictClass: 'string', isForm: false, isTable: true, isSearch: true, sort: 'custom', table: { width: 150 } }, { label: '是否可用', field: 'available', sort: 'custom', isSearch: true, dictType: DICT_TYPE.TRUE_FALSE, dictClass: 'string', // 默认都是字符串类型其他暂不考虑 search: { value: 'TRUE' }, form: { component: 'Switch', value: 'TRUE', componentProps: { inactiveValue: 'FALSE', activeValue: 'TRUE' } }, table: { width: 110 } }, { label: '创建时间', field: 'createTime', isForm: false, table: { width: 180 }, formatter: dateFormatter, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, form: { component: 'DatePicker', componentProps: { style: { width: '100%' }, type: 'datetime', dateFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'x' } }, isSearch: true, search: { component: 'DatePicker', componentProps: { valueFormat: 'YYYY-MM-DD HH:mm:ss', type: 'daterange', defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] } }, }, { label: '创建者', field: 'creator', table: { width: 130 }, isForm: false, isTable: true }, { label: '最后更新时间', field: 'updateTime', sort: 'custom', isDetail: true, isForm: false, isTable: false, formatter: dateFormatter, detail: { dateFormat: 'YYYY-MM-DD HH:mm:ss' }, table: { width: 180 }, form: { component: 'DatePicker', componentProps: { style: { width: '100%' }, type: 'datetime', dateFormat: 'YYYY-MM-DD HH:mm:ss', valueFormat: 'x' } } }, { label: '最后更新者', field: 'updater', isDetail: true, isForm: false, isTable: false, table: { width: 150 } }, { label: '操作', field: 'action', isForm: false, isDetail: false, table: { width: 300, fixed: 'right' } } ]) ) //表单校验 export const InspectionJobMainRules = reactive({ // usageDecision: [required], }) /** * @returns {Array} 检验任务子表 */ export const InspectionJobDetail = useCrudSchemas( reactive([ { label: '编码', field: 'number', sort: 'custom', isSearch: true }, { label: '检验方案模板编码', field: 'inspectionCode', sort: 'custom', isSearch: true }, { label: '描述', field: 'processDescribe', sort: 'custom', isSearch: true }, { label: '顺序号', field: 'sequenceCode', sort: 'custom', isSearch: true, form: { component: 'InputNumber', value: 0 } }, { label: '检验特性编号', field: 'inspectionCharCode', sort: 'custom', isSearch: true }, { label: '检验特性编码', field: 'inspectionJobCharacteristicsRespVO.number', sort: 'custom' }, { label: '检验特性描述', field: 'inspectionJobCharacteristicsRespVO.description', sort: 'custom' }, { label: '检验方法', field: 'inspectionJobCharacteristicsRespVO.inspectionMethodCode', sort: 'custom' }, { label: '采样过程编码', field: 'inspectionJobCharacteristicsRespVO.samplingProcessCode', sort: 'custom' }, { label: '动态修改规则编码', field: 'inspectionJobCharacteristicsRespVO.dynamicUpdateCode', sort: 'custom' }, { label: '是否允许修改特征值', field: 'inspectionJobCharacteristicsRespVO.isCanUpdate', sort: 'custom', formatter: (_: Recordable, __: TableColumn, cellValue: number) => { return isCanUpdateList.find((account) => account.value == cellValue)?.label } }, { label: '结果录入方式', field: 'inspectionJobCharacteristicsRespVO.resultEntryMethod', sort: 'custom', // dictType: DICT_TYPE.INSPECTION_CHARACTERISTICS_RESULT_ENTRY, // dictClass: 'string', formatter: (_: Recordable, __: TableColumn, cellValue: number) => { return resultEntryMethodList.find((account) => account.value == cellValue)?.label } }, { label: '特征类型', field: 'inspectionJobCharacteristicsRespVO.featureType', sort: 'custom', formatter: (_: Recordable, __: TableColumn, cellValue: number) => { return featureTypeList.find((account) => account.value == cellValue)?.label } } ]) ) //表单校验 export const InspectionJobDetailRules = reactive({ taskCode: [required], processCode: [required], sequenceCode: [required], available: [required] }) /** * @returns {Array} 检验任务包装 */ export const InspectionJobPackage = useCrudSchemas( reactive([ { label: '编码', field: 'number', sort: 'custom', isSearch: true, tableForm: { disabled: true }, table: { width: 200 } }, { label: '包装号', field: 'packageCode', sort: 'custom', isSearch: true, tableForm: { disabled: true }, table: { width: 200 } }, { label: '包装规格', field: 'packageSpecificationCode', sort: 'custom', isSearch: true, tableForm: { disabled: true }, table: { width: 180 } }, { label: '数量', field: 'amount', sort: 'custom', isSearch: true, form: { component: 'InputNumber', value: 0 }, tableForm: { disabled: true }, table: { width: 150 } }, { label: '计量单位', field: 'measuringUnit', sort: 'custom', isSearch: true, tableForm: { disabled: true }, table: { width: 150 } }, { label: '采样数量', field: 'sampleAmount', sort: 'custom', isSearch: true, isTable: false, table: { width: 150 } } ]) ) //表单校验 export const InspectionJobPackageRules = reactive({ sampleAmount: [required, { validator: validateSixNum, trigger: 'blur' }] })