batch-setlevel-appfunc.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <!--
  2. 批量设置应用功能红名单级别
  3. @Author: linqian
  4. @Date: 2021-07-014 09:46
  5. -->
  6. <template>
  7. <div>
  8. <el-form inline>
  9. <el-form-item label="红名单级别:">
  10. <dg-select v-model="level" enum="ListLevelEnum" clearable></dg-select>
  11. </el-form-item>
  12. </el-form>
  13. <p style="margin-bottom: 5px">选中的应用功能列表:</p>
  14. <!-- 表格树 -->
  15. <vxe-grid v-bind="gridOptions" ref="vxeGrid" :data="targetData"></vxe-grid>
  16. <div v-footer>
  17. <dg-button @click="handleCancel">取消</dg-button>
  18. <dg-button type="primary" @click="handleSubmit">确定</dg-button>
  19. </div>
  20. </div>
  21. </template>
  22. <script>
  23. import getTreeDataMixin from '@/pages/common/transfer-tree/mixin';
  24. import { saveRedAppFunc, updateRedAppFuncLevel } from '@/api/list-manage';
  25. export default {
  26. props: {
  27. data: [Array],
  28. value: {
  29. type: Array,
  30. default() {
  31. return [];
  32. }
  33. },
  34. selectedData: [Array],
  35. operate: {
  36. type: String,
  37. default: 'add'
  38. }
  39. },
  40. mixins: [getTreeDataMixin],
  41. components: {},
  42. data() {
  43. return {
  44. level: '1',
  45. valueName: 'id',
  46. childrenName: 'child',
  47. pidName: 'p',
  48. gridOptions: {
  49. border: true,
  50. rowId: 'id',
  51. treeConfig: { children: 'child', indent: 40, expandAll: false },
  52. loading: false,
  53. checkboxConfig: {
  54. // 设置复选框支持分页勾选,需要设置 rowId 行数据主键
  55. reserve: true
  56. },
  57. columns: [
  58. { type: 'seq', width: 60, align: 'center', title: '序号' },
  59. { title: '应用功能名称', field: 'label', treeNode: true, align: 'left', headerAlign: 'center' }
  60. ]
  61. }
  62. };
  63. },
  64. computed: {},
  65. methods: {
  66. handleCancel() {
  67. this.$emit('close');
  68. },
  69. handlerValues(arr, key) {
  70. let obj = {};
  71. arr.forEach((item, index) => {
  72. let { appId } = item;
  73. if (!obj[appId]) {
  74. obj[appId] = {
  75. appId,
  76. funIds: []
  77. };
  78. }
  79. // else {
  80. obj[appId].funIds.push(item.id);
  81. // }
  82. });
  83. return Object.values(obj); // 最终输出
  84. },
  85. // 保存
  86. save() {
  87. console.log("选中的数据", this.selectedData);
  88. const params = this.handlerValues(this.selectedData).map((item) => {
  89. return {
  90. ...item,
  91. level: this.level
  92. };
  93. });
  94. return new Promise((resolve) => {
  95. saveRedAppFunc(params).then((res) => {
  96. resolve(res.data);
  97. this.$message.success('保存成功!');
  98. });
  99. });
  100. },
  101. // 设置级别
  102. setLevel() {
  103. const params = {
  104. level: this.level,
  105. listIds: this.selectedData.map(item => item.listId)
  106. };
  107. return new Promise((resolve) => {
  108. updateRedAppFuncLevel(params).then((res) => {
  109. resolve(res.data);
  110. this.$message.success('设置成功!');
  111. });
  112. });
  113. },
  114. async handleSubmit() {
  115. // 添加白名单
  116. if (this.operate == 'add') {
  117. await this.save();
  118. } else {
  119. // 设置白名单
  120. await this.setLevel();
  121. }
  122. this.$emit('success');
  123. }
  124. },
  125. created() {},
  126. mounted() {}
  127. };
  128. </script>
  129. <style lang='scss' scoped>
  130. @import url('../index.scss');
  131. </style>