top-nav-role-select.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <ul class="nav navbar-nav navbar-right">
  3. <li class="dropdown">
  4. <a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
  5. {{ roleStateInstance.userRoleOrTemplate != null ? roleStateInstance.userRoleOrTemplate.roleOrTemplateName : '全部'
  6. }}
  7. <span class="caret" />
  8. </a>
  9. <ul v-if="userRoleOrTemplateList != null && userRoleOrTemplateList.length > 0" class="dropdown-menu">
  10. <li
  11. v-for="userRoleOrTemplate in userRoleOrTemplateList"
  12. :key="userRoleOrTemplate.userRoleTemplateId + '-' + userRoleOrTemplate.userRoleId"
  13. style="cursor: pointer;"
  14. >
  15. <a
  16. @click="roleStateInstance.setUserRoleOrTemplate(userRoleOrTemplate); uploadSelectedRole(userRoleOrTemplate)"
  17. >{{
  18. userRoleOrTemplate.roleOrTemplateName }}</a>
  19. </li>
  20. <li style="cursor: pointer;">
  21. <a @click="roleStateInstance.setUserRoleOrTemplate(null); uploadSelectedRole(null)">全部</a>
  22. </li>
  23. </ul>
  24. </li>
  25. </ul>
  26. </template>
  27. <script>
  28. import Common from '../common/Common.js';
  29. import ClientResourceV2 from '../api/base/ClientResourceV2.js';
  30. import TokenClientResource from '../api/base/TokenClientResource.js';
  31. import { Notify, Uuid } from 'pc-component-v3';
  32. import { useRoleStateSingleton } from './RoleState.js';
  33. import { UserStorageResource } from 'pc-component-v3';
  34. import { message } from 'ant-design-vue';
  35. export default {
  36. props: {
  37. },
  38. data: function () {
  39. return {
  40. userRoleOrTemplateList: [],
  41. loginClientName: '',
  42. visible: false,
  43. roleStateInstance: useRoleStateSingleton,
  44. };
  45. },
  46. mounted: function () {
  47. this.listUserRoleOrTemplate();
  48. },
  49. methods: {
  50. /**
  51. * 查询登录用户具备的角色OR角色模板
  52. */
  53. listUserRoleOrTemplate: function () {
  54. var _self = this;
  55. $.ajax({
  56. url: Common.getApiURL('RoleResourceV3/listUserRoleOrTemplate'),
  57. type: 'get',
  58. contentType: 'application/json',
  59. beforeSend: function (request) {
  60. Common.addTokenToRequest(request);
  61. },
  62. success: function (response) {
  63. if (response.errorCode === 0) {
  64. _self.userRoleOrTemplateList = response.datas;
  65. _self.downloadSelectedRole();
  66. } else {
  67. Notify.error('错误', response.errorMessage, false);
  68. }
  69. },
  70. error: function (XMLHttpRequest, textStatus, errorThrown) {
  71. Common.processException(XMLHttpRequest);
  72. },
  73. });
  74. },
  75. /**
  76. * 选择的用户权限存储只后端
  77. * @author YangZhiJie
  78. * @date 2024-10-14
  79. */
  80. uploadSelectedRole: function (userRoleOrTemplate) {
  81. let key = 'UserSelectedRole';
  82. let userStorageDtos = [
  83. {
  84. key: key,
  85. value: userRoleOrTemplate == null ? null : JSON.stringify(userRoleOrTemplate),
  86. },
  87. ];
  88. UserStorageResource.uploadUserStorage(userStorageDtos).then(successData => {
  89. console.log(successData);
  90. }, errorData => {
  91. Common.processException(errorData);
  92. });
  93. },
  94. /**
  95. * 选择的用户权限存储只后端
  96. * @author YangZhiJie
  97. * @date 2024-10-14
  98. */
  99. downloadSelectedRole: function () {
  100. var _self = this;
  101. let key = 'UserSelectedRole';
  102. UserStorageResource.uniqueByKey(key).then(
  103. success => {
  104. if (success.errorCode == 0) {
  105. if (success.data) {
  106. let userRoleTemplate = JSON.parse(success.data);
  107. if(_self.userRoleOrTemplateList != null){
  108. _self.userRoleOrTemplateList.forEach(item => {
  109. if(
  110. (item.userRoleTemplateId + '-' + item.userRoleId) ==
  111. (userRoleTemplate.userRoleTemplateId + '-' + userRoleTemplate.userRoleId)
  112. ){
  113. _self.roleStateInstance.setUserRoleOrTemplate(item);
  114. }
  115. });
  116. }
  117. } else {
  118. _self.roleStateInstance.setUserRoleOrTemplate(null);
  119. }
  120. } else {
  121. message.warning(success.errorMessage);
  122. }
  123. },
  124. error => {
  125. Common.processException(error);
  126. },
  127. );
  128. },
  129. },
  130. };
  131. </script>