batch-add-appfunc.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <!--
  2. 批量添加应用功能红名单
  3. @Author: linqian
  4. @Date: 2021-07-13
  5. -->
  6. <template>
  7. <div>
  8. <el-form inline>
  9. <el-form-item label="应用系统名称:">
  10. <el-input v-model="appName" clearable></el-input>
  11. </el-form-item>
  12. <el-form-item>
  13. <dg-button type="primary" @click="handleSearch" icon="el-icon-search">查询</dg-button>
  14. </el-form-item>
  15. </el-form>
  16. <!-- 表格树 -->
  17. <vxe-table ref="vxeGrid" :data="sourceData" v-bind="gridOptions">
  18. <vxe-table-column type="checkbox" width="60" align="center">
  19. <template #header="row">
  20. <span class="custom-checkbox">
  21. <el-checkbox
  22. :indeterminate="row.indeterminate"
  23. v-model="row.checked"
  24. @change="handleToggleAllCheck"
  25. ></el-checkbox>
  26. </span>
  27. </template>
  28. <template #checkbox="scoped">
  29. <span class="custom-checkbox">
  30. <el-checkbox
  31. :indeterminate="scoped.indeterminate"
  32. v-model="scoped.checked"
  33. @change="handleToggleCheck(scoped.row)"
  34. ></el-checkbox>
  35. </span>
  36. </template>
  37. </vxe-table-column>
  38. <vxe-table-column type="seq" width="60" align="center" title="序号"></vxe-table-column>
  39. <vxe-table-column align="center" title="应用功能名称" field="label" :treeNode="true"></vxe-table-column>
  40. </vxe-table>
  41. <div v-footer>
  42. <dg-button @click="handleCancel">取消</dg-button>
  43. <dg-button type="primary" @click="handleSubmit">确定</dg-button>
  44. </div>
  45. </div>
  46. </template>
  47. <script>
  48. import getTreeDataMixin from '@/pages/common/transfer-tree/mixin';
  49. import batchSetlevelAppFunc from './batch-setlevel-appfunc.vue';
  50. import { getFunIdsInRedList } from '@/api/list-manage';
  51. export default {
  52. props: {
  53. data: [Array]
  54. },
  55. mixins: [getTreeDataMixin],
  56. components: {},
  57. data() {
  58. return {
  59. appName: '',
  60. value: [],
  61. valueName: 'id',
  62. childrenName: 'child',
  63. pidName: 'p',
  64. gridOptions: {
  65. border: true,
  66. rowId: 'id',
  67. treeConfig: { children: 'child', indent: 40 },
  68. loading: false,
  69. checkboxConfig: {
  70. // 设置复选框支持分页勾选,需要设置 rowId 行数据主键
  71. reserve: true
  72. }
  73. }
  74. };
  75. },
  76. computed: {},
  77. methods: {
  78. handleToggleCheck(row) {
  79. this.$refs.vxeGrid.toggleCheckboxRow(row);
  80. },
  81. handleToggleAllCheck() {
  82. this.$refs.vxeGrid.toggleAllCheckboxRow();
  83. },
  84. handleSearch() {
  85. this.dataSource = this.data.filter(item => item.label.indexOf(this.appName) > -1);
  86. },
  87. handleCancel() {
  88. this.$emit('close');
  89. },
  90. handleSubmit() {
  91. // 获取全选和半选的节点
  92. const checkboxRecords = this.$refs.vxeGrid.getCheckboxRecords(true);
  93. const indeterminateRecords = this.$refs.vxeGrid.getCheckboxIndeterminateRecords(true);
  94. const totalRecords = [...checkboxRecords, ...indeterminateRecords].filter((item) => item.appId);
  95. if (totalRecords.length > 0) {
  96. this.setLevel(totalRecords);
  97. } else {
  98. this.$message.warning('请至少选择一个应用功能!');
  99. }
  100. },
  101. /**
  102. * 设置名单等级
  103. */
  104. setLevel(selectedData) {
  105. const vm = this;
  106. const layer = this.$dgLayer({
  107. title: '设置红名单等级',
  108. content: batchSetlevelAppFunc,
  109. props: {
  110. data: this.data,
  111. value: selectedData.map((item) => item.id),
  112. selectedData,
  113. operate: 'add'
  114. },
  115. on: {
  116. success() {
  117. vm.$emit('success');
  118. layer.close(layer.dialogIndex);
  119. }
  120. },
  121. cancel: function (index) {
  122. // 关闭对应弹窗的ID
  123. layer.close(index);
  124. return false;
  125. },
  126. area: ['800px', '600px']
  127. });
  128. }
  129. },
  130. created() {
  131. // 查询已被添加为红名单的功能id
  132. getFunIdsInRedList().then((res) => {
  133. this.value = res.data.content;
  134. });
  135. },
  136. mounted() {}
  137. };
  138. </script>
  139. <style lang='scss' scoped>
  140. @import url('../index.scss');
  141. </style>