index.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import BaseController from "../../common/base/base_controller";
  2. const facade = require('../facade/index');
  3. const config = require("../../../config/config.js");
  4. const excel = require('node-xlsx');
  5. const fs = require('fs');
  6. class PriceInfoClassController 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. await facade.setIDForData();
  15. res.render("maintain/price_info_class/html/main.html", renderData);
  16. }
  17. // 获取分页数据
  18. async getPagingData(req, res) {
  19. try {
  20. const { page, pageSize, searchStr } = JSON.parse(req.body.data);
  21. const data = await facade.getPagingData(page, pageSize, searchStr);
  22. res.json({ error: 0, message: 'getData success', data });
  23. } catch (err) {
  24. console.log(err);
  25. }
  26. }
  27. // 编辑
  28. async editClassData(req, res) {
  29. try {
  30. const { postData } = JSON.parse(req.body.data);
  31. await facade.editClassData(postData);
  32. res.json({ error: 0, message: 'editPrice success' });
  33. } catch (err) {
  34. console.log(err);
  35. res.json({ error: 1, message: err.toString() });
  36. }
  37. }
  38. async exportClassData(request, response) {
  39. try {
  40. const excelData = await facade.exportExcelData();
  41. const buffer = excel.build([{ name: "材料信息价类别总表", data: excelData }]);
  42. const filePath = './public/exportPriceClass.xlsx';
  43. fs.writeFileSync(filePath, buffer, 'binary');
  44. const stats = fs.statSync(filePath);
  45. // 下载相关header
  46. response.set({
  47. 'Content-Type': 'application/octet-stream',
  48. 'Content-Disposition': 'attachment; filename=infoPriceClass.xlsx',
  49. 'Content-Length': stats.size
  50. });
  51. fs.createReadStream(filePath).pipe(response);
  52. fs.unlink(filePath);
  53. } catch (error) {
  54. response.end(error);
  55. }
  56. }
  57. }
  58. module.exports = {
  59. priceInfoClassController: new PriceInfoClassController()
  60. };