Appearance
采购合同验收管理
对方 ELS 账号 toElsAccount
json
{
"groupCode": "baseForm",
"fieldType": "remoteSelect",
"fieldLabel": "对方ELS账号",
"fieldName": "toElsAccount",
"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;
}
let { toElsAccount = "", supplierName = "" } = data[0] || {};
pageData.toElsAccount = toElsAccount;
pageData.supplierName = supplierName;
}js
{
modalColumns: [
{
field: "toElsAccount",
title: "供应商ELS账号",
fieldLabelI18nKey: "i18n_title_supplierELSAccount",
with: 150,
},
{
field: "supplierName",
title: "供应商名称",
fieldLabelI18nKey: "i18n_field_supplierName",
with: 150,
},
{
field: "supplierCode",
title: "供应商ERP编码",
fieldLabelI18nKey: "i18n_field_supplierCode",
with: 150,
},
{
field: "supplierStatus_dictText",
title: "供应商状态",
fieldLabelI18nKey: "i18n_field_supplierStatus",
with: 150,
},
{
field: "supplierClassify_dictText",
title: "供应商分类",
fieldLabelI18nKey: "i18n_field_supplierClassify",
with: 150,
},
{
field: "accountGroup_dictText",
title: "供应商账户组",
fieldLabelI18nKey: "i18n_field_accountGroup",
with: 150,
},
],
modalUrl: "/supplier/supplierMaster/list",
selectModal: "single",
modalParams({ pageData }) {
return {
frozenFunctionValue: "3",
purchaseOrg: pageData?.purchaseOrg || "",
};
},
mobileModalParams(Vue, { _pageData, _cacheAllData }) {
return {
frozenFunctionValue: "3",
purchaseOrg: _cacheAllData.purchaseOrg,
};
},
handleAfter({ pageData, userInfo }) {
pageData.toElsAccount = "";
pageData.supplierName = "";
},
}主合同单号 masterContractNumber
json
{
"groupCode": "baseForm",
"fieldType": "selectModal",
"fieldLabel": "主合同单号",
"fieldName": "masterContractNumber",
"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 {
contractNumber = "",
contractType = "",
contractName = "",
contractDesc = "",
supplierName = "",
performingPartyName = "",
invoicedName = "",
payeeName = "",
purchaseGroup = "",
company = "",
purchaseOrg = "",
currency = "",
localCurrency = "",
exchangeRate = "",
standardUnit = "",
purchasePrincipal = "",
edgerAccount = "",
costCenter = "",
fundSource = "",
projectName = "",
projectNumber = "",
contractDrawer = "",
reconciliationNumber = "",
ledgerAccount = "",
fundSource_dictText = "",
} = data[0] || {};
pageData.masterContractNumber = contractNumber;
pageData.contractType = contractType;
pageData.contractName = contractName;
pageData.contractDesc = contractDesc;
pageData.contractParties = supplierName;
pageData.contractPromise = performingPartyName;
pageData.contractDrawer = invoicedName;
pageData.contractReceiver = payeeName;
pageData.company = company;
pageData.purchaseOrg = purchaseOrg;
pageData.purchaseGroup = purchaseGroup;
pageData.currency = currency;
pageData.localCurrency = localCurrency;
pageData.purchasePrincipal = purchasePrincipal;
pageData.standardUnit = standardUnit;
pageData.edgerAccount = edgerAccount;
pageData.costCenter = costCenter;
pageData.fundSource = fundSource;
pageData.projectName = projectName;
pageData.projectNumber = projectNumber;
pageData.contractDrawer = contractDrawer;
pageData.ledgerAccount = ledgerAccount;
pageData.reconciliationNumber = reconciliationNumber;
pageData.fundSource_dictText = fundSource_dictText;
if (localCurrency === currency) {
pageData.exchangeRate = "1";
} else {
pageData.exchangeRate = exchangeRate;
}
}js
{
modalColumns: [
{
field: "contractNumber",
title: "合同单号",
fieldLabelI18nKey: "i18n_field_contractNumber",
with: 150,
},
{
field: "contractName",
title: "合同名称",
fieldLabelI18nKey: "i18n_field_contractName",
with: 150,
},
{
field: "contractDesc",
title: "合同描述",
fieldLabelI18nKey: "i18n_field_contractDesc",
with: 150,
},
{
field: "contractType_dictText",
title: "合同类型",
fieldLabelI18nKey: "i18n_field_contractType",
with: 100,
},
{
field: "contractStatus_dictText",
title: "合同状态",
fieldLabelI18nKey: "i18n_field_contractStatus",
with: 100,
},
{
field: "purchaseOrg_dictText",
title: "采购组织",
fieldLabelI18nKey: "i18n_field_purchaseOrg",
with: 100,
},
{
field: "purchaseGroup_dictText",
title: "采购组",
fieldLabelI18nKey: "i18n_field_purchaseGroup",
with: 100,
},
{
field: "company_dictText",
title: "公司",
fieldLabelI18nKey: "i18n_field_RC_a300c",
with: 100,
},
{
field: "totalTaxAmount",
title: "合同金额",
fieldLabelI18nKey: "i18n_field_neHf_278090f0",
with: 100,
},
{
field: "acceptStage",
title: "验收阶段",
fieldLabelI18nKey: "i18n_OlyO_47cf55e9",
with: 100,
},
{
field: "acceptRatio",
title: "已验收比例",
fieldLabelI18nKey: "i18n_IOllv_73a62cd3",
with: 150,
},
],
modalUrl: "/contract/purchaseContractHead/listByAccept",
params: ({ pageData }) => {
return {
elsAccount: pageData.busAccount
? pageData.busAccount
: pageData.elsAccount,
toElsAccount: pageData.busAccount
? pageData.elsAccount
: pageData.toElsAccount,
};
},
mobileModalParams(Vue, form) {
return {
elsAccount: Vue.vuex_userInfo.elsAccount,
toElsAccount: form._row.toElsAccount,
};
},
handleBefore: ({ pageData, userInfo }) => {
console.log("pageData:", pageData);
let toElsAccount = pageData.toElsAccount || "";
console.log("toElsAccount", toElsAccount);
return toElsAccount !== ""
? Promise.resolve()
: Promise.reject("请先选择对方ELS账号");
},
selectModal: "single",
afterClearCallBack: function (that, form, col) {
form.masterContractNumber = "";
form.contractType = "";
form.contractName = "";
form.contractDesc = "";
form.contractParties = "";
form.contractPromise = "";
form.contractDrawer = "";
form.contractReceiver = "";
},
}税码 taxCode
json
{
"groupCode": "baseForm",
"fieldType": "remoteSelect",
"fieldLabel": "税码",
"fieldName": "taxCode",
"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 { taxCode = "", taxRate = "" } = data[0] || {};
pageData.taxCode = taxCode;
pageData.taxRate = taxRate;
}js
{
modalColumns: [
{
field: "taxCode",
title: "税码",
fieldLabelI18nKey: "i18n_field_taxCode",
with: 150,
},
{
field: "taxRate",
title: "税率(%)",
fieldLabelI18nKey: "i18n_field_fIWWW_f03b2eb3",
with: 150,
},
{
field: "taxName",
title: "税码名称",
fieldLabelI18nKey: "i18n_field_taxName",
with: 150,
},
{
field: "remark",
title: "备注",
fieldLabelI18nKey: "i18n_field_remark",
with: 150,
},
],
modalUrl: "/base/tax/queryTaxForTemplate",
params: ({ pageData }) => {
return { purchaseAccount: pageData.busAccount || "" };
},
mobileModalParams(Vue, { _pageData, _cacheAllData, _form, _row }) {
return { purchaseAccount: _form.busAccount || "" };
},
selectModal: "single",
handleAfter: ({ pageData }) => {
pageData.taxCode = "";
pageData.taxRate = "";
},
}劳务服务含税金额 taxAmount
json
{
"groupCode": "baseForm",
"fieldType": "number",
"fieldLabel": "劳务服务含税金额",
"fieldName": "taxAmount",
"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,
},
) {
pageData.netAmount =
pageData.taxAmount / ((Number(pageData.taxRate) + 100) / 100);
if (pageData.price && pageData.taxRate) {
let taxRate = pageData.taxRate;
let price = pageData.price;
let tax = Decimal.add(1, Decimal.div(taxRate, 100));
let netPrice = Decimal.div(price, tax);
netPrice = netPrice.toFixed(4);
pageData.netPrice = netPrice;
if (pageData.quantity) {
let quantity = pageData.quantity;
let taxAmount = Decimal.mul(price, quantity);
taxAmount = taxAmount.toFixed(2);
pageData.taxAmount = taxAmount;
let netAmount = Decimal.div(taxAmount, tax);
netAmount = netAmount.toFixed(4);
pageData.netAmount = netAmount;
if (pageData?.purchaseOrderItemList) {
let tableData = pageData.purchaseOrderItemList;
let totalTaxAmount = 0;
let totalNetAmount = 0;
tableData.forEach((item) => {
if (item.taxAmount) {
totalTaxAmount += Number(item.taxAmount);
}
if (item.netAmount) {
totalNetAmount += Number(item.netAmount);
}
});
pageData.totalTaxAmount = totalTaxAmount;
pageData.totalNetAmount = totalNetAmount;
}
}
}
}是否电子签章 sign
json
{
"groupCode": "baseForm",
"fieldType": "select",
"fieldLabel": "是否电子签章",
"fieldName": "sign",
"dictCode": "yn",
"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,
},
) {
if (pageData.sign == "0") {
pageData.signStatus = "4";
} else {
pageData.signStatus = "1";
}
}