user.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. import {get_info, get_point_types, get_employee_map,getMenu} from '@/api/login'
  2. import {getToken} from '@/utils/auth'
  3. import moment from 'moment'
  4. import router from '@/router'
  5. const user = {
  6. state: {
  7. token: '',
  8. user_info: {},
  9. account_info: {},
  10. user_id: 0,
  11. tabbar_selected: 'tab1',
  12. cart_checkout_ids: [],
  13. cart_count: 0,
  14. point_types: [],
  15. msg_count: 0,
  16. network_status:0,
  17. addressinfo: {
  18. name: '',
  19. tel: '',
  20. id: 0,
  21. address: ''
  22. },
  23. employee_map: {},
  24. getMenu:{},
  25. buyPopup:false,
  26. },
  27. mutations: {
  28. BUYPOPUP:(state, data)=>{
  29. state.buyPopup = data
  30. },
  31. GET_MENU:(state, data) => {
  32. state.getMenu = data
  33. },
  34. SET_TOKEN: (state, token) => {
  35. state.token = token
  36. },
  37. RESET: (state, token) => {
  38. },
  39. SET_USERID: (state, user_id) => {
  40. state.user_id = user_id
  41. },
  42. SET_HOME_TAB: (state, tab) => {
  43. state.tabbar_selected = tab
  44. },
  45. SET_USERINFO: (state, data) => {
  46. if (window.plus) {
  47. plus.storage.setItem('user_info', JSON.stringify({data:data}))
  48. } else {
  49. localStorage.setItem('user_info', JSON.stringify({data:data}))
  50. }
  51. state.user_info = data
  52. },
  53. SET_ACCOUNTINFO: (state, data) => {
  54. state.account_info = data
  55. },
  56. SET_CART_COUNT: (state, data) => {
  57. state.cart_count = data
  58. },
  59. SET_CHECKOUT_IDS: (state, data) => {
  60. state.cart_checkout_ids = data
  61. },
  62. SET_ADDRESSINFO: (state, data) => {
  63. state.addressinfo = data
  64. },
  65. SET_EMPLOYEE_MAP: (state, data) => {
  66. state.employee_map = data
  67. },
  68. SET_NETWORK_STATUS: (state, data) => {
  69. state.network_status = data
  70. },
  71. SET_POINT_TYPES: (state, data) => {
  72. state.point_types = data
  73. },
  74. },
  75. actions: {
  76. setBuyPopup({commit},data){
  77. commit('BUYPOPUP',data);
  78. },
  79. // 获取菜单
  80. getMenu({commit}){
  81. return new Promise((resolve, reject) => {
  82. getMenu().then(response => {
  83. var menu_common=response.data.data.menu_common;
  84. var menu=response.data.data.menu;
  85. var men=JSON.parse(window.plus? plus.storage.getItem('menuCommon'):localStorage.getItem("menuCommon")); //缓存的menuCommon
  86. var local_menu=JSON.parse(window.plus? plus.storage.getItem('menu'):localStorage.getItem("menu")); //缓存的ment
  87. var isXd=true;
  88. if(men && local_menu){
  89. // for(let i=0;i<menu_common.length;i++){
  90. // if(menu_common[i]!=men[i]){
  91. // isXd=false
  92. // }
  93. // }
  94. // 判断考勤模块的下载压缩包地址
  95. // for(let i=0;i<menu.length;i++){
  96. // if(menu[i].code_id=="attendance_manage"){
  97. // for(let j=0;j<menu[i].child.length;j++){
  98. // if(menu[i].child[j].download_url!=local_menu[i].child[j].download_url){
  99. isXd=false
  100. // }
  101. // }
  102. // }
  103. // }
  104. if(isXd){
  105. resolve(true)
  106. }else{
  107. if (window.plus) {
  108. plus.storage.setItem('menu', JSON.stringify(response.data.data.menu))
  109. plus.storage.setItem('menuCommon', JSON.stringify(response.data.data.menu_common))
  110. } else {
  111. localStorage.setItem('menu', JSON.stringify(response.data.data.menu))
  112. localStorage.setItem('menuCommon', JSON.stringify(response.data.data.menu_common))
  113. }
  114. resolve(true);
  115. }
  116. }else{
  117. if (window.plus) {
  118. plus.storage.setItem('menu', JSON.stringify(response.data.data.menu))
  119. plus.storage.setItem('menuCommon', JSON.stringify(response.data.data.menu_common))
  120. } else {
  121. localStorage.setItem('menu', JSON.stringify(response.data.data.menu))
  122. localStorage.setItem('menuCommon', JSON.stringify(response.data.data.menu_common))
  123. }
  124. resolve(true);
  125. }
  126. }).catch(error => {
  127. reject(error)
  128. })
  129. })
  130. },
  131. clear_cache({dispatch,commit}){
  132. commit('SET_USERINFO','');
  133. if(window.plus){
  134. plus.storage.removeItem('SET_EMPLOYEE_MAP')
  135. plus.storage.removeItem('message_cate_list')
  136. plus.storage.removeItem('SET_POINT_TYPES')
  137. plus.storage.removeItem('user_info')
  138. plus.storage.removeItem('account_info')
  139. plus.storage.removeItem('buyPopupPage')
  140. plus.storage.removeItem('buyPopup')
  141. plus.storage.removeItem('last_click_pos')
  142. plus.storage.removeItem('token-expire')
  143. plus.storage.removeItem('loglevel:webpack-dev-server')
  144. plus.storage.removeItem('menu')
  145. plus.storage.removeItem('menuCommon')
  146. }else{
  147. localStorage.removeItem('SET_EMPLOYEE_MAP')
  148. localStorage.removeItem('message_cate_list')
  149. localStorage.removeItem('SET_POINT_TYPES')
  150. localStorage.removeItem('user_info')
  151. localStorage.removeItem('account_info')
  152. localStorage.removeItem('buyPopupPage')
  153. localStorage.removeItem('buyPopup')
  154. localStorage.removeItem('last_click_pos')
  155. localStorage.removeItem('token-expire')
  156. localStorage.removeItem('loglevel:webpack-dev-server')
  157. localStorage.removeItem('menu')
  158. localStorage.removeItem('menuCommon')
  159. }
  160. if(window.plus){
  161. plus.io.requestFileSystem( plus.io.PRIVATE_DOC, function(fs){
  162. var directoryReader = fs.root.createReader();
  163. directoryReader.readEntries( function( entries ){
  164. var i;
  165. for( i=0; i < entries.length; i++ ) {
  166. entries[i].removeRecursively( function ( entry ) {
  167. }, function ( e ) {
  168. alert( e.message );
  169. } );
  170. }
  171. }, function ( e ) {
  172. alert( "Read entries failed: " + e.message );
  173. } );
  174. } );
  175. }
  176. },
  177. update_user_info({dispatch,commit},data){
  178. dispatch('get_user_info');
  179. },
  180. update_point_types({dispatch}){
  181. if(window.plus){
  182. plus.storage.removeItem('SET_POINT_TYPES')
  183. }else{
  184. localStorage.removeItem('SET_POINT_TYPES')
  185. }
  186. dispatch('get_point_types')
  187. },
  188. update_employee_map({dispatch}){
  189. if(window.plus){
  190. plus.storage.removeItem('SET_EMPLOYEE_MAP')
  191. }else{
  192. localStorage.removeItem('SET_EMPLOYEE_MAP')
  193. }
  194. dispatch('get_employee_map')
  195. },
  196. get_employee_map({commit},is){
  197. return new Promise((resolve, reject) => {
  198. let employee_map = null
  199. let oneId = null
  200. let nowDate = moment().format("YYYY-MM-DD HH:mm:ss")
  201. if(window.plus){
  202. employee_map = JSON.parse(plus.storage.getItem('SET_EMPLOYEE_MAP'))
  203. }else{
  204. employee_map = JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP'))
  205. }
  206. if (employee_map) {
  207. for (const key in employee_map) {
  208. if (employee_map.hasOwnProperty(key) && employee_map[key].localStorageExpire) {
  209. oneId = employee_map[key].id
  210. }
  211. }
  212. }
  213. if(!is){
  214. // 更新
  215. if(employee_map && oneId && moment(nowDate).isBefore(employee_map[oneId].localStorageExpire)){
  216. commit('SET_EMPLOYEE_MAP', employee_map)
  217. resolve(employee_map)
  218. }else{
  219. get_employee_map().then(response => {
  220. if(response.data.code == 1){
  221. let data = {}
  222. for(let i in response.data.data.list){
  223. data[response.data.data.list[i].id] = response.data.data.list[i]
  224. if (i == 0) {
  225. oneId = response.data.data.list[i].id
  226. data[response.data.data.list[i].id].localStorageExpire = moment().add(Math.floor(Math.random() * (120 - 60 + 1)) + 60, "second").format("YYYY-MM-DD HH:mm:ss")
  227. }
  228. }
  229. commit('SET_EMPLOYEE_MAP', data)
  230. if (window.plus) {
  231. plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
  232. } else {
  233. localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
  234. }
  235. }
  236. resolve(response.data)
  237. }).catch(error => {
  238. reject(error)
  239. })
  240. }
  241. }else{
  242. get_employee_map().then(response => {
  243. if(response.data.code == 1){
  244. let data = {}
  245. for(let i in response.data.data.list){
  246. data[response.data.data.list[i].id] = response.data.data.list[i];
  247. }
  248. data.localStorageExpire = moment().add(Math.floor(Math.random() * (120 - 60 + 1)) + 60, "second").format("YYYY-MM-DD HH:mm:ss")
  249. commit('SET_EMPLOYEE_MAP', data)
  250. if (window.plus) {
  251. plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
  252. } else {
  253. localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
  254. }
  255. }
  256. resolve(response.data)
  257. }).catch(error => {
  258. reject(error)
  259. })
  260. }
  261. })
  262. },
  263. get_point_types({commit},is){
  264. return new Promise((resolve, reject) => {
  265. let point_types = null
  266. if(is){
  267. get_point_types().then(response => {
  268. if(response.data.code == 1){
  269. commit('SET_POINT_TYPES', response.data.data.list);
  270. if (window.plus) {
  271. plus.storage.setItem('SET_POINT_TYPES', JSON.stringify(response.data.data.list))
  272. } else {
  273. localStorage.setItem('SET_POINT_TYPES', JSON.stringify(response.data.data.list))
  274. }
  275. }
  276. resolve(response.data.data.list)
  277. }).catch(error => {
  278. reject(error)
  279. })
  280. return
  281. };
  282. if(window.plus){
  283. point_types = JSON.parse(plus.storage.getItem('SET_POINT_TYPES'))
  284. }else{
  285. point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
  286. }
  287. if(point_types){
  288. commit('SET_POINT_TYPES', point_types)
  289. resolve(point_types)
  290. }else{
  291. get_point_types().then(response => {
  292. if(response.data.code == 1){
  293. commit('SET_POINT_TYPES', response.data.data.list)
  294. if (window.plus) {
  295. plus.storage.setItem('SET_POINT_TYPES', JSON.stringify(response.data.data.list))
  296. } else {
  297. localStorage.setItem('SET_POINT_TYPES', JSON.stringify(response.data.data.list))
  298. }
  299. }
  300. resolve(response.data.data.list)
  301. }).catch(error => {
  302. reject(error)
  303. })
  304. }
  305. })
  306. },
  307. get_user_info({commit}) {
  308. return new Promise((resolve, reject) => {
  309. let user_info = null
  310. let nowDate = moment().format("YYYY-MM-DD HH:mm:ss");
  311. if (window.plus) {
  312. user_info = JSON.parse(plus.storage.getItem('user_info'))
  313. } else {
  314. user_info = JSON.parse(localStorage.getItem('user_info'))
  315. }
  316. if (user_info && user_info.data.id && moment(nowDate).isBefore(user_info.data.localStorageExpire)) {
  317. commit('SET_USERINFO', user_info.data)
  318. resolve({code: 1, msg: '', data: {user: user_info}})
  319. }else{
  320. get_info().then(response => {
  321. response.data.data.user.localStorageExpire = moment().add(Math.floor(Math.random() * (120 - 60 + 1)) + 60, "second").format("YYYY-MM-DD HH:mm:ss");
  322. commit('SET_USERINFO', response.data.data.user)
  323. if (window.plus) {
  324. plus.storage.setItem('user_info', JSON.stringify({data:response.data.data.user}))
  325. } else {
  326. localStorage.setItem('user_info', JSON.stringify({data:response.data.data.user}))
  327. }
  328. console.log('用户信息'+JSON.stringify(response.data.data.user.employee_detail.role_list))
  329. resolve(response.data)
  330. }).catch(error => {
  331. reject(error)
  332. })
  333. }
  334. })
  335. },
  336. }
  337. }
  338. export default user