Explorar el Código

广东接口变更
1.费用代号不处理唯一性
2.所有清单名称加入非空自检
3.隐藏导出指标成果按钮
4.导出文件名改为建设项目名称相关的

vian hace 5 años
padre
commit
d759153f18
Se han modificado 2 ficheros con 50 adiciones y 23 borrados
  1. 3 1
      web/building_saas/main/html/main.html
  2. 47 22
      web/over_write/js/guangdong_2018_export.js

+ 3 - 1
web/building_saas/main/html/main.html

@@ -98,7 +98,9 @@
                     <a class="dropdown-toggle" href="#" data-toggle="dropdown"><i class="fa  fa-code-fork"></i></a>
                     <div class="dropdown-menu" id="exportMenu">
                         <a class="dropdown-item" href="#export" data-toggle="modal" data-target="#export">导出<%= region %>电子招投标数据文件</a>
-                        <a class="dropdown-item" href="#exportIndex"  data-toggle="modal" data-target="#exportIndex" >导出<%= region %>指标成果文件</a>
+                        <% if (region !== '广东省') { %>
+                            <a class="dropdown-item" href="#exportIndex"  data-toggle="modal" data-target="#exportIndex" >导出<%= region %>指标成果文件</a>
+                        <% } %>
                     </div>
                 </span>
                       <% } %>

+ 47 - 22
web/over_write/js/guangdong_2018_export.js

@@ -312,8 +312,11 @@ const XMLStandard = (function () {
                 return feeCode;
             }
             const name = bills.name || '';
+            // 新需求: 不处理重名问题
+            feeCode = pinyinUtil.getFirstLetter(name);
+            return feeCode;
             // 出现重名,应以“费用代号_顺序号”规则,顺序号为自然数,从 1 开始(整个建设项目)
-            const tempFeeCode = pinyinUtil.getFirstLetter(name);
+            /* const tempFeeCode = pinyinUtil.getFirstLetter(name);
             const sameFeeCodes = firstLetterMap[tempFeeCode] ? firstLetterMap[tempFeeCode] : firstLetterMap[tempFeeCode] = [];
             feeCode = sameFeeCodes.includes(bills.ID)
                 ? `${tempFeeCode}${sameFeeCodes.indexOf(bills.ID) === 0 ? '' : '_' + sameFeeCodes.indexOf(bills.ID)}`
@@ -323,7 +326,7 @@ const XMLStandard = (function () {
             if (!sameFeeCodes.includes(bills.ID)) {
                 sameFeeCodes.push(bills.ID);
             }
-            return feeCode;
+            return feeCode; */
         } else { // 非ID引用基数获取费用字典
             return FormulaFeeCodeMap[formula] || '';
         }
@@ -1194,12 +1197,14 @@ const XMLStandard = (function () {
         }
         // 单位工程费用汇总标题
         function UnitWorksSummaryGroup(bills) {
+            const node = tenderDetail.mainTree.nodes[`id_${bills.ID}`];
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 费用编号
                 { name: 'Number', value: bills.code },
                 // 费用名称
                 {
-                    name: 'Name', dName: '名称', required: true,
+                    name: 'Name', dName: '名称', required: true, minLen: 1, failHint: `第${row}行清单-“项目名称”`,
                     value: bills.name
                 },
                 // 单位
@@ -1242,10 +1247,11 @@ const XMLStandard = (function () {
         // 单位工程费汇总明细
         function UnitWorksSummaryItem(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 { name: 'Number', value: bills.code },
                 {
-                    name: 'Name', dName: '名称', required: true,
+                    name: 'Name', dName: '名称', required: true, minLen: 1, failHint: `第${row}行清单-“项目名称”`,
                     value: bills.name
                 },
                 { name: 'Unit', value: bills.unit },
@@ -1396,7 +1402,7 @@ const XMLStandard = (function () {
                 { name: 'Number', value: bills.code },
                 // 名称
                 {
-                    name: 'Name', dName: '名称',
+                    name: 'Name', dName: '名称', minLen: 1,
                     value: bills.name
                 },
                 // 特征
@@ -1624,9 +1630,11 @@ const XMLStandard = (function () {
         }
         // 其他项目汇总子目
         function SundryItem(eleName, bills) {
+            const node = tenderDetail.mainTree.nodes[`id_${bills.ID}`];
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”`},
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 费用代号
@@ -1641,9 +1649,10 @@ const XMLStandard = (function () {
             const bills = node.data;
             // 材料暂估价取不汇总,其他为汇总
             const kind = node.getFlag() === fixedFlag.MATERIAL_PROVISIONAL ? SummrayKind.NO : SummrayKind.YES;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 费用代号
@@ -1660,9 +1669,10 @@ const XMLStandard = (function () {
             const bills = node.data;
             // 材料暂估价取不汇总,其他为汇总
             const kind = node.getFlag() === fixedFlag.MATERIAL_PROVISIONAL ? SummrayKind.NO : SummrayKind.YES;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 单位
                 { name: 'Unit', value: bills.unit },
                 // 工程量
@@ -1694,9 +1704,10 @@ const XMLStandard = (function () {
         // 暂列金额标题
         function ProvisionalSumsGroup(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 汇总类型
@@ -1709,9 +1720,10 @@ const XMLStandard = (function () {
         // 暂列金额明细
         function ProvisionalSumsItem(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 单位
                 { name: 'Unit', value: bills.unit },
                 // 工程量
@@ -1745,7 +1757,7 @@ const XMLStandard = (function () {
                 // 编码
                 { name: 'Number', value: glj.code },
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: glj.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: glj.name },
                 // 型号规格
                 { name: 'Specification', value: glj.specs },
                 // 单位
@@ -1764,9 +1776,10 @@ const XMLStandard = (function () {
         // 专业工程暂估价标题
         function SpecialtyProvisionalPriceGroup(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 工程内容
                 { name: 'Content', value: bills.engineeringContent },
                 // 金额
@@ -1781,9 +1794,10 @@ const XMLStandard = (function () {
         // 专业工程暂估价明细
         function SpecialtyProvisionalPriceItem(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 工程内容
                 { name: 'Content', value: bills.engineeringContent },
                 // 单位
@@ -1814,9 +1828,10 @@ const XMLStandard = (function () {
         // 计日工标题
         function DayWorkRateGroup(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 费用代号
@@ -1829,11 +1844,12 @@ const XMLStandard = (function () {
         // 计日工明细
         function DayWorkRateItem(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 编码
                 { name: 'Number', value: bills.code },
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 型号规格
                 { name: 'Specification', value: '' },
                 // 单位
@@ -1852,9 +1868,10 @@ const XMLStandard = (function () {
         // 总承包服务费标题
         function MainContractorAttendanceGroup(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 汇总类型
@@ -1867,9 +1884,10 @@ const XMLStandard = (function () {
         // 总承包服务费明细
         function MainContractorAttendanceItem(node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 项目价值,计算基数对应的金额
                 { name: 'Quantity', type: _type.DECIMAL, value: bills.tenderCalcBaseValue },
                 // 服务内容
@@ -1890,9 +1908,10 @@ const XMLStandard = (function () {
         // 索赔、签证费用标题
         function ClaimVisaCostGroup(eleName, node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 金额
                 { name: 'Total', type: _type.DECIMAL, value: _util.getFee(bills.fees, 'common.totalFee') },
                 // 汇总类型
@@ -1905,9 +1924,10 @@ const XMLStandard = (function () {
         // 索赔费用明细
         function ClaimVisaCostItem(eleName, node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 单位
                 { name: 'Unit', value: bills.unit },
                 // 数量
@@ -1938,7 +1958,7 @@ const XMLStandard = (function () {
         // 规费
         function StatutoryFees() {
             const attrs = [
-                { name: 'Name', dName: '名称', required: true, value: '规费' },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: '规费' },
                 { name: 'Code', dName: '费用代号', required: true, value: 'GF' }
             ];
             _base.Element.call(this, 'StatutoryFees', attrs, '规费');
@@ -1946,9 +1966,10 @@ const XMLStandard = (function () {
         // 税金
         function Tax(eleName, node) {
             const bills = node.data;
+            const row = node.serialNo() + 1;
             const attrs = [
                 // 名称
-                { name: 'Name', dName: '名称', required: true, value: bills.name },
+                { name: 'Name', dName: '名称', required: true, minLen: 1, value: bills.name, failHint: `第${row}行清单-“项目名称”` },
                 // 计算基数说明
                 { name: 'CalBasis', value: getCalBasis(node) },
                 // 计算基数
@@ -2872,6 +2893,9 @@ const XMLStandard = (function () {
         return await loadData(projectData);
     }
 
+    // 导出名称为建设项目名称
+    let zipFileBaseName = '';
+
     /*
      * 重置工程编号,广东18 3.0的接口,导出时的文件会用到这个编号
      * 因此重置工程编号后,还需要重置文件名数据
@@ -2888,6 +2912,7 @@ const XMLStandard = (function () {
         for (const exportKind in groupedData) {
             const extractData = groupedData[exportKind];
             const extractProject = extractData.find(data => data.dataType === DATA_TYPE.PROJECT);
+            zipFileBaseName = _util.getAttr(extractProject.data, 'Name');
             const extractTenders = extractData.filter(data => data.dataType === DATA_TYPE.TENDER)
             // 建设项目元素下建筑安装工程费元素
             const projectInstallations = _util.getElementFromSrc(extractProject.data, 'ProjectInstallationWorkCost');
@@ -2968,7 +2993,7 @@ const XMLStandard = (function () {
             // TypedBuffer to ArrayBuffer to blob
             const saveAsBlob = new Blob([zipFile.buffer]);
             const exportKindName = _config.EXPORT_KIND_NAME[exportKind];
-            saveAs(saveAsBlob, `广东标准交换数据(${exportKindName}).COS`);
+            saveAs(saveAsBlob, `${zipFileBaseName}(${exportKindName}).COS`);
         }
     }