permission.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import {
  2. i18n
  3. } from '../locale/setupI18n';
  4. let permission = {
  5. permissionList: uni.getStorageSync('permissionList') || [],
  6. hasP(enCode, menuIds) {
  7. if (!menuIds) return false
  8. const list = permission.permissionList.filter(o => o.modelId === menuIds)
  9. if (!list.length) return false
  10. const columnList = list[0] && list[0].column ? list[0].column : []
  11. if (!columnList.length) return false
  12. const hasPermission = columnList.some(column => column.enCode === enCode)
  13. if (hasPermission) return true
  14. return false
  15. },
  16. hasFormP(enCode, menuIds) {
  17. if (!menuIds) return false
  18. const list = permission.permissionList.filter(o => o.modelId === menuIds)
  19. if (!list.length) return false
  20. const formList = list[0] && list[0].form ? list[0].form : []
  21. if (!formList.length) return false
  22. const hasPermission = formList.some(form => form.enCode === enCode)
  23. if (hasPermission) return true
  24. return false
  25. },
  26. hasBtnP(enCode, menuIds) {
  27. if (!menuIds) return false
  28. const list = permission.permissionList.filter(o => o.modelId === menuIds)
  29. if (!list.length) return false
  30. const btnList = list[0] && list[0].button ? list[0].button : []
  31. if (!btnList.length) return false
  32. const hasPermission = btnList.some(btn => btn.enCode === enCode)
  33. if (hasPermission) return true
  34. return false
  35. },
  36. getPermission(columnData, menuId, getScriptFunc) {
  37. let btnsList = columnData.btnsList
  38. let customBtnsList = columnData.customBtnsList
  39. let columnBtnsList = columnData.columnBtnsList.filter(o => o.show)
  40. const useBtnPermission = columnData.useBtnPermission
  41. const useColumnPermission = columnData.useColumnPermission
  42. const useFormPermission = columnData.useFormPermission
  43. const useBtnPermissionList = [...btnsList, ...columnBtnsList]
  44. let btnPermission = [];
  45. let customBtnsPermission = [];
  46. let columnPermission = [];
  47. let formList = [];
  48. let currentMenu = {}
  49. let btn_list = ['detail', 'edit', 'add', 'remove', 'batchRemove']
  50. let labelS = {}
  51. let enableFunc = {}
  52. useBtnPermissionList.map((o) => {
  53. if (btn_list.includes(o.value) && o.show) {
  54. labelS['btn_' + o.value] = o.labelI18nCode ? i18n.global.t(o.labelI18nCode, o.label) : o
  55. .label
  56. }
  57. })
  58. let isMenu = permission.permissionList.filter((o) => {
  59. if (o.modelId === menuId) return currentMenu = o
  60. })
  61. //按钮
  62. if (useBtnPermission) {
  63. if (customBtnsList && customBtnsList.length) {
  64. for (let i = 0; i < customBtnsList.length; i++) {
  65. inner: for (let j = 0; j < currentMenu.button.length; j++) {
  66. if (customBtnsList[i].value === currentMenu.button[j].enCode) {
  67. customBtnsPermission.push(customBtnsList[i])
  68. break inner
  69. }
  70. }
  71. }
  72. }
  73. if (!!isMenu.length) {
  74. for (let i = 0; i < useBtnPermissionList.length; i++) {
  75. inner: for (let j = 0; j < currentMenu.button.length; j++) {
  76. if ('btn_' + useBtnPermissionList[i].value === currentMenu.button[j].enCode) {
  77. btnPermission.push(currentMenu.button[j].enCode)
  78. break inner
  79. }
  80. }
  81. }
  82. }
  83. } else {
  84. for (let i = 0; i < useBtnPermissionList.length; i++) {
  85. inner: for (let j = 0; j < btn_list.length; j++) {
  86. if (useBtnPermissionList[i].show && useBtnPermissionList[i].value === btn_list[j]) {
  87. btnPermission.push('btn_' + useBtnPermissionList[i].value)
  88. break inner
  89. }
  90. }
  91. }
  92. customBtnsPermission = customBtnsList
  93. }
  94. // 启用规则
  95. columnBtnsList.map((o) => {
  96. enableFunc[o.value] = () => {
  97. return true
  98. }
  99. if (o.event && o.event.enableFunc) {
  100. const func = getScriptFunc(o.event.enableFunc)
  101. enableFunc[o.value] = func
  102. }
  103. })
  104. // 启用规则自定义
  105. customBtnsList.map((o) => {
  106. enableFunc[o.value] = () => {
  107. return true
  108. }
  109. if (o.event && o.event.enableFunc) {
  110. const func = getScriptFunc(o.event.enableFunc)
  111. enableFunc[o.value] = func
  112. }
  113. })
  114. if (useColumnPermission) {
  115. if (!!isMenu.length) {
  116. columnData.columnList.forEach((o, i) => {
  117. currentMenu.column.forEach((m, j) => {
  118. if (o.prop === m.enCode) {
  119. columnPermission.push(o)
  120. }
  121. })
  122. })
  123. }
  124. } else {
  125. columnPermission = columnData.columnList
  126. }
  127. if (useFormPermission && !!isMenu.length) formList = currentMenu.form
  128. return {
  129. labelS,
  130. btnPermission,
  131. customBtnsPermission,
  132. columnPermission,
  133. formPermission: {
  134. formList,
  135. useFormPermission,
  136. menuId
  137. },
  138. enableFunc,
  139. useBtnPermission
  140. }
  141. },
  142. updatePermissionList() {
  143. permission.permissionList = uni.getStorageSync('permissionList') || []
  144. }
  145. }
  146. export default permission