| | |
| | | import { BasicColumn } from '/@/components/Table'; |
| | | import { FormSchema } from '/@/components/Table'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { isEmpty, isNullOrEmpty, isNullOrUnDef, isObject, isString } from '/@/utils/is'; |
| | | import { isEmpty, isNullOrEmpty, isNullOrUnDef, isNumber, isObject, isString } from '/@/utils/is'; |
| | | import { h } from 'vue'; |
| | | import { Tag } from 'ant-design-vue'; |
| | | import { useMessage } from '/@/hooks/web/useMessage'; |
| | |
| | | { |
| | | title: '明细描述', |
| | | dataIndex: 'DESCRIPTION', |
| | | }, |
| | | { |
| | | title: '数据类型', |
| | | dataIndex: 'DATA_TYPE', |
| | | customRender: ({ record }) => { |
| | | const type = record.DATA_TYPE; |
| | | var text = ''; |
| | | var color = 'blue'; |
| | | switch (type) { |
| | | case Data_Types.Character: |
| | | text = '纯字母'; |
| | | break; |
| | | case Data_Types.Numeric: |
| | | text = '纯数字'; |
| | | color = 'yellow'; |
| | | break; |
| | | case Data_Types.DateCode: |
| | | text = '日期'; |
| | | color = 'orange'; |
| | | break; |
| | | case Data_Types.TimeCode: |
| | | text = '时间'; |
| | | color = '#bfbfbf'; |
| | | break; |
| | | case Data_Types.DbCheck: |
| | | text = '关联校验'; |
| | | color = '#0b9da9'; |
| | | break; |
| | | case Data_Types.FixedCode: |
| | | text = '固定值'; |
| | | color = 'green'; |
| | | break; |
| | | case Data_Types.SerialCode: |
| | | text = '流水号'; |
| | | color = '#b442df'; |
| | | break; |
| | | } |
| | | return h(Tag, { color: color }, () => text); |
| | | }, |
| | | }, |
| | | { |
| | | title: '校验位数', |
| | | dataIndex: 'CHECK_LENGTH', |
| | | }, |
| | | { |
| | | title: '校验位数', |
| | |
| | | text = record.DATA_VALUE; |
| | | break; |
| | | case Data_Types.SerialCode: |
| | | text = `${PrefixInteger(record.SERIAL_MIN,record.CHECK_LENGTH)}-${PrefixInteger(record.SERIAL_MAX,record.CHECK_LENGTH)}`; |
| | | text = `${PrefixInteger(record.SERIAL_MIN, record.CHECK_LENGTH)}-${PrefixInteger(record.SERIAL_MAX, record.CHECK_LENGTH)}`; |
| | | break; |
| | | } |
| | | return h(Tag, { color: color }, () => text); |
| | |
| | | formModel.CHECK_LENGTH = ''; |
| | | } |
| | | if (e == Data_Types.DbCheck || e == Data_Types.NoCheck) { |
| | | formModel.DATA_REGEX = `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`; |
| | | formModel.DATA_REGEX = |
| | | formModel.CHECK_LENGTH > 0 |
| | | ? `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}` |
| | | : `(.*){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | if (e == Data_Types.SerialCode) { |
| | | formModel.DATA_REGEX = `([0-9]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`; |
| | |
| | | // return Math.max(maxLength, str.length); |
| | | }, 0); |
| | | formModel.CHECK_LENGTH = _length; |
| | | if (formModel.FIXED_NOTLIKE == 'Y') { |
| | | formModel.DATA_RANGE = `${val}`; |
| | | formModel.DATA_REGEX = `([^${e.target.value.replace(new RegExp(',', 'g'), '|')}]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | }, |
| | | rules: [ |
| | | { |
| | | { |
| | | required: true, |
| | | // @ts-ignore |
| | | validator: async (rule, value) => { |
| | |
| | | formModel.DATA_REGEX = `(${_regex}){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | } |
| | | if ( |
| | | formModel.DATA_TYPE == Data_Types.DbCheck || |
| | | formModel.DATA_TYPE == Data_Types.NoCheck |
| | | ) { |
| | | //formModel.CHECK_LENGTH>0? `(.{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`: `(.*){${formModel.REPEAT_TIMES}}`; |
| | | if (formModel.DATA_TYPE == Data_Types.DbCheck) { |
| | | formModel.DATA_REGEX = |
| | | val > 0 |
| | | ? `(.{${val}}){${formModel.REPEAT_TIMES}}` |
| | | : `(.*){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | if (formModel.DATA_TYPE == Data_Types.NoCheck) { |
| | | formModel.DATA_REGEX = `(.{${val}}){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | if (formModel.DATA_TYPE == Data_Types.SerialCode) { |
| | |
| | | ifShow: ({ values }) => isSerial(values.DATA_TYPE), |
| | | }, |
| | | { |
| | | field: 'FIXED_NOTLIKE', |
| | | label: '是否不包含固定值', |
| | | required: true, |
| | | component: 'Select', |
| | | colProps: { span: 12 }, |
| | | componentProps: ({ schema, tableAction, formActionType, formModel }) => { |
| | | return { |
| | | options: [ |
| | | { |
| | | label: '是', |
| | | value: 'Y', |
| | | }, |
| | | { |
| | | label: '否', |
| | | value: 'N', |
| | | }, |
| | | ], |
| | | onChange: (e) => { |
| | | if (isFixed(formModel.DATA_TYPE)) { |
| | | var val = typeof e == 'object' && e != null ? e.target.value : e; |
| | | formModel.DATA_RANGE =val == 'N'? formModel.DATA_VALUE: `${formModel.DATA_VALUE}`; |
| | | formModel.DATA_REGEX = |
| | | val == 'N' |
| | | ? `(${formModel.DATA_VALUE.replace(new RegExp(',', 'g'), '|')}){${formModel.REPEAT_TIMES}}` |
| | | : `([^${formModel.DATA_VALUE.replace(new RegExp(',', 'g'), '|')}]{${formModel.CHECK_LENGTH}}){${formModel.REPEAT_TIMES}}`; |
| | | } |
| | | }, |
| | | }; |
| | | }, |
| | | ifShow: ({ values }) => isFixed(values.DATA_TYPE), |
| | | }, |
| | | { |
| | | field: 'SERIAL_INTERVAL', |
| | | label: '流水号取号间隔', |
| | | component: 'Input', |
| | | dynamicRules: ({ values }) => { |
| | | return [ |
| | | { |
| | | required: true, |
| | | validator: (_, value) => { |
| | | if (!value) { |
| | | return Promise.reject('流水号取号间隔不能为空!'); |
| | | } |
| | | if (!isNumber(value)) { |
| | | return Promise.reject('请输入数字!'); |
| | | } |
| | | if (Number(value) < 0) { |
| | | return Promise.reject('必需输入大于0的数字!'); |
| | | } |
| | | return Promise.resolve(); |
| | | }, |
| | | }, |
| | | ]; |
| | | }, |
| | | show: true, |
| | | colProps: { span: 12 }, |
| | | dynamicDisabled: ({ values }) => { |
| | | return false; |
| | | }, |
| | | ifShow: ({ values }) => isSerial(values.DATA_TYPE), |
| | | }, |
| | | { |
| | | field: 'SERIAL_IGNORE', |
| | | label: '流水号跳号', |
| | | component: 'Input', |
| | | // required: true, |
| | | show: true, |
| | | colProps: { span: 24 }, |
| | | ifShow: ({ values }) => isSerial(values.DATA_TYPE), |
| | | }, |
| | | { |
| | | field: 'DATA_RANGE', |
| | | label: '校验范围', |
| | | component: 'Input', |
| | |
| | | label: '条码长度', |
| | | component: 'Input', |
| | | colProps: { span: 8 }, |
| | | dynamicDisabled: ({ values }) => { |
| | | return true; |
| | | }, |
| | | dynamicDisabled: true, |
| | | }, |
| | | { |
| | | field: 'CHECK_TYPE', |