RoleEdit.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <div class="role-edit">
  3. <handle-top>
  4. <save slot="btn" type="save" @click.native="save()"></save>
  5. </handle-top>
  6. <role-info-handle ref="info"></role-info-handle>
  7. <role-power-select ref="power"></role-power-select>
  8. </div>
  9. </template>
  10. <script>
  11. import HandleTop from '@/components/handle-top/HandleTop'
  12. import roleInfoHandle from '@/SManagement/user/role-edit/components/roleInfoHandle'
  13. import RolePowerSelect from '@/SManagement/user/role-edit/components/RolePowerSelect'
  14. import save from '@/SManagement/archives_upload/components/save'
  15. export default {
  16. name: 'roleEdit',
  17. data () {
  18. return {
  19. //角色新建
  20. add: {
  21. "classname": "sale.role.role",
  22. "method": "insertormodify_role",
  23. "content": {
  24. "roleid": 0,
  25. "rolename": "",
  26. "remarks": ""
  27. }
  28. },
  29. roleid: parseInt(window.sessionStorage.getItem('currentEditRole')) == 0 ? 0 : JSON.parse(window.sessionStorage.getItem('currentEditRole')).roleid,
  30. editData: parseInt(window.sessionStorage.getItem('currentEditRole')) == 0 ? 0 : JSON.parse(window.sessionStorage.getItem('currentEditRole')),
  31. allPower: []
  32. };
  33. },
  34. components: { roleInfoHandle, HandleTop, save, RolePowerSelect },
  35. computed: {
  36. },
  37. watch: {
  38. },
  39. created () {
  40. this.init()
  41. },
  42. methods: {
  43. //初始化
  44. init () {
  45. if (this.editData) {
  46. this.$nextTick(() => {
  47. this.$refs.info.ruleForm.name = this.editData.rolename
  48. this.$refs.info.ruleForm.descript = this.editData.remarks
  49. })
  50. }
  51. },
  52. //计算选中的所有权限
  53. getAllPower () {
  54. this.$refs.power.tempPowerList.forEach(item => {
  55. if (item.optionids.length < 1) return
  56. let result = this.allPower.find(item2 => item2.systemappid == item.systemappid)
  57. if (result == undefined) {
  58. let obj = {}
  59. obj.systemappid = item.systemappid
  60. obj.optionids = item.optionids
  61. this.allPower.push(obj)
  62. } else {
  63. result.optionids = result.optionids
  64. }
  65. })
  66. },
  67. async save () {
  68. this.add.content.rolename = this.$refs.info.ruleForm.name
  69. this.add.content.remarks = this.$refs.info.ruleForm.descript
  70. this.getAllPower()
  71. this.$refs.info.$refs.ruleForm.validate(async val => {
  72. if (val) {
  73. if (this.editData != 0) {
  74. this.add.content.roleid = this.editData.roleid
  75. let res = await this.$api.requested(this.add)
  76. if(res.code == 1) {
  77. let res = await this.$api.requested({
  78. "classname": "sale.role.role",
  79. "method": "add_appauth",
  80. "content": {
  81. "roleid": this.roleid,
  82. "systemapps": this.allPower
  83. }
  84. })
  85. this.tool.showMessage(res, () => {
  86. this.$store.dispatch('DrawerShowChange',false)
  87. this.$router.back()
  88. })
  89. }
  90. } else {
  91. let res = await this.$api.requested(this.add)
  92. if (res.code == 1) {
  93. let res2 = this.$api.requested({
  94. "classname": "sale.role.role",
  95. "method": "add_appauth",
  96. "content": {
  97. "roleid": res.data.roleid,
  98. "systemapps": this.allPower
  99. }
  100. })
  101. this.tool.showMessage(res2, () => {
  102. this.$store.dispatch('DrawerShowChange',false)
  103. this.$router.back()
  104. })
  105. }
  106. }
  107. }
  108. })
  109. }
  110. },
  111. };
  112. </script>
  113. <style scoped>
  114. .role-edit {
  115. min-height: 100%;
  116. }
  117. .power1 {
  118. background: #ffffff;
  119. min-height: calc(100vh - 320px);
  120. }
  121. .title-box {
  122. height: 48px;
  123. background: #ffffff;
  124. line-height: 48px;
  125. padding-left: 16px;
  126. }
  127. .title-box .title {
  128. font-size: 14px;
  129. font-weight: bold;
  130. color: #333333;
  131. margin-bottom: 20px;
  132. height: 48px;
  133. width: 100%;
  134. }
  135. </style>