compilation_controller.js 27 KB

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