schedule_controller.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Ellisran
  6. * @date 2020/7/2
  7. * @version
  8. */
  9. const moment = require('moment');
  10. const measureType = require('../const/tender').measureType;
  11. const billsPosConvert = require('../lib/bills_pos_convert');
  12. const _ = require('lodash');
  13. module.exports = app => {
  14. class ScheduleController extends app.BaseController {
  15. async index(ctx) {
  16. try {
  17. const renderData = {
  18. tender: ctx.tender.data,
  19. tenderMenu: this.menu.tenderMenu,
  20. preUrl: '/tender/' + ctx.tender.id,
  21. };
  22. await this.layout('schedule/index.ejs', renderData);
  23. } catch (err) {
  24. this.log(err);
  25. ctx.redirect(this.menu.menu.dashboard.url);
  26. }
  27. }
  28. async ledger(ctx) {
  29. const tender = ctx.tender;
  30. const scheduleLedgerList = await ctx.service.scheduleLedger.getAllDataByCondition({ where: { tid: tender.id } });
  31. const renderData = {
  32. tender: tender.data,
  33. tenderInfo: tender.info,
  34. measureType,
  35. scheduleLedgerList: _.map(scheduleLedgerList, 'ledger_id'),
  36. jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.schedule.ledger),
  37. };
  38. await this.layout('schedule/ledger.ejs', renderData, 'schedule/ledger_modal.ejs');
  39. }
  40. /**
  41. * 获取部位明细数据(Ajax)
  42. *
  43. * @param ctx
  44. * @return {Promise<void>}
  45. */
  46. async loadLedgerData(ctx) {
  47. try {
  48. const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
  49. const posData = ctx.tender.data.measure_type === measureType.tz.value
  50. ? await ctx.service.pos.getPosData({ tid: ctx.tender.id }) : [];
  51. const convert = new billsPosConvert(ctx);
  52. convert.loadData(ledgerData, posData, []);
  53. const result = await convert.convert();
  54. ctx.body = { err: 0, msg: '', data: result };
  55. } catch (err) {
  56. this.log(err);
  57. ctx.body = { err: 1, msg: err.toString(), data: [] };
  58. }
  59. }
  60. /**
  61. * 台账选中提交(Ajax)
  62. *
  63. * @param ctx
  64. * @return {Promise<void>}
  65. */
  66. async saveLedger(ctx) {
  67. try {
  68. const data = JSON.parse(ctx.request.body.data);
  69. const result = await ctx.service.scheduleLedger.saveLedger(data);
  70. ctx.body = { err: 0, msg: '', data: result };
  71. } catch (err) {
  72. this.log(err);
  73. ctx.body = { err: 1, msg: err.toString(), data: [] };
  74. }
  75. }
  76. }
  77. return ScheduleController;
  78. };