index.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import { login, queryFloor, queryfmapID } from '@/api/login.js'
  4. import { queryBrand } from '@/api/public.js'
  5. import axios from 'axios'
  6. import router from '../router'
  7. Vue.use(Vuex)
  8. export default new Vuex.Store({
  9. state: {
  10. // 阿里云环境,开发环境使用 admin:liujiandong ,测试环境,生产环境使用null
  11. ssoToken: ['aly_dev', 'serve'].includes(process.env.NODE_ENV) ? 'admin:liujiandong' : null,
  12. // ssoToken: '',
  13. // ssoToken: null,
  14. plazaName: '',
  15. isPreview: false,
  16. lastRoute: '',
  17. isrequestAuth: null, // 是否请求登录校验接口
  18. permissions: [], //权限信息 "GLSMS_VIEW":"说明书查看"、"GLSMS_SYMBOL_MANAGE": "图例库管理"、 "GLSMS_PLANARGRAPH_MANAGE":"平面图维护"
  19. plazas: [], //项目列表
  20. userInfo: {
  21. employeename: '', //用户名称:艾宇;
  22. orgCode: '',
  23. username: 'lengqiang', //账户名称
  24. },
  25. plazaId: '', //项目Id
  26. projectName: '', //全局项目名称
  27. floorsArr: [], //楼层数组
  28. floorSelect: [], //楼层下拉框
  29. floorSelect2: [], //分布图楼层下拉框
  30. fmapID: '',
  31. haveFengMap: -1, //是否有蜂鸟地图的数据 -1为等待 0 为失败 1 为成功
  32. isMessage: true, //是否有发布的图
  33. scpzTable: [], //土建装饰图例展示
  34. legendTable: [], //除土建装饰图例展示
  35. remarksText: '', //备注
  36. // defaultComment: '',
  37. bunkObj: {}, // 铺位名称
  38. currentFloor: {}, //当前选中的楼层信息
  39. accessLevel: -1, // 权限级别
  40. showView: 1,
  41. categoryId: 'GDXT', //当前选中的系统
  42. isGetmap: false, //是否可以请求底图(在项目中方可请求)
  43. planNum: '', //主要设备房 展示备注需要
  44. typeNum: '', //图例数量 展示备注需要
  45. floorObj: {},
  46. },
  47. getters: {
  48. plazaName: (state) => state.plazaName,
  49. accessLevel: (state) => state.accessLevel,
  50. isPreview: (state) => state.isPreview,
  51. ssoToken: (state) => state.ssoToken,
  52. lastRoute: (state) => state.lastRoute,
  53. floorsArr: (state) => state.floorsArr,
  54. floorSelect: (state) => state.floorSelect,
  55. floorSelect2: (state) => state.floorSelect2,
  56. plazaId: (state) => state.plazaId,
  57. plazas: (state) => state.plazas,
  58. fmapID: (state) => state.fmapID,
  59. haveFengMap: (state) => state.haveFengMap,
  60. isMessage: (state) => state.isMessage,
  61. scpzTable: (state) => state.scpzTable,
  62. legendTable: (state) => state.legendTable,
  63. remarksText: (state) => state.remarksText,
  64. bunkObj: (state) => state.bunkObj,
  65. showView: (state) => state.showView,
  66. isGetmap: (state) => state.isGetmap,
  67. planNum: (state) => state.planNum,
  68. typeNum: (state) => state.typeNum,
  69. isrequestAuth: (state) => state.isrequestAuth,
  70. permissions: (state) => state.permissions,
  71. floorObj: (state) => state.floorObj,
  72. },
  73. mutations: {
  74. SETPLAZENAME(state, data) {
  75. state.plazaName = data
  76. },
  77. SETSHOWVIEW(state, data) {
  78. state.showView = data
  79. },
  80. SETISPREVIEW(state, data) {
  81. state.isPreview = data
  82. },
  83. SETSSOTOKEN(state, data) {
  84. state.ssoToken = data
  85. },
  86. // 设置是否登陆校验
  87. SETISREQUESTtAUTH(state, palyload) {
  88. state.isrequestAuth = palyload
  89. },
  90. SETLASTROUTER(state, data) {
  91. state.lastRoute = data
  92. },
  93. // 设置相关权限信息
  94. SETAUTHMSG(state, palyload) {
  95. state.permissions = palyload.permissions
  96. // state.plazas = palyload.plazas
  97. // state.userInfo.employeename = palyload.employeename
  98. // state.userInfo.orgCode = palyload.orgCode
  99. // state.userInfo.username = palyload.username
  100. // TODO: 设置用户名
  101. if (palyload.username) {
  102. state.userInfo.username = palyload.username
  103. }
  104. },
  105. SETISMESSAGE(state, data) {
  106. state.isMessage = data
  107. },
  108. SETFLOORS(state, data) {
  109. let numArr = []
  110. state.floorSelect = []
  111. state.floorSelect2 = []
  112. state.floorsArr = data
  113. if (data.length > 0) {
  114. data.forEach((e) => {
  115. let obj = {
  116. id: e.gcname,
  117. name: e.code,
  118. }
  119. let obj2 = {
  120. id: e.gname,
  121. name: e.code,
  122. }
  123. // 下拉框的楼层数组
  124. state.floorSelect.push(obj)
  125. state.floorSelect2.push(obj2)
  126. // 获取默认展示楼层
  127. if (e.seq > 0) {
  128. numArr.push(e.seq)
  129. }
  130. })
  131. if (Math.min.apply(Math, numArr)) {
  132. state.floorObj = data.find((item) => {
  133. return item.seq == Math.min.apply(Math, numArr)
  134. })
  135. }
  136. }
  137. },
  138. SETMAPID(state, data) {
  139. state.fmapID = data
  140. },
  141. SETHAVEFENGMAP(state, data) {
  142. state.haveFengMap = data
  143. },
  144. // 土建的图例
  145. SETSCPZTABLE(state, data) {
  146. state.scpzTable = data
  147. },
  148. SETLEGENDTABLE(state, data) {
  149. state.legendTable = data
  150. },
  151. SETREMARKSTEXT(state, data) {
  152. state.remarksText = data
  153. },
  154. SETBUNKOBJ(state, data) {
  155. state.bunkObj = data
  156. },
  157. SETCURRENTFLOOR(state, data) {
  158. state.currentFloor = data
  159. },
  160. STOREACCESSLEVEL(state, data) {
  161. state.accessLevel = data
  162. },
  163. STOREPLAZAID(state, id) {
  164. state.plazaId = id
  165. if (id) {
  166. state.isGetmap = true
  167. } else {
  168. state.isGetmap = false
  169. }
  170. },
  171. /**
  172. * 修改 categoryId
  173. */
  174. SETCATEGORYID(state, data) {
  175. state.categoryId = data
  176. },
  177. SETISGETMAP(state, data) {
  178. state.isGetmap = data
  179. },
  180. SETPLANNUM(state, data) {
  181. state.planNum = data
  182. },
  183. SETTYPENUM(state, data) {
  184. state.typeNum = data
  185. },
  186. },
  187. actions: {
  188. // 获取项目列表、userId
  189. async getUserInfo({ commit }, palyload) {
  190. await login({
  191. returnTree: true,
  192. })
  193. .then((res) => {
  194. // 获取用户当前权限
  195. if (res.result === 'success') {
  196. // 如果用户没有权限则跳入404
  197. if (!res.permissions || !res.permissions.includes('GLSMS_VIEW')) {
  198. router.push({
  199. path: '/404',
  200. })
  201. }
  202. commit('STOREACCESSLEVEL', res.level)
  203. commit('SETAUTHMSG', res)
  204. let level = res.level
  205. if (window.opener && window.opener.__fromGroupPage) {
  206. commit('SETAUTHMSG', level)
  207. let data = window.opener.__fromGroupPage
  208. level = data.level
  209. commit('SETPLAZENAME', data.plazaName)
  210. localStorage.setItem('PLAZAID', data.plazaId)
  211. commit('STOREPLAZAID', data.plazaId)
  212. // TODO: 1.默认跳转到项目概览,如果是从项目首页刷新而来,进入项目首页
  213. if (window.location.href.indexOf('home/homepage') !== -1) {
  214. router.push({ path: './home/homepage' })
  215. } else {
  216. router.push({ path: './home/overview' })
  217. }
  218. } else {
  219. if (level == 0) {
  220. if (res.treeData[0].ccode) {
  221. localStorage.setItem('PLAZAID', res.treeData[0].ccode)
  222. commit('STOREPLAZAID', res.treeData[0].ccode)
  223. commit('SETPLAZENAME', res.treeData[0].cname)
  224. }
  225. // TODO: 1.默认跳转到项目概览,如果是从项目首页刷新而来,进入项目首页
  226. if (window.location.href.indexOf('home/homepage') !== -1) {
  227. router.push({ path: './home/homepage' })
  228. } else {
  229. router.push({
  230. path: './home/overview',
  231. query: {
  232. plazaId: res.treeData[0].ccode,
  233. },
  234. })
  235. }
  236. } else {
  237. router.push({
  238. path: './group',
  239. })
  240. }
  241. }
  242. // 给oA头添加名称
  243. // 指定条问题
  244. document.getElementById('wd-fm-id-fm-switch-profile').style.display = 'inline-block'
  245. document.getElementById('wd-fm-id-fm-switch-profile').innerText = '您好,' + res.username
  246. }
  247. })
  248. .catch((err) => {
  249. // 由于跨域做的判断
  250. if (this.getters.accessLevel == 0) {
  251. router.push({
  252. path: './home/homepage',
  253. })
  254. }
  255. })
  256. },
  257. async getUserInfoNoPath({ commit }, palyload) {
  258. await login({
  259. returnTree: true,
  260. })
  261. .then((res) => {
  262. if (res.result === 'success') {
  263. // commit('STOREACCESSLEVEL', res.level)
  264. commit('SETAUTHMSG', res)
  265. document.getElementById('wd-fm-id-fm-switch-profile').style.display = 'inline-block'
  266. document.getElementById('wd-fm-id-fm-switch-profile').innerText = '您好,' + res.username
  267. }
  268. })
  269. .catch((err) => {
  270. console.log('getuserfo catch', err)
  271. })
  272. },
  273. async getFloors(context) {
  274. await queryFloor({
  275. plazaId: localStorage.getItem('PLAZAID') || context.state.plazaId,
  276. }).then((res) => {
  277. if (res.result == 'success') {
  278. context.commit('SETFLOORS', res.data)
  279. }
  280. })
  281. },
  282. async getfmapID(context) {
  283. await queryfmapID({
  284. mapId: localStorage.getItem('PLAZAID') || context.state.plazaId,
  285. }).then((res) => {
  286. context.commit('SETMAPID', `${localStorage.getItem('PLAZAID') || context.state.plazaId}_${res.mapVersion}`)
  287. })
  288. },
  289. async getBrand(context) {
  290. let data = {
  291. plazaId: `${localStorage.getItem('PLAZAID') || context.state.plazaId}`,
  292. }
  293. await queryBrand({
  294. data,
  295. }).then((res) => {
  296. let obj = {}
  297. if (res.data.data) {
  298. let Data = res.data.data
  299. Data.forEach((i) => {
  300. obj[i.bunkdesc] = i
  301. })
  302. }
  303. context.commit('SETBUNKOBJ', obj)
  304. })
  305. },
  306. },
  307. modules: {},
  308. })