app.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. import Cookies from 'js-cookie'
  2. import { Notification } from 'element-ui'
  3. import { getCustomerType, getTravelAgencyType, getSystemConfigList } from '@/api/systemConfig'
  4. import { getPayChannel } from '@/api/payChannel.js'
  5. import { getSaleChannelList } from '@/api/order'
  6. import { getAccountList, getSelf } from '@/api/systemSetting/account'
  7. import { getTicketCategory, getTicketTypeList, getScenic } from '@/api/ticketType'
  8. import { apiGetTravelAgencyList } from '@/api/travelAgency'
  9. import { getBatchConfigList } from '@/api/batch'
  10. const Store = require('electron-store')
  11. const localStore = new Store()
  12. const colorPalette = [
  13. '#C1232B', '#27727B', '#dcb309', '#E87C25', '#B5C334',
  14. '#FE8463', '#9BCA63', '#FAD860', '#F3A43B', '#60C0DD',
  15. '#8731e2', '#7bab05', '#f79007', '#F0805A', '#26C0C0'
  16. ]
  17. const app = {
  18. state: {
  19. diffTime: 0,
  20. scaleRate: 1,
  21. editorElement: null, // 正在编辑的打印对象
  22. localConfig: null,
  23. appStatus: {
  24. status: 1,
  25. process: 0
  26. },
  27. account: {},
  28. client: null,
  29. sellerDevice: null,
  30. sidebar: {
  31. opened: !+Cookies.get('sidebarStatus'),
  32. withoutAnimation: false
  33. },
  34. device: 'desktop',
  35. language: Cookies.get('language') || 'zh',
  36. currentTicket: null,
  37. printList: [],
  38. printOrder: null,
  39. batchList: [], // 场次列表
  40. performList: [], // 节目列表
  41. smallTicketTemplate: null,
  42. smallTicketTemplateList: [],
  43. printTemplate: null,
  44. printTemplateList: [],
  45. payChannelOptions: [],
  46. payChannelList: [],
  47. ticketCategory: [
  48. {
  49. id: 'ticket',
  50. name: '景区门票'
  51. },
  52. {
  53. id: 'member',
  54. name: '年卡次卡'
  55. }
  56. ],
  57. ticketTypeList: [],
  58. customerType: [],
  59. saleChannel: [],
  60. systemConfig: [],
  61. agencyList: [],
  62. scenicList: [],
  63. scenicColor: {},
  64. terminalNO: localStore.get('termId'),
  65. customLogo: require(`imgs/${process.env.VUE_APP_LOGO || 'logo'}.png`),
  66. faceModelIsReady: false // 人脸模型已预热完成
  67. },
  68. mutations: {
  69. SET_FACE_MODEL_READY (state, val) {
  70. state.faceModelIsReady = val
  71. },
  72. SET_TERMAINAL_NO (state, data) {
  73. state.terminalNO = data
  74. },
  75. SET_SYSTEM_CONFIG (state, data) {
  76. state.systemConfig = data
  77. },
  78. SET_BATCH_LIST (state, data) {
  79. state.batchList = data
  80. },
  81. SET_PERFORM_LIST (state, data) {
  82. state.performList = data
  83. },
  84. SET_SALE_CHANNEL (state, data) {
  85. state.saleChannel = data
  86. },
  87. SET_MY_ACCOUNT (state, data) {
  88. state.myAccount = data
  89. },
  90. SET_CUSTOM_LOGO (state, data) {
  91. state.customLogo = data
  92. },
  93. SET_SELLER_DEVICE (state, data) {
  94. state.sellerDevice = data
  95. },
  96. SET_TICKET_CATEGORY (state, data) {
  97. state.ticketCategory = data
  98. },
  99. SET_TICKET_TYPE_LIST (state, data) {
  100. state.ticketTypeList = data
  101. },
  102. SET_PAY_CHANNEL (state, { data, list }) {
  103. state.payChannelList = list
  104. state.payChannelOptions = data
  105. localStore.set('payChannelOptions', data)
  106. },
  107. SET_PRINT_LIST (state, data) {
  108. state.printList = state.printList.concat(data)
  109. },
  110. // 打印小票订单
  111. SET_PRINT_ORDER (state, data) {
  112. state.printOrder = data
  113. },
  114. PRINT_NEW (state, data) {
  115. state.printList.shift() // 移除已打印成功的门票
  116. },
  117. // 设置当前要打印的门票
  118. SET_CURRENT_TICKET (state, data) {
  119. state.currentTicket = data
  120. },
  121. // 设置与服务器的时间差
  122. SET_DIFF_TIME (state, data) {
  123. state.diffTime = new Date(data) - new Date()
  124. },
  125. SET_LOCAL_CONFIG (state, config) {
  126. state.localConfig = config
  127. },
  128. TOGGLE_SIDEBAR: state => {
  129. if (state.sidebar.opened) {
  130. Cookies.set('sidebarStatus', 1)
  131. } else {
  132. Cookies.set('sidebarStatus', 0)
  133. }
  134. state.sidebar.opened = !state.sidebar.opened
  135. state.sidebar.withoutAnimation = false
  136. },
  137. CLOSE_SIDEBAR: (state, withoutAnimation) => {
  138. Cookies.set('sidebarStatus', 1)
  139. state.sidebar.opened = false
  140. state.sidebar.withoutAnimation = withoutAnimation
  141. },
  142. TOGGLE_DEVICE: (state, device) => {
  143. state.device = device
  144. },
  145. SET_LANGUAGE: (state, language) => {
  146. state.language = language
  147. Cookies.set('language', language)
  148. },
  149. SHOW_ROOM: (state, room) => {
  150. state.dialogVisible = true
  151. state.globleRoom = room
  152. },
  153. HIDE_ROOM: (state) => {
  154. state.dialogVisible = false
  155. },
  156. SHOW_WXNOTIFY: (state) => {
  157. // if (state.wxNoify.visible) return
  158. console.log(Notification)
  159. state.wxNoify = Notification.info({
  160. iconClass: 'iconfont icon-auth',
  161. title: '提醒',
  162. dangerouslyUseHTMLString: true,
  163. customClass: 'authNotify',
  164. duration: 0,
  165. message: `有新的待授权用户需处理`,
  166. position: 'bottom-right'
  167. })
  168. },
  169. UPDATE_APP: (state, data) => {
  170. state.appStatus = data
  171. },
  172. SET_CUR_EDITOR_ELEMENT: (state, data) => {
  173. state.editorElement = data
  174. },
  175. SCALE_CANVAS: (state, data) => {
  176. state.scaleRate = data
  177. },
  178. SET_SMALL_TICKET_TEMPLATE: (state, data) => {
  179. state.smallTicketTemplate = data
  180. },
  181. SET_SMALL_TICKET_TEMPLATE_LIST: (state, data) => {
  182. state.smallTicketTemplateList = data
  183. },
  184. SET_PRINT_TEMPLATE: (state, data) => {
  185. state.printTemplate = data
  186. },
  187. SET_PRINT_TEMPLATE_LIST: (state, data) => {
  188. state.printTemplateList = data
  189. },
  190. SET_CUSTOMER_TYPE: (state, data) => {
  191. state.customerType = data
  192. },
  193. SET_TRAVEL_AGENCY_TYPE: (state, data) => {
  194. state.travelAgencyType = data
  195. },
  196. SET_AGENCY_LIST: (state, data) => {
  197. state.agencyList = data
  198. },
  199. SET_SCENIC_LIST: (state, data) => {
  200. state.scenicList = data
  201. },
  202. SET_ACCOUNT: (state, data) => {
  203. state.account = data
  204. },
  205. SET_SCENIC_COLOR: (state, data) => {
  206. state.scenicColor = data
  207. }
  208. },
  209. actions: {
  210. getAccount ({ commit }) {
  211. getSelf().then(res => {
  212. commit('SET_ACCOUNT', res)
  213. })
  214. },
  215. getScenicList ({ commit }) {
  216. getScenic().then(res => {
  217. let scenicList = res?.data.children.map(item => item.data)
  218. let scenicColor = {}
  219. scenicList.forEach((s, i) => {
  220. scenicColor[s.id] = colorPalette[i % 15]
  221. })
  222. commit('SET_SCENIC_COLOR', scenicColor)
  223. commit('SET_SCENIC_LIST', scenicList)
  224. })
  225. },
  226. getBatchConfigList ({ commit }) {
  227. return getBatchConfigList({
  228. pageNum: 0,
  229. pageSize: 0
  230. }).then(res => {
  231. commit('SET_BATCH_LIST', res.list)
  232. })
  233. },
  234. getAgencyList ({ commit }) {
  235. return apiGetTravelAgencyList({
  236. pageNum: 0,
  237. pageSize: 0,
  238. keyWords6: 1
  239. }).then(res => {
  240. commit('SET_AGENCY_LIST', res.list)
  241. })
  242. },
  243. getSystemConfigList ({ commit }) {
  244. getSystemConfigList().then(res => {
  245. commit('SET_SYSTEM_CONFIG', res.list)
  246. })
  247. },
  248. getSaleChannel ({ commit }) {
  249. getSaleChannelList().then(res => {
  250. commit('SET_SALE_CHANNEL', res?.data)
  251. })
  252. },
  253. getMyAccount ({ commit, rootState }) {
  254. getAccountList({
  255. pageNum: 0,
  256. pageSize: 0
  257. }).then(res => {
  258. let target = res.list.find(i => i.nick_name === rootState.user.name)
  259. // console.log(target)
  260. commit('SET_MY_ACCOUNT', target)
  261. })
  262. },
  263. getPayChannel ({ commit }) {
  264. return getPayChannel({
  265. pageNum: 0,
  266. pageSize: 0,
  267. keyWords1: '',
  268. type: ''
  269. }).then(res => {
  270. let target = res.list.filter(i => i.status === 1).map(i => i.name)
  271. commit('SET_PAY_CHANNEL', { data: target, list: res.list.filter(i => i.status === 1) })
  272. })
  273. },
  274. setCustomerType ({ commit }) {
  275. return getCustomerType().then(res => {
  276. commit('SET_CUSTOMER_TYPE', res)
  277. })
  278. },
  279. setTravelAgencyType ({ commit }) {
  280. return getTravelAgencyType().then(res => {
  281. commit('SET_TRAVEL_AGENCY_TYPE', res)
  282. })
  283. },
  284. getTicketCategory ({ commit }) {
  285. return getTicketCategory().then(res => {
  286. commit('SET_TICKET_CATEGORY', res.list)
  287. })
  288. },
  289. getTicketTypeList ({ commit }) {
  290. return getTicketTypeList({
  291. pageNum: 0,
  292. pageSize: 0
  293. }).then(res => {
  294. commit('SET_TICKET_TYPE_LIST', res.list)
  295. })
  296. },
  297. setLocalConfig ({ commit }, data) {
  298. let configFile = require('path').join('C://', 'config.json')
  299. let fs = require('fs')
  300. fs.open(configFile, 'r', (err, data) => {
  301. if (err) {
  302. console.log(err)
  303. return
  304. }
  305. let configData = JSON.parse(fs.readFileSync(configFile))
  306. commit('SET_LOCAL_CONFIG', configData)
  307. console.log(configData)
  308. })
  309. },
  310. updateApp ({ commit }, data) {
  311. commit('UPDATE_APP', data)
  312. },
  313. toggleSideBar ({ commit }) {
  314. commit('TOGGLE_SIDEBAR')
  315. },
  316. closeSideBar ({ commit }, { withoutAnimation }) {
  317. commit('CLOSE_SIDEBAR', withoutAnimation)
  318. },
  319. toggleDevice ({ commit }, device) {
  320. commit('TOGGLE_DEVICE', device)
  321. },
  322. setLanguage ({ commit }, language) {
  323. commit('SET_LANGUAGE', language)
  324. },
  325. showRoom ({ commit }, room) {
  326. commit('SHOW_ROOM', room)
  327. },
  328. hideRoom ({ commit }) {
  329. commit('HIDE_ROOM')
  330. },
  331. scaleCanvas ({ commit }, data) {
  332. commit('SCALE_CANVAS', data)
  333. },
  334. setEditorElement ({ commit }, element) {
  335. commit('SET_CUR_EDITOR_ELEMENT', element)
  336. }
  337. }
  338. }
  339. export default app