Appearance
竞价管理
采购负责人 purchasePrincipal
json
{
"groupCode": "baseForm",
"fieldType": "remoteSelect",
"fieldLabel": "采购负责人",
"fieldName": "purchasePrincipal",
"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;
}
const { subAccount = "", realname = "" } = data[0] || {};
pageData.purchasePrincipal = `${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: {
status: "1",
},
}竞价范围 ebiddingScope
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "竞价范围",
"fieldName": "ebiddingScope",
"dictCode": "srmEbiddingScope",
"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,
},
) {
// 竞价范围 ebiddingScope;
// 数据字典 srmEbiddingScope (0: 邀请竞价,1: 公开竞价)
/**
* @description: 业务规则
* 邀请竞价时,供应商资格要求、报名截止时间不可编辑, 否则取反
* @return {*}
*/
setItemDisabled("baseForm", "supllierQualification", value === "0");
setItemDisabled("baseForm", "publicScope", value === "0");
/**
* @description: 业务规则
* 竞价范围为'公开竞价','报名截止时间'必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled("baseForm", "applyEndTime", value === "1");
/**
* @description: 业务规则
* 竞价方式为'英式'时, 报价方式无限制;
* 阶段类型为'邀请竞价'时,表行'附件需求清单', 阶段类型数据字典为'srmEbidding4StageType'
* 否则设置为 srmEbiddingStageType
* 数据字典 srmEbidding4StageType (4: 应标阶段);
* 数据字典 srmEbiddingStageType (1: 报名阶段, 4: 应标阶段);
*/
customFormatItem(
"purchaseAttachmentDemandList",
"stageType",
function fn(item) {
item.options = [];
item.dictCode =
value === "1" ? "srmEbiddingStageType" : "srmEbidding4StageType";
},
);
}需要应标 needEcho
json
{
"groupCode": "baseForm",
"fieldType": "switch",
"fieldLabel": "需要应标",
"fieldName": "needEcho",
"dictCode": "yn",
"defaultValue": "0",
"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 (value === "0") {
pageData.echoEndTime = "";
console.warn("需要应标为‘否’,请空‘应标截止时间’");
}
/**
* @description: 业务规则
* 需要应标为'是', '应标截止时间'必填, 否则置灰
* @return {*}
*/
setItemRequiredOrDisabled("baseForm", "echoEndTime", value === "1");
}竞价方式 ebiddingMethod
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "竞价方式",
"fieldName": "ebiddingMethod",
"dictCode": "srmEbiddingMethod",
"required": "1",
"helpText": "荷式:报价向竞标者的目标价靠拢;英式:报价向招标方的目标价靠拢;日式:与英式的区别是招标方出价,竞标者确认是否接受"
}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,
},
) {
// 竞价方式 ebiddingMethod;
// 数据字典 srmEbiddingMethod (0: 英式, 1: 日式, 2: 荷式);
// 报价方式 ebiddingWay;
// 数据字典 srmEbiddingWay (0: 打包, 1: 逐条, 2: 批量, 3: 一次性);
// 数据字典 srmEbiddingWayFilter (0: 打包, 1: 逐条);
const ebiddingMethod = pageData.ebiddingMethod || "";
// 竞价方式: 英式
const ebiddingMethodZero = ebiddingMethod === "0";
// 竞价方式: 荷式
const ebiddingMethodTwo = ebiddingMethod === "2";
const ebiddingWay = pageData.ebiddingWay || "";
// 报价方式: 逐条
const ebiddingWayOne = ebiddingWay === "1";
// 延期规则 delayRule;
// 数据字典 srmEbiddingDelayRule (0: 不允许延期, 1: 不限制延期次数, 2: 有限制次数延期);
const delayRule = pageData.delayRule || "";
// 延期规则: 不限制延期次数
const delayRuleOne = delayRule === "1";
// 延期规则: 有限制次数延期
const delayRuleTwo = delayRule === "2";
/**
* @description: 业务规则
* 竞价方式为'英式'时, 报价方式无限制;
* 竞价方式为'日式/荷式'时, 只能选择'逐条'或者'打包', 不能选中批量, 且修改数据字典;
*/
function customRule() {
const flag =
ebiddingMethod &&
ebiddingMethod !== "0" &&
ebiddingWay &&
(ebiddingWay === "2" || ebiddingWay === "3");
if (flag) {
pageData.ebiddingWay = "";
console.warn(
"竞价方式为'日式/荷式'时, 只能选择'逐条'或者'打包', 不能选中'批量' 或 '一次性'",
);
}
customFormatItem("baseForm", "ebiddingWay", function fn(item) {
item.options = [];
item.dictCode =
ebiddingMethod && ebiddingMethod !== "0"
? "srmEbiddingWayFilter"
: "srmEbiddingWay";
});
}
customRule();
/**
* @description: 业务规则
* 英式或荷式竞价 + 报价方式为'逐条'时,'时间间隔(分钟)'必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"intervalMinute",
(ebiddingMethodZero || ebiddingMethodTwo) && ebiddingWayOne,
);
/**
* @description: 业务规则
* 英式竞价时,延期规则必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled("baseForm", "delayRule", ebiddingMethodZero);
/**
* @description: 业务规则
* 英式或荷式竞价时,持续时间(分钟) 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"keepMinute",
ebiddingMethodZero || ebiddingMethodTwo,
);
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“不限制延期次数”或“有限制次数延期”时,结束前多少分钟 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"beforeEndMinute",
ebiddingMethodZero && (delayRuleOne || delayRuleTwo),
);
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“不限制延期次数”或“有限制次数延期”时,延期多少分钟 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"delayMinute",
ebiddingMethodZero && (delayRuleOne || delayRuleTwo),
);
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“有限制次数延期”时,可以延期次数 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"delayCount",
ebiddingMethodZero && delayRuleTwo,
);
/**
* @description: 业务规则
* 竞价方式为'荷式'时 + 逐条报价 + 拆分方式为"数值"时
* 是否允许修改投标数量 可以修改, 否则置灰,且重置值为“0”
*/
function allowModifyCustomRule() {
const flag =
ebiddingMethodTwo && ebiddingWayOne && pageData.quotaWay === "1";
if (!flag) {
pageData.allowModifyQuantity = "0";
console.warn(
"竞价方式为'荷式'时 + 逐条报价 + 拆分方式为数值时才允许修改",
);
}
setItemDisabled("baseForm", "allowModifyQuantity", !flag);
}
allowModifyCustomRule();
}报价方式 ebiddingWay
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "报价方式",
"fieldName": "ebiddingWay",
"dictCode": "srmEbiddingWay",
"required": "1",
"helpText": "逐条指对竞价单行逐行报价,按行项比价和定价;打包指对整张竞价单报总价,按整单总价比对和定价;批量指一次性对所有竞价单行报价,按整单总金额比价和定价;一次性指同时对所有物料行报价,按行项比价和定价"
}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,
},
) {
// 竞价方式 ebiddingMethod;
// 数据字典 srmEbiddingMethod (0: 英式, 1: 日式, 2: 荷式);
const ebiddingMethod = pageData.ebiddingMethod || "";
// 竞价方式: 英式
const ebiddingMethodZero = ebiddingMethod === "0";
// 竞价方式: 荷式
const ebiddingMethodTwo = ebiddingMethod === "2";
// 报价方式 ebiddingWay;
// 数据字典 srmEbiddingWay (0: 打包, 1: 逐条, 2: 批量, 3: 一次性);
// 数据字典 srmEbiddingWayFilter (0: 打包, 1: 逐条);
const ebiddingWay = pageData.ebiddingWay || "";
// 报价方式: 打包
const ebiddingWayZero = ebiddingWay === "0";
// 报价方式: 逐条
const ebiddingWayOne = ebiddingWay === "1";
// 报价方式: 批量
const ebiddingWayTwo = ebiddingWay === "2";
// 价格表生成方式 priceCreateWay
// 数据字典 srmPriceCreateWay (1: 自动生成, 2: 手工生成, 3: 不生成)
const priceCreateWay = pageData.priceCreateWay || "";
// 设置起拍价 setStartPrice
// 数据字典 yn (0: 否, 1: 是)
const setStartPrice = pageData.setStartPrice || "";
const setStartPriceOne = setStartPrice === "1";
// 采购自动报价 purchaseAutoQuote
// 数据字典 yn (0: 否, 1: 是)
const purchaseAutoQuote = pageData.purchaseAutoQuote || "";
const purchaseAutoQuoteOne = purchaseAutoQuote === "1";
/**
* @description: 业务规则
* 竞价方式为'英式'时, 报价方式无限制;
* 竞价方式为'日式/荷式'时, 只能选择'逐条'或者'打包', 不能选中批量, 且修改数据字典;
*/
function customRule() {
const flag =
ebiddingMethod &&
ebiddingMethod !== "0" &&
ebiddingWay &&
(ebiddingWay === "2" || ebiddingWay === "3");
if (flag) {
pageData.ebiddingWay = "";
console.warn(
"竞价方式为'日式/荷式'时, 只能选择'逐条'或者'打包', 不能选中'批量' 或 '一次性'",
);
}
customFormatItem("baseForm", "ebiddingWay", function fn(item) {
item.options = [];
item.dictCode =
ebiddingMethod && ebiddingMethod !== "0"
? "srmEbiddingWayFilter"
: "srmEbiddingWay";
});
}
customRule();
/**
* @description: 业务规则
* 报价方式为'打包'时, 价格表生成方式不允许为'自动生成'
*/
function priceCreateWayCustomRule() {
const flag = ebiddingWay && ebiddingWay === "0";
if (flag && priceCreateWay && priceCreateWay === "1") {
pageData.priceCreateWay = "";
console.warn("报价方式为'打包'时, 价格表生成方式不允许为'自动生成'");
}
customFormatItem("baseForm", "priceCreateWay", function fn(item) {
item.options = [];
item.dictCode = flag ? "srmPriceCreateWayFilter" : "srmPriceCreateWay";
});
}
priceCreateWayCustomRule();
/**
* @description: 业务规则
* 设置起拍价 + 报价方式'打包'或'批量'时, '打包起拍价金额'必填
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"startTotalAmount",
setStartPriceOne && (ebiddingWayZero || ebiddingWayTwo),
);
/**
* @description: 业务规则
* 英式或荷式竞价 + 报价方式为'逐条'时,'时间间隔(分钟)'必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"intervalMinute",
(ebiddingMethodZero || ebiddingMethodTwo) && ebiddingWayOne,
);
/**
* @description: 业务规则
* 报价方式为'逐条' + 设置起拍价 + 采购自动报价,竞价行信息表行'起拍单价'必填
* @return {*}
*/
setItemRequired(
"purchaseEbiddingItemList",
"startPrice",
ebiddingWayOne && setStartPriceOne && purchaseAutoQuoteOne,
);
/**
* @description: 业务规则
* 竞价方式为'荷式'时 + 逐条报价 + 拆分方式为"数值"时
* 是否允许修改投标数量 可以修改, 否则置灰,且重置值为“0”
*/
function allowModifyCustomRule() {
const flag =
ebiddingMethodTwo && ebiddingWayOne && pageData.quotaWay === "1";
if (!flag) {
pageData.allowModifyQuantity = "0";
console.warn(
"竞价方式为'荷式'时 + 逐条报价 + 拆分方式为数值时才允许修改",
);
}
setItemDisabled("baseForm", "allowModifyQuantity", !flag);
}
allowModifyCustomRule();
}供应商税率 supplierTaxRate
json
{
"groupCode": "baseForm",
"fieldType": "switch",
"fieldLabel": "供应商税率",
"fieldName": "supplierTaxRate",
"defaultValue": "1",
"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: 业务规则
* 供应商税率为'是', '需要应标'必填, 否则置灰
* @return {*}
*/
setItemRequired("baseForm", "needEcho", value === "1");
}税码 taxCode
json
{
"groupCode": "baseForm",
"fieldType": "remoteSelect",
"fieldLabel": "税码",
"fieldName": "taxCode",
"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 { taxCode = "", taxRate = "" } = data[0] || {};
pageData.taxCode = taxCode;
pageData.taxRate = taxRate;
// 竞价行信息 税率 + 税码赋值
if (
pageData.purchaseEbiddingItemList &&
pageData.purchaseEbiddingItemList.length
) {
pageData.purchaseEbiddingItemList.forEach((n) => {
n.taxCode = taxCode;
n.taxRate = taxRate;
});
}
}js
{
modalColumns: [
{
field: "taxCode",
title: "税码",
fieldLabelI18nKey: "i18n_field_taxCode",
with: 150,
},
{
field: "taxRate",
title: "税率(%)",
fieldLabelI18nKey: "i18n_field_taxRate",
with: 150,
},
{
field: "taxName",
title: "税码名称",
fieldLabelI18nKey: "i18n_field_taxName",
with: 150,
},
{
field: "remark",
title: "备注",
fieldLabelI18nKey: "i18n_field_remark",
with: 150,
},
],
modalUrl: "/base/tax/queryTaxForTemplate",
afterClearCallBack: function (form, pageData) {
form.taxRate = "";
form.taxCode_dictText = "";
form.taxRate = "";
},
handleAfter: ({ pageData }) => {
pageData.taxCode = "";
pageData.taxCode_dictText = "";
pageData.taxRate = "";
},
}延期规则 delayRule
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "延期规则",
"fieldName": "delayRule",
"dictCode": "srmEbiddingDelayRule",
"defaultValue": "1",
"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,
},
) {
// 竞价方式 ebiddingMethod;
// 数据字典 srmEbiddingMethod (0: 英式, 1: 日式, 2: 荷式);
const ebiddingMethod = pageData.ebiddingMethod || "";
// 竞价方式: 英式
const ebiddingMethodZero = ebiddingMethod === "0";
// 延期规则 delayRule;
// 数据字典 srmEbiddingDelayRule (0: 不允许延期, 1: 不限制延期次数, 2: 有限制次数延期);
const delayRule = pageData.delayRule || "";
// 延期规则: 不限制延期次数
const delayRuleOne = delayRule === "1";
// 延期规则: 有限制次数延期
const delayRuleTwo = delayRule === "2";
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“不限制延期次数”或“有限制次数延期”时,结束前多少分钟 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"beforeEndMinute",
ebiddingMethodZero && (delayRuleOne || delayRuleTwo),
);
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“不限制延期次数”或“有限制次数延期”时,延期多少分钟 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"delayMinute",
ebiddingMethodZero && (delayRuleOne || delayRuleTwo),
);
/**
* @description: 业务规则
* 英式竞价 + 延期规则为“有限制次数延期”时,可以延期次数 必填,否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"delayCount",
ebiddingMethodZero && delayRuleTwo,
);
}价格生效日期 effectiveDate
json
{
"groupCode": "baseForm",
"fieldType": "date",
"fieldLabel": "价格生效日期",
"fieldName": "effectiveDate",
"dataFormat": "YYYY-MM-DD",
"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: 业务规则
* 如果表行:竞价行信息 生效日期 字段未赋,则使用表头已选的 价格生效日期
*/
if (
pageData.purchaseEbiddingItemList &&
pageData.purchaseEbiddingItemList.length
) {
pageData.purchaseEbiddingItemList.forEach((n) => {
n.effectiveDate = value;
});
}
}价格失效日期 expiryDate
json
{
"groupCode": "baseForm",
"fieldType": "date",
"fieldLabel": "价格失效日期",
"fieldName": "expiryDate",
"dataFormat": "YYYY-MM-DD",
"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: 业务规则
* 如果表行:竞价行信息 失效日期 字段未赋,则使用表头已选的 价格失效日期
*/
if (
pageData.purchaseEbiddingItemList &&
pageData.purchaseEbiddingItemList.length
) {
pageData.purchaseEbiddingItemList.forEach((n) => {
n.expiryDate = value;
});
}
}物料编号必填 mustMaterialNumber
json
{
"groupCode": "baseForm",
"fieldType": "switch",
"fieldLabel": "物料编号必填",
"fieldName": "mustMaterialNumber",
"dictCode": "yn",
"defaultValue": "1",
"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 (value === "0") {
pageData.echoEndTime = "";
console.warn("需要应标为‘否’,请空‘应标截止时间’");
}
/**
* @description: 业务规则
* 物料编号必填为'是', 竞价行信息 '物料编号'必填, 否则置灰
* @return {*}
*/
setItemRequiredOrDisabled(
"purchaseEbiddingItemList",
"materialNumber",
value === "1",
);
}设置起拍价 setStartPrice
json
{
"groupCode": "baseForm",
"fieldType": "switch",
"fieldLabel": "设置起拍价",
"fieldName": "setStartPrice",
"dictCode": "yn",
"defaultValue": "0",
"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,
},
) {
// 报价方式 ebiddingWay;
// 数据字典 srmEbiddingWay (0: 打包, 1: 逐条, 2: 批量, 3: 一次性);
const ebiddingWay = pageData.ebiddingWay || "";
// 报价方式: 打包
const ebiddingWayZero = ebiddingWay === "0";
// 报价方式: 逐条
const ebiddingWayOne = ebiddingWay === "1";
// 报价方式: 批量
const ebiddingWayTwo = ebiddingWay === "2";
// 设置起拍价 setStartPrice
// 数据字典 yn (0: 否, 1: 是)
const setStartPrice = pageData.setStartPrice || "";
const setStartPriceOne = setStartPrice === "1";
// 采购自动报价 purchaseAutoQuote
// 数据字典 yn (0: 否, 1: 是)
const purchaseAutoQuote = pageData.purchaseAutoQuote || "";
const purchaseAutoQuoteOne = purchaseAutoQuote === "1";
/**
* @description: 业务规则
* 设置起拍价 + 报价方式'打包'或'批量'时, '打包起拍价金额'必填
* @return {*}
*/
setItemRequiredOrDisabled(
"baseForm",
"startTotalAmount",
setStartPriceOne && (ebiddingWayZero || ebiddingWayTwo),
);
/**
* @description: 业务规则
* 报价方式为'逐条' + 设置起拍价 + 采购自动报价,竞价行信息表行'起拍单价'必填
* @return {*}
*/
setItemRequired(
"purchaseEbiddingItemList",
"startPrice",
ebiddingWayOne && setStartPriceOne && purchaseAutoQuoteOne,
);
}拆分方式 quotaWay
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "拆分方式",
"fieldName": "quotaWay",
"dictCode": "srmQuotaWay",
"defaultValue": "0",
"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,
},
) {
// 竞价方式 ebiddingMethod;
// 数据字典 srmEbiddingMethod (0: 英式, 1: 日式, 2: 荷式);
// 报价方式 ebiddingWay;
// 数据字典 srmEbiddingWay (0: 打包, 1: 逐条, 2: 批量, 3: 一次性);
// 数据字典 srmEbiddingWayFilter (0: 打包, 1: 逐条);
const ebiddingMethod = pageData.ebiddingMethod || "";
// 竞价方式: 荷式
const ebiddingMethodTwo = ebiddingMethod === "2";
const ebiddingWay = pageData.ebiddingWay || "";
// 报价方式: 逐条
const ebiddingWayOne = ebiddingWay === "1";
/**
* @description: 业务规则
* 竞价方式为'荷式'时 + 逐条报价 + 拆分方式为"数值"时
* 是否允许修改投标数量 可以修改, 否则置灰,且重置值为“0”
*/
function allowModifyCustomRule() {
const flag =
ebiddingMethodTwo && ebiddingWayOne && pageData.quotaWay === "1";
if (!flag) {
pageData.allowModifyQuantity = "0";
console.warn(
"竞价方式为'荷式'时 + 逐条报价 + 拆分方式为数值时才允许修改",
);
}
setItemDisabled("baseForm", "allowModifyQuantity", !flag);
}
allowModifyCustomRule();
}采购自动报价 purchaseAutoQuote
json
{
"groupCode": "baseForm",
"fieldType": "switch",
"fieldLabel": "采购自动报价",
"fieldName": "purchaseAutoQuote",
"dictCode": "yn",
"required": "0",
"helpText": "根据起拍价和调整幅度自动出价,采购方无需人工操作。仅限于日式及荷式竞价。"
}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,
},
) {
// 报价方式 ebiddingWay;
// 数据字典 srmEbiddingWay (0: 打包, 1: 逐条, 2: 批量, 3: 一次性);
const ebiddingWay = pageData.ebiddingWay || "";
// 报价方式: 逐条
const ebiddingWayOne = ebiddingWay === "1";
// 设置起拍价 setStartPrice
// 数据字典 yn (0: 否, 1: 是)
const setStartPrice = pageData.setStartPrice || "";
const setStartPriceOne = setStartPrice === "1";
// 采购自动报价 purchaseAutoQuote
// 数据字典 yn (0: 否, 1: 是)
const purchaseAutoQuote = pageData.purchaseAutoQuote || "";
const purchaseAutoQuoteOne = purchaseAutoQuote === "1";
/**
* @description: 业务规则
* 报价方式为'逐条' + 设置起拍价 + 采购自动报价,竞价行信息表行'起拍单价'必填,否则置灰
* @return {*}
*/
setItemRequired(
"purchaseEbiddingItemList",
"startPrice",
ebiddingWayOne && setStartPriceOne && purchaseAutoQuoteOne,
);
}含税价 price 🎉
json
{
"groupCode": "purchaseEbiddingItemList",
"fieldType": "number",
"title": "含税价",
"field": "price",
"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,
},
) {
// 税率 taxRate;
let taxRate = row.taxRate || "0";
// 含税单价 price;
let price = row.price || "";
// 未税单价 netPrice;
let netPrice = row.netPrice || "";
// 报价项 quoteType_dictText
// 数据字典 srmQuoteType (0: 含税价, 1: 不含税价)
const quoteType = pageData.quoteType || "";
if (Decimal) {
let formula = Decimal.add(1, Decimal.div(taxRate, 100));
// 计算当前行未税单价 netPrice
if (quoteType === "0") {
if (taxRate && price) {
if (Decimal) {
let netPrice = Decimal.div(price, formula);
// 4位小数
row.netPrice = new Decimal(netPrice).toFixed(4);
}
}
}
// 计算当前行含税单价 price
if (quoteType === "1") {
if (taxRate && netPrice) {
if (Decimal) {
let price = Decimal.mul(netPrice, formula);
// 4位小数
row.price = new Decimal(price).toFixed(4);
}
}
}
}
}未税价 netPrice 🎉
json
{
"groupCode": "purchaseEbiddingItemList",
"fieldType": "number",
"title": "未税价",
"field": "netPrice",
"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,
},
) {
// 税率 taxRate;
let taxRate = row.taxRate || "0";
// 含税单价 price;
let price = row.price || "";
// 未税单价 netPrice;
let netPrice = row.netPrice || "";
// 报价项 quoteType_dictText
// 数据字典 srmQuoteType (0: 含税价, 1: 不含税价)
const quoteType = pageData.quoteType || "";
if (Decimal) {
let formula = Decimal.add(1, Decimal.div(taxRate, 100));
// 计算当前行未税单价 netPrice
if (quoteType === "0") {
if (taxRate && price) {
if (Decimal) {
let netPrice = Decimal.div(price, formula);
// 4位小数
row.netPrice = new Decimal(netPrice).toFixed(4);
}
}
}
// 计算当前行含税单价 price
if (quoteType === "1") {
if (taxRate && netPrice) {
if (Decimal) {
let price = Decimal.mul(netPrice, formula);
// 4位小数
row.price = new Decimal(price).toFixed(4);
}
}
}
}
}税码 taxCode 🎉
json
{
"groupCode": "purchaseEbiddingItemList",
"fieldType": "remoteSelect",
"title": "税码",
"field": "taxCode",
"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 { taxCode = "", taxRate = "" } = data[0] || {};
row.taxCode = taxCode;
row.taxRate = taxRate;
}js
{
modalColumns: [
{
field: "taxCode",
title: "税码",
fieldLabelI18nKey: "i18n_field_taxCode",
with: 150,
},
{
field: "taxRate",
title: "税率(%)",
fieldLabelI18nKey: "i18n_field_taxRate",
with: 150,
},
{
field: "taxName",
title: "税码名称",
fieldLabelI18nKey: "i18n_field_taxName",
with: 150,
},
{
field: "remark",
title: "备注",
fieldLabelI18nKey: "i18n_field_remark",
with: 150,
},
],
modalUrl: "/base/tax/queryTaxForTemplate",
modalParams: {},
handleAfter: ({ row }) => {
row.taxCode = "";
row.taxCode_dictText = "";
row.taxRate = "";
},
afterRowClearCallBack: function (Vue, row) {
row.taxCode = "";
row.taxRate = "";
},
}