guangdong_zhongshan.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. // INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
  2. INTERFACE_EXPORT = (() => {
  3. 'use strict';
  4. const feeRateMap = {
  5. '冬季施工增加费': 'DJSGZJFFL',
  6. '冬季施工': 'DJSGZJFFL',
  7. '雨季施工增加费': 'YUJSGZJFFL',
  8. '雨季施工': 'YUJSGZJFFL',
  9. '夜间施工增加费': 'YEJSGZJFFL',
  10. '夜间施工': 'YEJSGZJFFL',
  11. '高原地区施工增加费': 'GYDQSGZJFFL',
  12. '高原施工': 'GYDQSGZJFFL',
  13. '风沙地区施工增加费': 'FSDQSGZJFFL',
  14. '风沙施工': 'FSDQSGZJFFL',
  15. '沿海地区施工增加费': 'YHDQSGZJFFL',
  16. '沿海施工': 'YHDQSGZJFFL',
  17. '行车干扰施工增加费': 'XCGRGCSGZJFFL',
  18. '行车干扰': 'XCGRGCSGZJFFL',
  19. '工地转移费': 'GDZYFFL',
  20. '工地转移': 'GDZYFFL',
  21. '施工辅助费': 'SGFZFFL',
  22. '施工辅助': 'SGFZFFL',
  23. '基本费用': 'JBFYFL',
  24. '主副食运费补贴': 'ZFSYFBTFL',
  25. '职工探亲路费': 'ZGTQLFFL',
  26. '职工探亲': 'ZGTQLFFL',
  27. '职工取暖补贴': 'ZGQNBTFL',
  28. '职工取暖': 'ZGQNBTFL',
  29. '财务费用': 'CWFYFL',
  30. '养老保险费': 'YANGLBXFFL',
  31. '失业保险费': 'SYBXFFL',
  32. '医疗保险费': 'YILBXFFL',
  33. '工伤保险费': 'GSBXFL',
  34. '养老保险': 'YANGLBXFFL',
  35. '失业保险': 'SYBXFFL',
  36. '医疗保险': 'YILBXFFL',
  37. '工伤保险': 'GSBXFL',
  38. '住房公积金': 'ZFGJJFL',
  39. '规费': 'GFZHFL',
  40. '利润': 'LRL',
  41. '税金': 'SL',
  42. '土方': 'TF',
  43. '石方': 'SF',
  44. '运输': 'YS',
  45. '路面': 'LM',
  46. '路面(不计雨)': 'LM',
  47. '隧道': 'SD',
  48. '构造物I': 'GZW1',
  49. '构造物I(不计冬)': 'GZW1',
  50. '构造物I(不计雨)': 'GZW1',
  51. '构造物II': 'GZW2',
  52. '构造物III(桥梁)': 'GZW3',
  53. '构造物III(除桥以外)': 'GZW3',
  54. '构造物III(除桥以外不计雨夜)': 'GZW3',
  55. '技术复杂大桥': 'JSFZDQ',
  56. '钢材及钢结构(桥梁)': 'GJG',
  57. '钢材及钢结构(除桥以外)': 'GJG',
  58. '钢材及钢结构(除桥以外不计夜)': 'GJG'
  59. }
  60. /**
  61. *
  62. * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
  63. * @param {Number} exportKind - 导出类型,招标、投标、控制价
  64. * @param {Object} projectData - 项目表数据:{ 建设项目Data, children: [单位工程...] }
  65. * @param {Object} tenderDetailMap - 单位工程ID与getData接口数据(projectObj.project的结构)的映射。
  66. * @return {Promise<Array>} - 返回的数据结构必须按照规定:[{ data, exportKind, fileName }],参考web\building_saas\standard_interface\index.js中的注释说明
  67. */
  68. async function entry(areaKey, exportKind, projectData, tenderDetailMap) {
  69. const {
  70. UTIL,
  71. Element,
  72. } = INTERFACE_EXPORT_BASE;
  73. const {
  74. EXPORT_KIND: {
  75. BID_INVITATION,
  76. BID_SUBMISSION,
  77. CONTROL
  78. },
  79. fixedFlag,
  80. } = window.commonConstants
  81. let cprjType = {
  82. 1: 'ZBKZJ', // 招标
  83. 2: 'TBBJ', // 投标
  84. 3: 'GCLQD' // 控制价
  85. }
  86. const isBidInvitation = exportKind === BID_INVITATION; // 是否是招标
  87. const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
  88. const isControl = exportKind === CONTROL; // 是否是控制价
  89. function emptyElement(name) {
  90. this.name = name;
  91. this.attrs = [];
  92. this.children = [];
  93. }
  94. // 建设项目根节点信息
  95. function CprjInfo(projectName) {
  96. const attrs = [{
  97. name: 'CprjName',
  98. value: projectName
  99. }, {
  100. name: 'CprjType',
  101. value: cprjType[exportKind]
  102. }];
  103. Element.call(this, 'CprjInfo', attrs);
  104. }
  105. // 项目基本信息
  106. function SystemInfo(projectData) {
  107. let hardID = UTIL.generateHardwareId();
  108. let [cpuId, diskId, macId] = hardID.split(';');
  109. const attrs = [{
  110. name: 'Name',
  111. value: '公路工程造价数据标准'
  112. }, {
  113. name: 'Version',
  114. value: '1.0'
  115. }, {
  116. name: 'SoftwareName',
  117. value: '纵横公路云造价'
  118. },
  119. {
  120. name: 'SoftwareVer',
  121. value: 'V' + VERSION
  122. }, {
  123. name: 'SoftwareCompany',
  124. value: '珠海纵横创新软件有限公司'
  125. }, {
  126. name: 'MakeDate',
  127. value: UTIL.getNowFormatTime()
  128. }, {
  129. name: 'Key1',
  130. value: window.btoa(VERSION)
  131. }, {
  132. name: 'Key2',
  133. value: window.btoa(diskId)
  134. }, {
  135. name: 'Key3',
  136. value: window.btoa(macId)
  137. }
  138. ];
  139. if (isBidSubmission) attrs.splice(6, 0, {
  140. name: 'BidderVer',
  141. value: UTIL.getNowFormatTime()
  142. })
  143. Element.call(this, 'SystemInfo', attrs);
  144. }
  145. //造价依据
  146. function CostBasis() { // ItemStandardNo="GYSFX-000000-2018-86"
  147. const attrs = [{
  148. name: 'MakeRuleNo',
  149. value: 'GYSBB-000000-2018-86'
  150. }, {
  151. name: 'MakeRuleName',
  152. value: '公路工程建设项目概算预算编制办法'
  153. }, {
  154. name: 'ItemStandardNo',
  155. value: 'GYSFX-000000-2018-86'
  156. }];
  157. Element.call(this, 'CostBasis', attrs);
  158. //定额库信息
  159. //to do 改成实际的值
  160. function NormLib() {
  161. const attrs = [{
  162. name: 'NormLibNo',
  163. value: '0'
  164. }, {
  165. name: 'NormLibName',
  166. value: '部颁公路工程预算定额(2018)'
  167. }, {
  168. name: 'Type',
  169. value: 'ZDEK'
  170. }];
  171. Element.call(this, 'NormLib', attrs);
  172. }
  173. this.children.push(new NormLib());
  174. }
  175. function Rate(feeRateInfo) {
  176. //RateNo="1" Name="纵横软件测试版本" RateLibNo="GYSFL-000000-2018-86"
  177. const attrs = [{
  178. name: 'RateNo',
  179. value: feeRateInfo.ID
  180. }, {
  181. name: 'Name',
  182. value: feeRateInfo.name
  183. }, {
  184. name: 'RateLibNo',
  185. value: feeRateInfo.libID
  186. }];
  187. Element.call(this, 'Rate', attrs);
  188. let RateParams = new emptyElement('RateParams');
  189. let subRates = projectObj.project.FeeRate.getAllSubRates(feeRateInfo.rates);
  190. for (let s of subRates) {
  191. let sname = s.name.replace("(%)", "");
  192. sname = sname.replace("(%)", "");
  193. if (feeRateMap[sname]) {
  194. let value = "";
  195. if (s.editable) {
  196. let sel = _.find(s.optionList, {
  197. selected: true
  198. })
  199. if (sel) {
  200. value = sel.name;
  201. } else if (gljUtil.isDef(s.value)) {
  202. value = s.value
  203. }
  204. } else {
  205. value = _.findIndex(s.optionList, {
  206. selected: true
  207. })
  208. if (value == -1) value = 0
  209. }
  210. RateParams.children.push(new RateParam(feeRateMap[sname], value));
  211. }
  212. }
  213. this.children.push(RateParams);
  214. function RateParam(RateTypeNo, RateParamNo) {
  215. //<RateParam RateTypeNo="DJSGZJFFL" RateParamNo="0" Ratio="100"/>
  216. const attrs = [{
  217. name: 'RateTypeNo',
  218. value: RateTypeNo
  219. }, {
  220. name: 'RateParamNo',
  221. value: RateParamNo
  222. }, {
  223. name: 'Ratio',
  224. value: '100'
  225. }];
  226. Element.call(this, 'RateParam', attrs);
  227. }
  228. let RateValues = new emptyElement('RateValues')
  229. function RateValue(CostTypeNo, RateTypeNo) {
  230. const attrs = [{
  231. name: 'CostTypeNo',
  232. value: CostTypeNo
  233. }, {
  234. name: 'RateTypeNo',
  235. value: RateTypeNo
  236. }, {
  237. name: 'RateValue',
  238. value: '0'
  239. }];
  240. Element.call(this, 'RateValue', attrs);
  241. }
  242. let prefix = "";
  243. for (let r of feeRateInfo.rates) {
  244. if (!r.ParentID && feeRateMap[r.name]) prefix = feeRateMap[r.name];
  245. if (feeRateMap[r.name] && r.ParentID) {
  246. RateValues.children.push(new RateValue(prefix, feeRateMap[r.name]));
  247. }
  248. }
  249. this.children.push(RateValues);
  250. }
  251. function Pract(tpdata) {
  252. let pgljData = tpdata.projectGLJ.datas;
  253. const attrs = [{
  254. name: 'PractNo',
  255. value: pgljData.constData.usedUnitPriceInfo.id
  256. }, {
  257. name: 'Name',
  258. value: pgljData.constData.usedUnitPriceInfo.name
  259. }];
  260. Element.call(this, 'Pract', attrs);
  261. let Param = {
  262. name: "Param",
  263. attrs: [{
  264. name: "TaxLibNo",
  265. value: "CCSBZ-440000-2019-544"
  266. }, {
  267. name: "AuxRate",
  268. value: pgljData.constData.assistProductionFeeRate
  269. }],
  270. children: []
  271. }
  272. let elecDatas = electrovalenceObj.getElectrovalenceDatas(null, pgljData.com_electrovalence, pgljData.gljList);
  273. electrovalenceObj.calcPertElectrovalenceMarketPrice(elecDatas);
  274. for (let e of elecDatas) {
  275. let Electro = {
  276. name: "Electro",
  277. attrs: [{
  278. name: "Code",
  279. value: e.code
  280. }, {
  281. name: "Price",
  282. value: e.electPrice
  283. }, {
  284. name: "Ratio",
  285. value: e.coe
  286. }],
  287. children: []
  288. }
  289. Param.children.push(Electro);
  290. }
  291. this.children.push(Param);
  292. function MP(g) {
  293. const attrs = [{
  294. name: 'Code',
  295. value: g.code
  296. }, {
  297. name: 'PractName',
  298. value: g.name
  299. }, {
  300. name: 'Spec',
  301. value: g.specs
  302. }, {
  303. name: 'Unit',
  304. value: g.unit
  305. }, {
  306. name: 'BugetPrice',
  307. value: g.priceInfo.marketPrice
  308. }, {
  309. name: 'NormPrice',
  310. value: g.priceInfo.basePrice
  311. }, {
  312. name: 'IsAdd',
  313. value: g.unit_price.is_add
  314. }];
  315. Element.call(this, 'MP', attrs);
  316. }
  317. function Material(g) {
  318. const attrs = [{
  319. name: 'Code',
  320. value: g.code
  321. }, {
  322. name: 'PractName',
  323. value: g.name
  324. }, {
  325. name: 'Spec',
  326. value: g.specs
  327. }, {
  328. name: 'Unit',
  329. value: g.unit
  330. }, {
  331. name: 'BugetPrice',
  332. value: g.priceInfo.marketPrice
  333. }, {
  334. name: 'NormPrice',
  335. value: g.priceInfo.basePrice
  336. }, {
  337. name: 'IsAdd',
  338. value: g.unit_price.is_add
  339. }, {
  340. name: 'OrgPrice',
  341. value: g.unit_price.originalPrice ? g.unit_price.originalPrice : 0,
  342. }, {
  343. name: 'TransFee',
  344. value: g.unit_price.unitFreight ? g.unit_price.unitFreight : 0,
  345. }, {
  346. name: 'GwRate',
  347. value: g.unit_price.grossWeightCoe_n ? g.unit_price.grossWeightCoe_n : 0,
  348. }, {
  349. name: 'OffSiteLf',
  350. value: g.unit_price.offSiteTransportLossRate_n ? g.unit_price.offSiteTransportLossRate_n : 0,
  351. }, {
  352. name: 'OnSiteLf',
  353. value: 0,
  354. }, {
  355. name: 'LoadLf',
  356. value: g.unit_price.handlingLossRate_n ? g.unit_price.handlingLossRate_n : 0,
  357. }, {
  358. name: 'StoreRate',
  359. value: g.unit_price.purchaseStorageRate_n ? g.unit_price.purchaseStorageRate_n : 0,
  360. }, {
  361. name: 'PackageRecycleFee',
  362. value: g.unit_price.packageRecoverValue ? g.unit_price.packageRecoverValue : 0,
  363. }];
  364. Element.call(this, 'Material', attrs);
  365. if (g.unit_price.calcMaterial == 1) { //有材料计算
  366. let index = gljUtil.getIndex(g);
  367. let orList = [];
  368. for (let o of pgljData.originalList) {
  369. if (o.connect_key == index) orList.push(new OrgPrices(o));
  370. }
  371. if (orList.length > 0) this.children = orList;
  372. }
  373. function CostStructure(r) { //待获取
  374. this.name = 'CostStructure';
  375. this.attrs = [];
  376. this.children = [];
  377. }
  378. function Consume(r, o) {
  379. this.name = 'Consume';
  380. this.attrs = [];
  381. this.children = [];
  382. for (let g of o.ration_gljs) {
  383. if (g.rationID == r.ID) {
  384. let r_quantity = scMathUtil.roundForObj(r.quantity, tpdata.property.decimal.ration.quantity);
  385. this.children.push(new ConsumeItem(g, r_quantity));
  386. }
  387. }
  388. }
  389. function ConsumeItem(g, ration_quantity) {
  390. const attrs = [{
  391. name: 'Code', //待获取
  392. value: g.code
  393. }, {
  394. name: 'Consumption',
  395. value: scMathUtil.roundForObj(ration_quantity * parseFloat(g.quantity), tpdata.property.decimal.glj.quantity)
  396. }]
  397. Element.call(this, 'ConsumeItem', attrs);
  398. }
  399. function Norm(r, o) {
  400. const attrs = [{
  401. name: 'NormLibNo', //待获取
  402. value: ''
  403. }, {
  404. name: 'DisplayCode',
  405. value: r.code
  406. }, {
  407. name: 'Name',
  408. value: r.name
  409. }, {
  410. name: 'Unit',
  411. value: r.unit
  412. }, {
  413. name: 'Num',
  414. value: r.quantity
  415. }, {
  416. name: 'CostTypeNo',
  417. value: '' //待获取
  418. }, {
  419. name: 'FabricationCost', //待获取
  420. value: ''
  421. }, {
  422. name: 'AdjustStatus',
  423. value: ''
  424. }];
  425. Element.call(this, 'Norm', attrs);
  426. this.children.push(new CostStructure(r));
  427. this.children.push(new Consume(r, o));
  428. }
  429. function SelfCollect(o) {
  430. const attrs = [{
  431. name: 'OtherCost',
  432. value: 0
  433. }];
  434. Element.call(this, 'SelfCollect', attrs);
  435. for (let r of o.rations) {
  436. this.children.push(new Norm(r, o));
  437. }
  438. }
  439. function OrgPrices(o) {
  440. const attrs = [{
  441. name: 'OrgPricevalue',
  442. value: o.supplyPrice
  443. }, {
  444. name: 'Ratio',
  445. value: o.coe
  446. }];
  447. Element.call(this, 'OrgPrices', attrs);
  448. if (!o.rations) return;
  449. this.children.push(new SelfCollect(o))
  450. }
  451. }
  452. function Mech(g) {
  453. const attrs = [{
  454. name: 'Code',
  455. value: g.code
  456. }, {
  457. name: 'PractName',
  458. value: g.name
  459. }, {
  460. name: 'Spec',
  461. value: g.specs
  462. }, {
  463. name: 'Unit',
  464. value: g.unit
  465. }, {
  466. name: 'BugetPrice',
  467. value: g.priceInfo.marketPrice
  468. }, {
  469. name: 'NormPrice',
  470. value: g.priceInfo.basePrice
  471. }, {
  472. name: 'IsAdd',
  473. value: g.unit_price.is_add
  474. }];
  475. Element.call(this, 'Mech', attrs);
  476. }
  477. let Mps = new emptyElement("Mps");
  478. let Materials = new emptyElement("Materials");
  479. let Mechs = new emptyElement("Mechs");
  480. for (let g of pgljData.gljList) {
  481. let type = g.type + "";
  482. type = type.charAt(0);
  483. if (type == '1') {
  484. Mps.children.push(new MP(g));
  485. } else if (type == '2' || type == 5) {
  486. Materials.children.push(new Material(g));
  487. } else if (type == '3') {
  488. Mechs.children.push(new Mech(g));
  489. }
  490. }
  491. this.children.push(Mps);
  492. this.children.push(Materials);
  493. this.children.push(Mechs);
  494. }
  495. function EprjInfo(tenderProject) {
  496. let bills = tenderProject.Bills.datas;
  497. let totalItem = null;
  498. let proItem = null; //暂列金额项
  499. for (let b of bills) {
  500. if (b.flagsIndex.fixed.flag == fixedFlag.TOTAL_COST) totalItem = b;
  501. if (b.flagsIndex.fixed.flag == fixedFlag.PROVISIONAL) proItem = b;
  502. }
  503. const attrs = [{
  504. name: 'Name',
  505. value: tenderProject.projectInfo.name
  506. }, {
  507. name: 'Sums',
  508. value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0
  509. }]
  510. Element.call(this, 'EprjInfo', attrs);
  511. this.children.push(new SummaryOfCost(totalItem, proItem));
  512. this.children.push(new MakeInfo(tenderProject));
  513. }
  514. function SummaryOfCost(totalItem, proItem) {
  515. const attrs = [{
  516. name: 'TenderSumLimit',
  517. value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0
  518. }, {
  519. name: 'BidTotal',
  520. value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0
  521. }, {
  522. name: 'BillTotal',
  523. value: totalItem.feesIndex && totalItem.feesIndex.common && totalItem.feesIndex.common.tenderTotalFee ? totalItem.feesIndex.common.tenderTotalFee : 0
  524. }, {
  525. name: 'CostForHSE',
  526. value: 0
  527. }, {
  528. name: 'ProvisionalSums',
  529. value: proItem.feesIndex && proItem.feesIndex.common && proItem.feesIndex.common.tenderTotalFee ? proItem.feesIndex.common.tenderTotalFee : 0
  530. }, {
  531. name: 'Appraisal',
  532. value: totalItem.feesIndex && totalItem.feesIndex.estimate && totalItem.feesIndex.estimate.tenderTotalFee ? totalItem.feesIndex.estimate.tenderTotalFee : 0
  533. }]
  534. if (isBidInvitation || isControl) attrs.splice(1, 1) //招标 - 控制价
  535. if (isBidSubmission) attrs.splice(0, 1) //投标
  536. Element.call(this, 'SummaryOfCost', attrs);
  537. }
  538. function MakeInfo(property) {
  539. let baseMap = {};
  540. let baseInfo = _.find(property.basicInformation, {
  541. 'dispName': "基本信息"
  542. })
  543. for (let i of baseInfo.items) {
  544. let key = i.dispName;
  545. if (i.dispName == "编制日期") key = '编制时间';
  546. baseMap[key] = i;
  547. }
  548. const attrs = [{
  549. name: 'ValuationModel',
  550. value: property.taxType
  551. }, {
  552. name: 'Manage',
  553. value: baseMap['建设单位'] ? baseMap['建设单位'].value : ''
  554. }, {
  555. name: 'Designer',
  556. value: baseMap['设计单位'] ? baseMap['设计单位'].value : ''
  557. }, {
  558. name: 'Compile',
  559. value: baseMap['编制单位'] ? baseMap['编制单位'].value : ''
  560. }, {
  561. name: 'CompileApprover',
  562. value: baseMap['编制人'] ? baseMap['编制人'].value : ''
  563. }, {
  564. name: 'CompileCertNo',
  565. value: baseMap['编制人证书号'] ? baseMap['编制人证书号'].value : ''
  566. }, {
  567. name: 'CompileDate',
  568. value: baseMap['编制时间'] ? baseMap['编制时间'].value : ''
  569. }, {
  570. name: 'Review',
  571. value: baseMap['复核单位'] ? baseMap['复核单位'].value : ''
  572. }, {
  573. name: 'ReviewApprover',
  574. value: baseMap['复核人'] ? baseMap['复核人'].value : ''
  575. }, {
  576. name: 'ReviewCertNo',
  577. value: baseMap['复核人证书'] ? baseMap['复核人证书'].value : ''
  578. }, {
  579. name: 'ReviewDate',
  580. value: baseMap['复核日期'] ? baseMap['复核日期'].value : ''
  581. }, {
  582. name: 'Examine',
  583. value: baseMap['审核单位'] ? baseMap['审核单位'].value : ''
  584. }, {
  585. name: 'ExamineApprover',
  586. value: baseMap['审核人'] ? baseMap['审核人'].value : ''
  587. }, {
  588. name: 'ExamineCertNo',
  589. value: baseMap['审核人证书'] ? baseMap['审核人证书'].value : ''
  590. }, {
  591. name: 'ExamineDate',
  592. value: baseMap['审核日期'] ? baseMap['审核日期'].value : ''
  593. }, {
  594. name: 'CompileExplain',
  595. value: baseMap['编制说明'] ? baseMap['编制说明'].value : ''
  596. }, {
  597. name: 'ExamineExplain',
  598. value: baseMap['审核说明'] ? baseMap['审核说明'].value : ''
  599. }, {
  600. name: 'ProjectExplain',
  601. value: baseMap['工程说明'] ? baseMap['工程说明'].value : ''
  602. }]
  603. Element.call(this, 'MakeInfo', attrs);
  604. }
  605. let data = new CprjInfo(projectData.name);
  606. data.children.push(new SystemInfo());
  607. data.children.push(new CostBasis());
  608. let tenderProject = tenderDetailMap[projectObj.project.ID()];
  609. let feeRataDatas = tenderProject.FeeRate.datas;
  610. data.children.push(new Rate(feeRataDatas));
  611. data.children.push(new Pract(tenderProject))
  612. data.children.push(new EprjInfo(tenderProject))
  613. let property = tenderProject
  614. return [{
  615. data: data,
  616. exportKind: exportKind,
  617. fileName: projectData.name + INTERFACE_CONFIG[areaKey]['fileSuffix'][exportKind]
  618. }]
  619. }
  620. return {
  621. entry
  622. };
  623. })();