Skip to content
On this page

样品检测

业务模板

表行编辑规则

js
{
  groupName: "行信息",
  groupNameI18nKey: "i18n_title_lineInformation",
  groupCode: "purchaseSampleCheckItemList",
  groupType: "item",
  sortOrder: "2",
  extend: {
    vxeGridConfig: {
      editConfig: {
        trigger: "click", // 点击触发编辑
        mode: "cell", // 单元格编辑模式
        /**
         * @description: 表行编辑规则
         * @param {Object} pageData 页面所有数据, ref响应对象,注意在使用时须带上.value
         * @param {Object} row 表行数据
         * @param {number} rowIndex 表行索引值
         * @param {Object} column 列配置
         * @param {number} columnIndex 列索引
         * @return {boolean} 返回布尔值, 为 true 时允许编辑
         */
        beforeEditMethod(pageData, { row, rowIndex, column, columnIndex }) {
          debugger;

          // 单据状态 checkStatus_dictText
          // 数据字典 sampleCheckStatus (1: 新增, 2: 检测中, 3: 检测完成)

          // 检测完成
          if (pageData.value.checkStatus !== "2") {
            const props = [
              "defectiveQuantity", // 不良数量
              "defectiveType", // 不良分类
              "defectiveDesc", // 不良描述
              "qualified", // 检测判定
            ];
            if (props.includes(column.field)) {
              return false;
            }
          }

          return true;
        },
      },
    },
  },
}

样品检测单号 checkNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "input",
  "fieldLabel": "样品检测单号",
  "fieldName": "checkNumber",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  setItemDisabled("baseForm", "***", pageData.checkStatus !== "1");
}

样品申请单号 sampleNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "customSelectModal",
  "fieldLabel": "样品申请单号",
  "fieldName": "sampleNumber",
  "required": "1"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  pageData.sampleItemId = data[0].id;
  pageData.sampleHeadId = data[0].headId;
  pageData.itemNumber = data[0].itemNumber;
  pageData.sampleNumber = data[0].sampleNumber;
  pageData.toElsAccount = data[0].toElsAccount;
  pageData.supplierCode = data[0].supplierCode;
  pageData.supplierName = data[0].supplierName;
  pageData.purchaseGroup = data[0].purchaseGroup;
  pageData.purchaseOrg = data[0].purchaseOrg;
  pageData.materialNumber = data[0].materialNumber;
  pageData.materialDesc = data[0].materialDesc;
  pageData.cateCode = data[0].cateCode;
  pageData.cateName = data[0].cateName;
  pageData.materialSpec = data[0].materialSpec;
  pageData.materialGroup = data[0].materialGroup;
  pageData.materialGroupName = data[0].materialGroupName;
  pageData.factory = data[0].factory;
  pageData.company = data[0].company;
  pageData.approveQuantity = data[0].repertoryQuantity;
}
js
{
  modalColumns: [
    {
      field: "sampleNumber",
      title: "样品申请单号",
      fieldLabelI18nKey: "i18n_field_VNUVty_b78f9dd0",
      width: 150,
    },
    {
      field: "itemNumber",
      title: "样品申请行号",
      fieldLabelI18nKey: "i18n_title_sampleApplicationLineNumber",
      width: 150,
    },
    {
      field: "toElsAccount",
      title: "供应商账号",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      width: 150,
    },
    {
      field: "materialNumber",
      title: "物料编码",
      fieldLabelI18nKey: "i18n_field_materialNumber",
      width: 150,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      fieldLabelI18nKey: "i18n_field_materialDesc",
      width: 150,
    },
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_field_cateCode",
      width: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_field_cateName",
      width: 150,
    },
    {
      field: "materialSpec",
      title: "物料规格",
      fieldLabelI18nKey: "i18n_field_materialSpec",
      width: 150,
    },
    {
      field: "materialGroup",
      title: "物料组编码",
      fieldLabelI18nKey: "i18n_field_materialGroup",
      width: 150,
    },
    {
      field: "materialGroupName",
      title: "物料组名称",
      fieldLabelI18nKey: "i18n_field_materialGroupName",
      width: 150,
    },
    {
      field: "factory_dictText",
      title: "工厂",
      fieldLabelI18nKey: "i18n_field_factory",
      width: 150,
    },
    {
      field: "repertoryQuantity",
      title: "需求数",
      fieldLabelI18nKey: "i18n_field_requireQuantity",
      width: 100,
    },
    {
      field: "checkedQuantity",
      title: "已检数量",
      fieldLabelI18nKey: "i18n_field_IIWR_2c4a97ed",
      width: 100,
    },
    {
      field: "availableQuantity",
      title: "可用数量",
      fieldLabelI18nKey: "i18n_field_availableQty",
      width: 100,
    },
    {
      field: "itemStatus_dictText",
      title: "行状态",
      fieldLabelI18nKey: "i18n_field_lineStatus",
      width: 100,
    },
  ],
  modalUrl: "/sample/purchaseSampleHead/itemEeliveryList",
  params: {},
  selectModal: "single",
  isClearCallBindFunction: true,
  handleAfter({ pageData }) {
    debugger;
    pageData.sampleItemId = "";
    pageData.sampleHeadId = "";
    pageData.itemNumber = "";
    pageData.sampleNumber = "";
    pageData.toElsAccount = "";
    pageData.supplierCode = "";
    pageData.supplierName = "";
    pageData.purchaseGroup = "";
    pageData.purchaseOrg = "";
    pageData.materialNumber = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.cateName = "";
    pageData.materialSpec = "";
    pageData.materialGroup = "";
    pageData.materialGroupName = "";
    pageData.factory = "";
    pageData.company = "";
    pageData.approveQuantity = "";
  },
}

检测负责人 principal

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "检测负责人",
  "fieldName": "principal",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const { subAccount = "", realname = "" } = data[0] || {};
  pageData.principal = `${subAccount}_${realname}`;
}
js
{
  modalColumns: [
    {
      field: "subAccount",
      title: "子账号",
      fieldLabelI18nKey: "i18n_field_subAccount",
      with: 150,
    },
    {
      field: "realname",
      title: "姓名",
      fieldLabelI18nKey: "i18n_field_realname",
      with: 150,
    },
  ],
  modalUrl: "/account/elsSubAccount/page",
  modalParams: {},
}

检测数量 checkQuantity 🎉

json
{
  "groupCode": "purchaseSampleCheckItemList",
  "fieldType": "number",
  "title": "检测数量",
  "field": "checkQuantity",
  "required": "1"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  /**
   * @description: 业务规则
   * 计算合格数量 = 检测数量 - 不良数量
   */
  // 检测数量
  const checkQuantity = row.checkQuantity;
  // 不良数量
  const defectiveQuantity = row.defectiveQuantity;
  if (checkQuantity && defectiveQuantity) {
    if (Decimal) {
      let qualifiedQuantity = Decimal.sub(checkQuantity, defectiveQuantity);
      // 合格数量
      row.qualifiedQuantity = new Decimal(qualifiedQuantity).toString();
    }
  }
}

不良数量 defectiveQuantity 🎉

json
{
  "groupCode": "purchaseSampleCheckItemList",
  "fieldType": "number",
  "title": "不良数量",
  "field": "defectiveQuantity",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  /**
   * @description: 业务规则
   * 计算合格数量 = 检测数量 - 不良数量
   */
  // 检测数量
  const checkQuantity = row.checkQuantity;
  // 不良数量
  const defectiveQuantity = row.defectiveQuantity;
  if (checkQuantity && defectiveQuantity) {
    if (Decimal) {
      let qualifiedQuantity = Decimal.sub(checkQuantity, defectiveQuantity);
      // 合格数量
      row.qualifiedQuantity = new Decimal(qualifiedQuantity).toString();
    }
  }
}