Ben Lin
2025-03-08 745815f637e5385b2cbc23a6ae02401bb8b6c675
src/views/tigerprojects/bas/checkrule/checkrule.data.ts
@@ -1,7 +1,7 @@
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';
@@ -19,6 +19,49 @@
  {
    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: '校验位数',
@@ -47,7 +90,7 @@
          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);
@@ -192,7 +235,10 @@
            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}}`;
@@ -497,12 +543,16 @@
              // 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) => {
@@ -616,10 +666,14 @@
              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) {
@@ -835,6 +889,77 @@
    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',
@@ -932,9 +1057,7 @@
    label: '条码长度',
    component: 'Input',
    colProps: { span: 8 },
    dynamicDisabled: ({ values }) => {
      return true;
    },
    dynamicDisabled: true,
  },
  {
    field: 'CHECK_TYPE',