compilation_controller.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889
  1. /**
  2. * 编办控制控制器
  3. *
  4. * @author CaiAoLin
  5. * @date 2017/7/28
  6. * @compilation
  7. */
  8. import BaseController from "../../common/base/base_controller";
  9. import CompilationModel from "../models/compilation_model";
  10. import STDRationLibMapModel from "../../common/std/std_ration_lib_map_model";
  11. import STDBillLibListsModel from "../../common/std/std_bills_lib_lists_model";
  12. import STDGLJLibMapModel from "../../common/std/std_glj_lib_map_model";
  13. import STDFeeRateLibsModel from "../../common/std/std_fee_rate_libs_model";
  14. import { default as EngineeringConst, List as EngineeringList } from "../../common/const/engineering";
  15. import BillsTemplateModel from "../models/bills_template_model";
  16. import { default as BillsFixedFlagConst, List as BillsFixedFlagList } from "../../common/const/bills_fixed.js";
  17. import { default as BillsTypeFlagConst, List as BillsTypeFlagList } from "../../common/const/bills_type.js";
  18. import EngineeringLibModel from "../models/engineering_lib_model";
  19. import STDLabourCoesModel from "../../common/std/std_labour_coes_model";
  20. import STDCalcProgramModel from "../../common/std/std_calc_program_model";
  21. const billsGuidanceFc = require('../../std_billsGuidance_lib/facade/facades');
  22. import mainColFacade from "../../main_col_lib/facade/main_col_facade";
  23. import billTemplateFacade from "../../bills_template_lib/facade/bills_template_facade";
  24. import projectFeatureFacade from "../../project_feature_lib/facade/project_feature_facade";
  25. import basicInfoFacade from "../../basic_info_lib/facade/basic_info_facade";
  26. import progressiveFacade from "../../progressive_interval_lib/facade/progressive_facade";
  27. import vvTaxFacade from "../../vehicleVessel_lib/facade/vvTax_facade";
  28. import billCodeFacade from "../../bill_code_lib/facade/bill_code_facade";
  29. import { default as category, List as categoryList } from "../../common/const/category_const.js";
  30. import locationList from "../../common/const/locationList";
  31. let config = require("../../../config/config.js");
  32. const fs = require('fs');
  33. let _ = require('lodash');
  34. class CompilationController extends BaseController {
  35. /**
  36. * 编办管理控制页面
  37. *
  38. * @param {object} request
  39. * @param {object} response
  40. * @return {void}
  41. */
  42. async index(request, response) {
  43. let id = request.query.id;
  44. let compilationList = [];
  45. let selectedCompilation = {};
  46. try {
  47. let compilationModel = new CompilationModel();
  48. compilationList = await compilationModel.getCompilationList();
  49. if (compilationList.length <= 0) {
  50. throw '没有数据';
  51. }
  52. // 循环查找数据
  53. for (let tmp of compilationList) {
  54. if (tmp._id.toString() === id) {
  55. selectedCompilation = tmp;
  56. break;
  57. }
  58. }
  59. selectedCompilation = Object.keys(selectedCompilation).length <= 0 ? compilationList[0] : selectedCompilation;
  60. request.session.selectedCompilation = selectedCompilation;
  61. } catch (error) {
  62. console.log(error);
  63. }
  64. if (selectedCompilation.example && Array.isArray(selectedCompilation.example)) {
  65. selectedCompilation.example = selectedCompilation.example.join(';');
  66. }
  67. let renderData = {
  68. id: id,
  69. compilationList: compilationList,
  70. categoryList: categoryList,
  71. locationList: locationList,
  72. typeList: [{label:'建设工程',value:'building'},{label:'公路建设',value:'highway'},{label:'公路养护',value:'yanghu'},{label:'成本测算',value:'cost'}],
  73. selectedCompilation: selectedCompilation,
  74. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  75. layout: 'users/views/layout/layout',
  76. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  77. };
  78. response.render('users/views/compilation/index', renderData);
  79. }
  80. /**
  81. * 新增计价页面
  82. *
  83. * @param {object} request
  84. * @param {object} response
  85. * @return {void}
  86. */
  87. async addValuation(request, response) {
  88. let name = request.body.name;
  89. let id = request.body.id;
  90. let section = request.body.section;
  91. let responseData = {
  92. err: 0,
  93. msg: ''
  94. };
  95. try {
  96. if (id === undefined || id === '') {
  97. throw '参数错误';
  98. }
  99. let insertData = {
  100. name: name,
  101. };
  102. let compilationModel = new CompilationModel();
  103. let valuationId = await compilationModel.addValuation(id, section, insertData);
  104. if (!valuationId) {
  105. throw '新增计价规则失败';
  106. }
  107. //添加标准工程专业 2018-08-24 不自动添加标准工程了
  108. /*let engineeringLibModel = new EngineeringLibModel();
  109. let stdEngs = await engineeringLibModel.addStdLib(valuationId);
  110. console.log(stdEngs);*/
  111. } catch (error) {
  112. console.log(error);
  113. responseData.err = 1;
  114. responseData.msg = error;
  115. }
  116. response.json(responseData);
  117. }
  118. /**
  119. * 修改计价规则页面
  120. *
  121. * @param {object} request
  122. * @param {object} response
  123. * @return {void}
  124. */
  125. async editValuation(request, response) {
  126. let selectedCompilation = request.session.selectedCompilation;
  127. let valuationId = request.params.id;
  128. let section = request.params.section;
  129. let compilationList = [];
  130. let engineeringList = [];
  131. let valuationData = {};
  132. let valuationList = {};
  133. try {
  134. let compilationModel = new CompilationModel();
  135. compilationList = await compilationModel.getCompilationList();
  136. // 获取对应的计价规则数据
  137. [valuationData, valuationList] = await compilationModel.getValuation(selectedCompilation._id, valuationId, section);
  138. if (Object.keys(valuationData).length <= 0) {
  139. throw '不存在数据';
  140. }
  141. // 获取计价规则中对应的标准库数据
  142. let engineeringLibModel = new EngineeringLibModel();
  143. engineeringList = await engineeringLibModel.getLibsByValuationID(valuationId);
  144. engineeringList = _.sortBy(engineeringList, ['seq'])
  145. } catch (error) {
  146. console.log(error);
  147. }
  148. let renderData = {
  149. compilationList: compilationList,
  150. engineeringList: engineeringList,
  151. selectedCompilation: selectedCompilation,
  152. valuationData: valuationData,
  153. valuationList: valuationList,
  154. valuationId: valuationId,
  155. section: section,
  156. layout: 'users/views/layout/layout',
  157. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  158. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  159. };
  160. response.render('users/views/compilation/add', renderData);
  161. }
  162. /**
  163. * 编辑工程专业页面
  164. *
  165. * @param {object} request
  166. * @param {object} response
  167. * @return {void}
  168. */
  169. async editEngineering(request, response) {
  170. let engineerID = request.params.engineerID;
  171. let valuationId = request.params.id;
  172. let section = request.params.section;
  173. let selectedCompilation = request.session.selectedCompilation;
  174. let compilationList = [],
  175. billList = [],
  176. rationList = [],
  177. gljList = [],
  178. feeRateList = [],
  179. infoList = [],
  180. libData = {},
  181. billsTemplateData = [],
  182. featureList = [],
  183. progressiveList = [],
  184. vvTaxList = [],
  185. billCodeList = [];
  186. let valuationData = {}, valuationList = {}, artificialCoefficientList = [], calculationList = [], billsGuidanceList = [], mainTreeColList = [];
  187. let billTemplateList = [];
  188. try {
  189. let compilationModel = new CompilationModel();
  190. compilationList = await compilationModel.getCompilationList();
  191. // 获取标准清单,不绑定编办
  192. let stdBillLibListsModel = new STDBillLibListsModel();
  193. billList = await stdBillLibListsModel.getBillList();
  194. // 获取定额库
  195. let stdRationLibMapModel = new STDRationLibMapModel();
  196. //rationList = await stdRationLibMapModel.getRationLib(selectedCompilation._id);
  197. rationList = await stdRationLibMapModel.getAllRationLibs();
  198. // 获取工料机库
  199. let stdGLJLibMapModel = new STDGLJLibMapModel();
  200. gljList = await stdGLJLibMapModel.getAllGLJLibList();
  201. // 获取费率标准库
  202. let stdFeeRateLibsModel = new STDFeeRateLibsModel();
  203. feeRateList = await stdFeeRateLibsModel.getFeeRateList(selectedCompilation._id);
  204. // 获取人工系数标准库
  205. let stdLabourCoesModel = new STDLabourCoesModel();
  206. artificialCoefficientList = await stdLabourCoesModel.getLabourCoesList();
  207. // 获取计算程序库
  208. let stdCalcProgramModel = new STDCalcProgramModel();
  209. calculationList = await stdCalcProgramModel.getProgramList(selectedCompilation._id);
  210. //获取列设置库
  211. mainTreeColList = await mainColFacade.getColLibsByCompilationID(selectedCompilation._id);
  212. //获取清单模板库
  213. billTemplateList = await billTemplateFacade.getTemplateLibByCompilationID(selectedCompilation._id);
  214. // 获取对应的计价规则数据
  215. [valuationData, valuationList] = await compilationModel.getValuation(selectedCompilation._id, valuationId, section);
  216. if (Object.keys(valuationData).length <= 0) {
  217. throw '不存在数据';
  218. }
  219. // 获取对应专业工程下的标准库数据
  220. let engineeringLibModel = new EngineeringLibModel();
  221. libData = await engineeringLibModel.findDataByCondition({ _id: engineerID });
  222. // 获取清单模板数据
  223. let billsTemplateModel = new BillsTemplateModel();
  224. billsTemplateData = await billsTemplateModel.getTemplateData(valuationId, libData.engineering);
  225. //获取清单指引数据
  226. billsGuidanceList = await billsGuidanceFc.getBillsGuideLibs({ compilationId: selectedCompilation._id, $or: [{ deleted: null }, { deleted: false }] });
  227. //获取工程特征库
  228. featureList = await projectFeatureFacade.findByCondition({ compilationId: selectedCompilation._id }, null, false);
  229. //获取基本信息库
  230. infoList = await basicInfoFacade.findByCondition({}, null, false);
  231. //获取累进区间库
  232. progressiveList = await progressiveFacade.findByCondition({}, null, false);
  233. //获取车船税库
  234. vvTaxList = await vvTaxFacade.findByCondition({}, false, false);
  235. //获取递延清单库
  236. billCodeList = await billCodeFacade.findByCondition({}, false, false);
  237. } catch (error) {
  238. console.log(error);
  239. }
  240. //example Array to example String
  241. if (selectedCompilation.example && Array.isArray(selectedCompilation.example)) {
  242. selectedCompilation.example = selectedCompilation.example.join(';');
  243. }
  244. let renderData = {
  245. section: section,
  246. valuationId: valuationId,
  247. compilationList: compilationList,
  248. selectedCompilation: selectedCompilation,
  249. libData: libData,
  250. billList: JSON.stringify(billList),
  251. rationList: JSON.stringify(rationList),
  252. gljList: JSON.stringify(gljList),
  253. artificialCoefficientList: JSON.stringify(artificialCoefficientList),
  254. feeRateList: JSON.stringify(feeRateList),
  255. billsTemplateData: JSON.stringify(billsTemplateData),
  256. billTemplateList: JSON.stringify(billTemplateList),
  257. mainTreeColList: JSON.stringify(mainTreeColList),
  258. gljCol: JSON.stringify(libData.glj_col),
  259. calculationList: JSON.stringify(calculationList),
  260. billsGuidanceList: JSON.stringify(billsGuidanceList),
  261. featureList: JSON.stringify(featureList),
  262. infoList: JSON.stringify(infoList),
  263. progressiveList: JSON.stringify(progressiveList),
  264. vvTaxList: JSON.stringify(vvTaxList),
  265. billCodeList: JSON.stringify(billCodeList),
  266. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  267. layout: 'users/views/layout/layout',
  268. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  269. };
  270. response.render('users/views/compilation/engineering', renderData);
  271. }
  272. /**
  273. * 保存工程专业标准库
  274. *
  275. * @param {object} request
  276. * @param {object} response
  277. * @return {void}
  278. */
  279. async saveEngineering(request, response) {
  280. let engineerId = request.body.id;
  281. try {
  282. if (engineerId === '') {
  283. throw 'id参数错误';
  284. }
  285. // 先存入工程专业标准库表
  286. let engineeringLibModel = new EngineeringLibModel();
  287. let result = await engineeringLibModel.addLib(engineerId, request.body);
  288. if (!result) {
  289. throw '保存失败';
  290. }
  291. } catch (error) {
  292. console.log(error);
  293. }
  294. response.redirect(request.headers.referer);
  295. }
  296. /**
  297. * 通过工程专业ID删除工程专业
  298. * @param request
  299. * @param response
  300. * @returns {Promise.<void>}
  301. */
  302. async deleteEngineer(request, response) {
  303. let result = {
  304. error: 0
  305. };
  306. try {
  307. let data = request.body.data;
  308. data = JSON.parse(data);
  309. if (data.id) {
  310. let engineeringLibModel = new EngineeringLibModel();
  311. result.data = await engineeringLibModel.deleteById(data.id, true);
  312. } else {
  313. throw new Error("提交数据有误");
  314. }
  315. } catch (err) {
  316. console.log(err);
  317. result.error = 1;
  318. result.message = err.message;
  319. }
  320. response.json(result);
  321. }
  322. /**
  323. * 通过工程专业ID拷贝工程专业
  324. * @param request
  325. * @param response
  326. * @returns {Promise.<void>}
  327. */
  328. async copyEngineer(request, response) {
  329. let result = {
  330. error: 0
  331. };
  332. try {
  333. let data = request.body.data;
  334. data = JSON.parse(data);
  335. if (data.id) {
  336. let engineeringLibModel = new EngineeringLibModel();
  337. result.data = await engineeringLibModel.copyEngineer(data.id);
  338. } else {
  339. throw new Error("提交数据有误");
  340. }
  341. } catch (err) {
  342. console.log(err);
  343. result.error = 1;
  344. result.message = err.message;
  345. }
  346. response.json(result);
  347. }
  348. /**
  349. * 修改保存工程专业信息-用于异步操作
  350. * @param request
  351. * @param response
  352. * @returns {Promise.<void>}
  353. */
  354. async updateEngineer(request, response) {
  355. let result = {
  356. error: 0
  357. };
  358. try {
  359. let data = request.body.data;
  360. data = JSON.parse(data);
  361. if (data.id && data.updateData) {
  362. let engineeringLibModel = new EngineeringLibModel();
  363. result.data = await engineeringLibModel.updateById(data.id, data.updateData);
  364. } else {
  365. throw new Error("提交数据有误");
  366. }
  367. } catch (err) {
  368. console.log(err);
  369. result.error = 1;
  370. result.message = err.message;
  371. }
  372. response.json(result);
  373. }
  374. /**
  375. * 保存计价规则
  376. *
  377. * @param {object} request
  378. * @param {object} response
  379. * @return {void}
  380. */
  381. async saveValuation(request, response) {
  382. let valuationId = request.body.id;
  383. try {
  384. if (valuationId === '') {
  385. throw 'id参数错误';
  386. }
  387. let compilationModel = new CompilationModel();
  388. let result = await compilationModel.saveValuation(valuationId, request.body);
  389. if (!result) {
  390. throw '保存失败';
  391. }
  392. } catch (error) {
  393. console.log(error);
  394. }
  395. response.redirect(request.headers.referer);
  396. }
  397. /**
  398. * 删除计价规则
  399. *
  400. * @param {object} request
  401. * @param {object} response
  402. * @return {void}
  403. */
  404. async deleteValuation(request, response) {
  405. let id = request.params.id;
  406. let section = request.params.section;
  407. let selectedCompilation = request.session.selectedCompilation;
  408. try {
  409. if (id === undefined || id === '' || section === undefined || section === '') {
  410. throw '参数错误';
  411. }
  412. //先删除对应的工程专业
  413. let engineeringLibModel = new EngineeringLibModel();
  414. await engineeringLibModel.deleteByValuationID(id);
  415. //删除计价规则
  416. let compilationModel = new CompilationModel();
  417. let result = compilationModel.deleteValuation(selectedCompilation._id, id, section);
  418. if (!result) {
  419. throw '删除失败';
  420. }
  421. } catch (error) {
  422. console.log(error);
  423. }
  424. response.redirect(request.headers.referer);
  425. }
  426. /**
  427. * 快速切换启用/禁用
  428. *
  429. * @param {object} request
  430. * @param {object} response
  431. * @return {void}
  432. */
  433. async enableSwitch(request, response) {
  434. let id = request.body.id;
  435. let section = request.params.section;
  436. let enable = request.body.enable;
  437. let responseData = {
  438. err: 0,
  439. msg: ''
  440. };
  441. try {
  442. let compilationModel = new CompilationModel();
  443. let result = await compilationModel.switchEnable(id, section, enable);
  444. if (!result) {
  445. throw '新增编办失败';
  446. }
  447. } catch (error) {
  448. console.log(error);
  449. responseData.err = 1;
  450. responseData.msg = error;
  451. }
  452. response.json(responseData);
  453. }
  454. /**
  455. * 设置计价规则适用类型
  456. *
  457. * @param {object} request
  458. * @param {object} response
  459. * @return {void}
  460. */
  461. async setFileTypes(request, response) {
  462. let id = request.body.id;
  463. let section = request.params.section;
  464. let fileTypes = request.body.fileTypes;
  465. let responseData = {
  466. err: 0,
  467. msg: ''
  468. };
  469. try {
  470. let compilationModel = new CompilationModel();
  471. let result = await compilationModel.setFileTypes(id, section, fileTypes);
  472. if (!result) {
  473. throw '设置类型失败';
  474. }
  475. } catch (error) {
  476. console.log(error);
  477. responseData.err = 1;
  478. responseData.msg = error;
  479. }
  480. response.json(responseData);
  481. }
  482. /**
  483. * 发布/取消编办
  484. *
  485. * @param {object} request
  486. * @param {object} response
  487. * @return {void}
  488. */
  489. async release(request, response) {
  490. let id = request.body.id;
  491. let release = request.body.status;
  492. release = parseInt(release);
  493. let responseData = {
  494. err: 0,
  495. msg: ''
  496. };
  497. try {
  498. let compilationModel = new CompilationModel();
  499. let result = await compilationModel.release(id, release);
  500. if (!result) {
  501. throw '发布编办失败';
  502. }
  503. } catch (error) {
  504. console.log(error);
  505. responseData.err = 1;
  506. responseData.msg = error;
  507. }
  508. response.json(responseData);
  509. }
  510. /**
  511. * 新增编办操作
  512. *
  513. * @param {object} request
  514. * @param {object} response
  515. * @return {void}
  516. */
  517. async addCompilation(request, response) {
  518. let name = request.body.name;
  519. let responseData = {
  520. err: 0,
  521. msg: ''
  522. };
  523. try {
  524. let sessionManager = request.session.managerData;
  525. let insertData = {
  526. name: name,
  527. creator: sessionManager.userID
  528. };
  529. let compilationModel = new CompilationModel();
  530. let result = await compilationModel.add(insertData);
  531. if (!result) {
  532. throw '新增编办失败';
  533. }
  534. } catch (error) {
  535. console.log(error);
  536. responseData.err = 1;
  537. responseData.msg = error;
  538. }
  539. response.json(responseData);
  540. }
  541. async setDescription(request, response) {
  542. let compilationId = request.body.id;
  543. let description = request.body.description;
  544. try {
  545. let compilationModel = new CompilationModel();
  546. await compilationModel.setDescription(compilationId, description);
  547. response.json({ err: 0, msg: '', data: null });
  548. }
  549. catch (err) {
  550. response.json({ err: 1, msg: err, data: null });
  551. }
  552. }
  553. async setOverWriteUrl(request, response) {
  554. let compilationId = request.body.id;
  555. let overWriteUrl = request.body.overWriteUrl;
  556. try {
  557. let compilationModel = new CompilationModel();
  558. //绝对路径
  559. let absoluteUrl = request.app.locals.rootDir + overWriteUrl;
  560. //文件是否存在
  561. let fileExists = fs.existsSync(absoluteUrl);
  562. let pricePropertiesTemplate = [],
  563. consumeAmtPropertiesTemplate = [];
  564. if (fileExists && fs.statSync(absoluteUrl).isFile()) {
  565. //读取配置文件并赋值
  566. let overWriteExports = require(absoluteUrl);
  567. if (overWriteExports) {
  568. pricePropertiesTemplate = overWriteExports.pricePropertiesTemplate ? overWriteExports.pricePropertiesTemplate : [];
  569. consumeAmtPropertiesTemplate = overWriteExports.consumeAmtPropertiesTemplate ? overWriteExports.consumeAmtPropertiesTemplate : [];
  570. }
  571. }
  572. await compilationModel.setOverWriteUrl(compilationId, overWriteUrl, pricePropertiesTemplate, consumeAmtPropertiesTemplate);
  573. response.json({ err: 0, msg: '', data: null });
  574. }
  575. catch (err) {
  576. console.log(err);
  577. response.json({ err: 1, msg: err, data: null });
  578. }
  579. }
  580. async setExample(request, response) {
  581. let compilationId = request.body.id,
  582. example = request.body.example;
  583. try {
  584. let compilationModel = new CompilationModel();
  585. await compilationModel.setExample(compilationId, example);
  586. response.json({ err: 0, msg: 'success', data: null });
  587. }
  588. catch (err) {
  589. console.log(err);
  590. response.json({ err: 1, msg: err, data: null });
  591. }
  592. }
  593. /**
  594. * 模板设置页面
  595. *
  596. * @param {object} request
  597. * @param {object} response
  598. * @return {void}
  599. */
  600. async billsTemplate(request, response) {
  601. let billList = {};
  602. let valuationList = {};
  603. let valuationData = {};
  604. let compilationList = [];
  605. let billsTemplateData = [];
  606. let selectedCompilation = request.session.selectedCompilation;
  607. let engineering = request.params.engineering;
  608. let valuationId = request.params.id;
  609. let section = request.params.section;
  610. try {
  611. let compilationModel = new CompilationModel;
  612. // 获取对应的计价规则数据
  613. [valuationData, valuationList] = await compilationModel.getValuation(selectedCompilation._id, valuationId, section);
  614. compilationList = await compilationModel.getCompilationList();
  615. // 获取标准清单
  616. let stdBillLibListsModel = new STDBillLibListsModel();
  617. billList = await stdBillLibListsModel.getBillList(selectedCompilation._id);
  618. // 获取清单模板数据
  619. let billsTemplateModel = new BillsTemplateModel();
  620. billsTemplateData = await billsTemplateModel.getTemplateData(valuationId, engineering);
  621. } catch (error) {
  622. console.log(error);
  623. }
  624. let renderData = {
  625. engineering: engineering,
  626. billList: JSON.stringify(billList),
  627. billsTemplateData: JSON.stringify(billsTemplateData),
  628. billsFixedFlagList: JSON.stringify(BillsFixedFlagList),
  629. billsTypeFlagList: JSON.stringify(BillsTypeFlagList),
  630. valuationData: valuationData,
  631. valuationList: valuationList,
  632. selectedCompilation: selectedCompilation,
  633. compilationList: compilationList,
  634. valuationId: valuationId,
  635. section: section,
  636. title: config[process.env.NODE_ENV].title ? config[process.env.NODE_ENV].title : '养护云版',
  637. layout: 'users/views/layout/layout',
  638. LicenseKey: config.getLicenseKey(process.env.NODE_ENV)
  639. };
  640. response.render('users/views/compilation/template', renderData);
  641. }
  642. /**
  643. * 清单模板,更新数据操作
  644. *
  645. * @param request
  646. * @param response
  647. */
  648. async updateBillsTemplate(request, response) {
  649. let engineering = request.params.engineering;
  650. let valuationId = request.params.id;
  651. let section = request.params.section;
  652. let data = JSON.parse(request.body.data);
  653. let billsTemplateModel = new BillsTemplateModel();
  654. let result = await billsTemplateModel.updateTemplate(valuationId, engineering, data);
  655. if (result) {
  656. response.json({ error: 0, message: '', data: data });
  657. } else {
  658. response.json({ error: 1, message: '更新数据错误', data: null });
  659. }
  660. }
  661. async copyRationLibs(req, res) {
  662. const { valuationID, engineeringID } = JSON.parse(req.body.data);
  663. try {
  664. const engineeringLibModel = new EngineeringLibModel();
  665. await engineeringLibModel.copyRationLibsToOthers(valuationID, engineeringID);
  666. res.json({ error: 0, message: '复制成功', data: null });
  667. } catch (err) {
  668. res.json({ error: 1, message: String(err), data: null });
  669. }
  670. }
  671. async addEngineer(request, response) {
  672. let engineeringLibModel = new EngineeringLibModel();
  673. try {
  674. await engineeringLibModel.addEngineer(request.body);
  675. } catch (error) {
  676. console.log(error);
  677. }
  678. response.redirect(request.headers.referer);
  679. }
  680. /**
  681. * 更改编办所属办事处信息
  682. *
  683. * @param request
  684. * @param response
  685. * @return {Promise.<void>}
  686. */
  687. async changeCategory(request, response) {
  688. let valuationId = request.body.id;
  689. let category = request.body.category;
  690. category = parseInt(category);
  691. try {
  692. let compilationModel = new CompilationModel();
  693. let result = await compilationModel.updateCategory(valuationId, category);
  694. if (result) {
  695. response.json({ error: 0, message: '', data: null });
  696. } else {
  697. response.json({ error: 1, message: '更新数据错误', data: null });
  698. }
  699. } catch (error) {
  700. response.json({ error: 1, message: '更新数据错误', data: null });
  701. }
  702. }
  703. /**
  704. * 更改编办默认工程所在工
  705. *
  706. * @param request
  707. * @param response
  708. * @return {Promise.<void>}
  709. */
  710. async changeLocation(request, response) {
  711. let compilationId = request.body.id;
  712. let location = request.body.location;
  713. try {
  714. let compilationModel = new CompilationModel();
  715. let result = await compilationModel.updateLocation(compilationId, location);
  716. if (result) {
  717. response.json({ error: 0, message: '', data: null });
  718. } else {
  719. response.json({ error: 1, message: '更新数据错误', data: null });
  720. }
  721. } catch (error) {
  722. response.json({ error: 1, message: '更新数据错误', data: null });
  723. }
  724. }
  725. /**
  726. * 更改编办默认工程所在工
  727. *
  728. * @param request
  729. * @param response
  730. * @return {Promise.<void>}
  731. */
  732. async changeCompilation(request, response) {
  733. let compilationId = request.body.id;
  734. let update = request.body.update;
  735. try {
  736. let compilationModel = new CompilationModel();
  737. let result = await compilationModel.updateById(compilationId, update);
  738. if (result) {
  739. response.json({ error: 0, message: '', data: null });
  740. } else {
  741. response.json({ error: 1, message: '更新数据错误', data: null });
  742. }
  743. } catch (error) {
  744. response.json({ error: 1, message: '更新数据错误', data: null });
  745. }
  746. }
  747. /**
  748. * 更改编办默认工程所在工
  749. *
  750. * @param request
  751. * @param response
  752. * @return {Promise.<void>}
  753. */
  754. async changeFreeUse(request, response) {
  755. let compilationId = request.body.id;
  756. let freeUse = request.body.freeUse;
  757. try {
  758. let compilationModel = new CompilationModel();
  759. let result = await compilationModel.updateFreeUse(compilationId, freeUse);
  760. if (result) {
  761. response.json({ error: 0, message: '', data: null });
  762. } else {
  763. response.json({ error: 1, message: '更新数据错误', data: null });
  764. }
  765. } catch (error) {
  766. response.json({ error: 1, message: '更新数据错误', data: null });
  767. }
  768. }
  769. async setEdition(request, response) {
  770. let compilationId = request.body.id;
  771. let edition = request.body.edition;
  772. try {
  773. let compilationModel = new CompilationModel();
  774. await compilationModel.setEdition(compilationId, edition);
  775. response.json({ err: 0, msg: '', data: null });
  776. }
  777. catch (err) {
  778. response.json({ err: 1, msg: err, data: null });
  779. }
  780. }
  781. async setSerialNumber(request, response) {
  782. let compilationId = request.body.id;
  783. let serialNumber = request.body.serialNumber;
  784. try {
  785. let compilationModel = new CompilationModel();
  786. await compilationModel.setSerialNumber(compilationId, serialNumber);
  787. response.json({ err: 0, msg: '', data: null });
  788. }
  789. catch (err) {
  790. response.json({ err: 1, msg: err, data: null });
  791. }
  792. }
  793. }
  794. export default CompilationController;