index.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import BaseController from "../../common/base/base_controller";
  2. const excel = require('node-xlsx');
  3. const fs = require('fs');
  4. const facade = require('../facade/index');
  5. const config = require("../../../config/config.js");
  6. class PriceInfoSummaryController extends BaseController {
  7. async main(req, res) {
  8. const renderData = {
  9. title: '材料信息价总表',
  10. userAccount: req.session.managerData.username,
  11. userID: req.session.managerData.userID,
  12. LicenseKey: config.getLicenseKey(process.env.NODE_ENV),
  13. };
  14. res.render("maintain/price_info_summary/html/main.html", renderData);
  15. }
  16. // 获取分页数据
  17. async getPagingData(req, res) {
  18. try {
  19. const { page, pageSize, searchStr } = JSON.parse(req.body.data);
  20. const data = await facade.getPagingData(page, pageSize, searchStr);
  21. res.json({ error: 0, message: 'getData success', data });
  22. } catch (err) {
  23. console.log(err);
  24. }
  25. }
  26. // 编辑总表
  27. async editSummaryData(req, res) {
  28. try {
  29. const { postData } = JSON.parse(req.body.data);
  30. await facade.editSummaryData(postData);
  31. res.json({ error: 0, message: 'editPrice success' });
  32. } catch (err) {
  33. console.log(err);
  34. res.json({ error: 1, message: err.toString() });
  35. }
  36. }
  37. // 保存至总表
  38. async saveInSummary(req, res) {
  39. try {
  40. const { documents } = JSON.parse(req.body.data);
  41. await facade.saveInSummary(documents);
  42. res.json({ error: 0, message: 'saveInSummary success' });
  43. } catch (err) {
  44. console.log(err);
  45. res.json({ error: 1, message: err.toString() });
  46. }
  47. }
  48. async exportSummaryData(request, response) {
  49. try {
  50. const excelData = await facade.exportExcelData();
  51. const buffer = excel.build([{ name: "材料信息价总表", data: excelData }]);
  52. const filePath = './public/exportPriceSummary.xlsx';
  53. fs.writeFileSync(filePath, buffer, 'binary');
  54. const stats = fs.statSync(filePath);
  55. // 下载相关header
  56. response.set({
  57. 'Content-Type': 'application/octet-stream',
  58. 'Content-Disposition': 'attachment; filename=infoPriceSummary.xlsx',
  59. 'Content-Length': stats.size
  60. });
  61. fs.createReadStream(filePath).pipe(response);
  62. fs.unlink(filePath);
  63. } catch (error) {
  64. response.end(error);
  65. }
  66. }
  67. }
  68. module.exports = {
  69. priceInfoSummaryController: new PriceInfoSummaryController()
  70. };