index.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. import { getConfig } from '../api/setting.js';
  4. import { getUsbPrint } from '../api/shop.js';
  5. import { getLodop } from "../common/LodopFuncs.js";
  6. Vue.use(Vuex);
  7. const state = {
  8. userInfo: null || JSON.parse(localStorage.getItem('userInfo')),
  9. usbPrinter: [] || JSON.parse(localStorage.getItem('usbPrinter'))
  10. }
  11. const actions = {
  12. getUserInfo(context) {
  13. getConfig().then(res => {
  14. if (res.code === 200) {
  15. context.commit('SET_USERINFO', data)
  16. } else {
  17. this.$message({
  18. type: 'error',
  19. message: res.msg
  20. })
  21. }
  22. })
  23. },
  24. getUsbPrint(context) {
  25. getUsbPrint().then(res => {
  26. if (res.code === 200) {
  27. let dataList = res.data
  28. if (!dataList.length) { return }
  29. setTimeout(() => {
  30. LODOP = getLodop();
  31. let printerCount = LODOP.GET_PRINTER_COUNT();
  32. if (!printerCount) { return }
  33. let printerList = [];
  34. for (let index = 0; index < printerCount; index++) {
  35. printerList.push({ deviceName: LODOP.GET_PRINTER_NAME(index) });
  36. }
  37. let data = printerList.map((v) => {
  38. let obj = dataList.find((ele) => {
  39. return ele.deviceName === v.deviceName;
  40. });
  41. if (obj) {
  42. v = obj;
  43. } else {
  44. v.openOrderPrint = 0;
  45. v.openOrderCancelPrint = 0;
  46. v.printCustomerCount = 1;
  47. v.printMerchantCount = 1;
  48. v.printKitchenCount = 1;
  49. v.width = 58;
  50. }
  51. return v;
  52. });
  53. context.commit('SET_USBPRINTER', data)
  54. }, 500);
  55. } else {
  56. this.$message({
  57. type: 'error',
  58. message: res.msg
  59. })
  60. }
  61. })
  62. }
  63. }
  64. const mutations = {
  65. SET_USERINFO: (state, userInfo) => {
  66. state.userInfo = userInfo;
  67. // 防止页面刷新,导致Vuex重启
  68. localStorage.setItem('userInfo', JSON.stringify(userInfo));
  69. },
  70. SET_USBPRINTER: (state, usbPrinter) => {
  71. state.usbPrinter = usbPrinter.filter(v => {
  72. return v.status
  73. });
  74. // 防止页面刷新,导致Vuex重启
  75. localStorage.setItem('usbPrinter', JSON.stringify(state.usbPrinter));
  76. }
  77. }
  78. const getters = {
  79. userInfo: (state) => {
  80. return state.userInfo
  81. },
  82. usbPrinter: (state) => {
  83. return state.usbPrinter
  84. },
  85. }
  86. const store = new Vuex.Store({
  87. actions,
  88. mutations,
  89. state,
  90. getters
  91. })
  92. export default store;