|
|
@@ -406,7 +406,8 @@ const ImportXML = (() => {
|
|
|
let obj = {
|
|
|
rowCode: getValue(itemSrc, ['_行代号']),
|
|
|
name: getValue(itemSrc, ['_项目名称']),
|
|
|
- calcBase: getValue(itemSrc, ['_计算基础表达式'])
|
|
|
+ calcBase: getValue(itemSrc, ['_计算基础表达式']),
|
|
|
+ feeType: getValue(itemSrc, ['_费用类别'])
|
|
|
};
|
|
|
if (importFileKind === FileKind.tender) {
|
|
|
// obj.calcBase = getValue(itemSrc, ['_计算基础表达式']);
|
|
|
@@ -1064,26 +1065,29 @@ const ImportXML = (() => {
|
|
|
);
|
|
|
return isCoe ? AdjustType.coe : AdjustType.info;
|
|
|
}
|
|
|
-
|
|
|
- let toMatches = [
|
|
|
- {reg: /分部分项/, flag: fixedFlag.SUB_ENGINERRING},
|
|
|
- {reg: /^措施项目/, flag: fixedFlag.MEASURE},
|
|
|
- {reg: /技术措施/, flag: fixedFlag.CONSTRUCTION_TECH},
|
|
|
- {reg: /组织措施/, flag: fixedFlag.CONSTRUCTION_ORGANIZATION},
|
|
|
- {reg: /组织措施/, flag: fixedFlag.CONSTRUCTION_ORGANIZATION},
|
|
|
- {reg: /安全文明/, flag: fixedFlag.SAFETY_CONSTRUCTION},
|
|
|
- {reg: /其他项目/, flag: fixedFlag.OTHER},
|
|
|
- {reg: /暂列金额/, flag: fixedFlag.PROVISIONAL},
|
|
|
- {reg: /暂估价/, flag: fixedFlag.ESTIMATE},
|
|
|
- {reg: /计日工/, flag: fixedFlag.DAYWORK},
|
|
|
- {reg: /总承包服务/, flag: fixedFlag.TURN_KEY_CONTRACT},
|
|
|
- {reg: /索赔(?:及|与|和)现场签证/, flag: fixedFlag.TURN_KEY_CONTRACT},
|
|
|
- {reg: /规费/, flag: fixedFlag.CHARGE},
|
|
|
- {reg: /税金/, flag: fixedFlag.TAX},
|
|
|
- {reg: /增值税/, flag: fixedFlag.ADDED_VALUE_TAX},
|
|
|
- {reg: /^附加税/, flag: fixedFlag.ADDITIONAL_TAX},
|
|
|
- {reg: /环境保护税/, flag: fixedFlag.ENVIRONMENTAL_PROTECTION_TAX},
|
|
|
- {reg: /(?:合\s*价)|(?:工程造价)/, flag: fixedFlag.ENGINEERINGCOST},
|
|
|
+
|
|
|
+ // 个软件公司确定了对应关系的其他项目、税金,使用费用类别进行匹配,其他按照名称关键字匹配
|
|
|
+ const matchRegs = [
|
|
|
+ {field: 'feeType', reg: /^1300$/, flag: fixedFlag.OTHER},
|
|
|
+ {field: 'feeType', reg: /^900$/, flag: fixedFlag.TAX},
|
|
|
+ {field: 'name', reg: /分部分项/, flag: fixedFlag.SUB_ENGINERRING},
|
|
|
+ {field: 'name', reg: /^措施项目/, flag: fixedFlag.MEASURE},
|
|
|
+ {field: 'name', reg: /技术措施/, flag: fixedFlag.CONSTRUCTION_TECH},
|
|
|
+ {field: 'name', reg: /组织措施/, flag: fixedFlag.CONSTRUCTION_ORGANIZATION},
|
|
|
+ {field: 'name', reg: /组织措施/, flag: fixedFlag.CONSTRUCTION_ORGANIZATION},
|
|
|
+ {field: 'name', reg: /安全文明/, flag: fixedFlag.SAFETY_CONSTRUCTION},
|
|
|
+ // {reg: /其他项目/, flag: fixedFlag.OTHER},
|
|
|
+ {field: 'name', reg: /暂列金额/, flag: fixedFlag.PROVISIONAL},
|
|
|
+ {field: 'name', reg: /暂估价/, flag: fixedFlag.ESTIMATE},
|
|
|
+ {field: 'name', reg: /计日工/, flag: fixedFlag.DAYWORK},
|
|
|
+ {field: 'name', reg: /总承包服务/, flag: fixedFlag.TURN_KEY_CONTRACT},
|
|
|
+ {field: 'name', reg: /索赔(?:及|与|和)现场签证/, flag: fixedFlag.TURN_KEY_CONTRACT},
|
|
|
+ {field: 'name', reg: /规费/, flag: fixedFlag.CHARGE},
|
|
|
+ // {reg: /税金/, flag: fixedFlag.TAX},
|
|
|
+ {field: 'name', reg: /增值税/, flag: fixedFlag.ADDED_VALUE_TAX},
|
|
|
+ {field: 'name', reg: /^附加税/, flag: fixedFlag.ADDITIONAL_TAX},
|
|
|
+ {field: 'name', reg: /环境保护税/, flag: fixedFlag.ENVIRONMENTAL_PROTECTION_TAX},
|
|
|
+ {field: 'name', reg: /(?:合\s*价)|(?:工程造价)/, flag: fixedFlag.ENGINEERINGCOST}
|
|
|
];
|
|
|
//处理单位工程费用汇总的清单,这一部分没有靠谱的规则,特殊处理并添加相关清单
|
|
|
function setupFeeSummary(feeSummary, needfulTemplate) {
|
|
|
@@ -1119,8 +1123,8 @@ const ImportXML = (() => {
|
|
|
} else {
|
|
|
let isMatched = false;
|
|
|
//匹配固定项
|
|
|
- for (let match of toMatches) {
|
|
|
- if (!match.reg.test(feeBills.name)) {
|
|
|
+ for (let match of matchRegs) {
|
|
|
+ if (!match.reg.test(feeBills[match.field])) {
|
|
|
continue;
|
|
|
}
|
|
|
let findBills = needfulTemplate.find(nData => getFlag(nData) === match.flag);
|