user-list.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <!--
  2. 人员列表
  3. @Author: linqian
  4. @Date: 2021-07-07 14:00
  5. -->
  6. <template>
  7. <div>
  8. <!-- 搜索栏 -->
  9. <search-bar :conditionForm="conditionForm" @submitSearch="receiveSearch"></search-bar>
  10. <!-- 操作栏 -->
  11. <operate-bar :pageOptList="pageOptList" @submitPageOpt="receviceOpt"></operate-bar>
  12. <!-- 表格 -->
  13. <new-table
  14. ref="table"
  15. :tableUrl="whiteListTableUrl"
  16. :tableHeader="userListHeader"
  17. rowKey="idcard"
  18. :condition="condition"
  19. :selection="true"
  20. :tableOptList="tableOptList"
  21. @submitTableOpt="receviceOpt"
  22. @selection-change="handleSelectChange"
  23. >
  24. </new-table>
  25. </div>
  26. </template>
  27. <script>
  28. import { whiteListTableUrl, delWhiteList } from '@/api/list-manage';
  29. import newTable from '@/components/new-table';
  30. import batchAddUser from './batch-add-user.vue';
  31. import batchSetlevelUser from './batch-setlevel-user.vue';
  32. import batchDeleteUser from './batch-delete-user.vue';
  33. import operateBar from '@/components/operate-bar';
  34. import searchBar from '@/components/search-bar';
  35. import { searchOpt } from '@/mixins/page-opt';
  36. export default {
  37. components: {
  38. newTable,
  39. searchBar,
  40. operateBar
  41. },
  42. mixins: [searchOpt],
  43. data() {
  44. return {
  45. whiteListTableUrl,
  46. conditionForm: [
  47. {
  48. label: '白名单级别',
  49. name: 'level',
  50. op: '=',
  51. value: '',
  52. component: 'DgSelect',
  53. attr: {
  54. enum: 'ListLevelEnum'
  55. }
  56. },
  57. {
  58. label: '姓名',
  59. name: 'name',
  60. op: 'like',
  61. value: '',
  62. component: 'ElInput'
  63. },
  64. {
  65. label: '身份证号码',
  66. name: 'idcard',
  67. op: 'like',
  68. value: '',
  69. component: 'ElInput'
  70. },
  71. {
  72. label: '单位名称',
  73. name: 'orgId',
  74. op: '=',
  75. value: '',
  76. apiName: 'getOrgTree',
  77. nodeKey: 'id',
  78. type: 'APP',
  79. component: 'SelectOrgTree',
  80. placeholder: '请选择单位名称'
  81. }
  82. ],
  83. pageOptList: ['批量添加', '批量设置名单级别', '批量删除'],
  84. tableOptList: ['删除'],
  85. userListHeader: [
  86. {
  87. label: '姓名',
  88. prop: 'userName'
  89. },
  90. {
  91. label: '身份证号码',
  92. prop: 'idcard'
  93. },
  94. {
  95. label: '单位名称',
  96. prop: 'orgName'
  97. },
  98. {
  99. label: '白名单级别',
  100. prop: 'listLevel',
  101. enum: 'ListLevelEnum'
  102. }
  103. ],
  104. selectList: []
  105. };
  106. },
  107. computed: {},
  108. methods: {
  109. receviceOpt(type, row) {
  110. if (type == '批量添加') {
  111. this.handleAdd();
  112. } else if (type == '批量设置名单级别') {
  113. this.handleSetListLevel();
  114. } else if (type == '批量删除') {
  115. this.handleBatchRemove();
  116. } else if (type == '删除') {
  117. this.handleRemove(row);
  118. }
  119. },
  120. handleSelectChange(selection) {
  121. this.selectList = this.$lodash.cloneDeep(selection);
  122. },
  123. // 打开弹窗
  124. openLayer(title, content, operate, area = ['800px', '600px']) {
  125. const vm = this;
  126. const selectedData = vm.selectList;
  127. const layer = this.$dgLayer({
  128. title,
  129. content,
  130. props: {
  131. selectedData,
  132. operate
  133. },
  134. on: {
  135. success() {
  136. if (operate == 'del') {
  137. vm.removeList(selectedData);
  138. } else {
  139. vm.handleSearch();
  140. vm.$refs.table.handleClearSelection();
  141. }
  142. layer.close(layer.dialogIndex);
  143. }
  144. },
  145. cancel: function (index) {
  146. // 关闭对应弹窗的ID
  147. layer.close(index);
  148. return false;
  149. },
  150. area
  151. });
  152. },
  153. /**
  154. * 添加
  155. */
  156. handleAdd() {
  157. this.openLayer('批量添加人员白名单', batchAddUser, 'add', ['1200px', '800px']);
  158. },
  159. /**
  160. * 设置名单级别
  161. */
  162. verify() {
  163. const selectedData = this.selectList;
  164. if (selectedData.length == 0) {
  165. this.$message.warning('请至少选择一个人员!');
  166. return false;
  167. } else {
  168. return true;
  169. }
  170. },
  171. handleSetListLevel() {
  172. if (!this.verify()) return;
  173. this.openLayer('批量设置白名单级别', batchSetlevelUser, 'set');
  174. },
  175. /**
  176. * 删除
  177. */
  178. handleRemove(row) {
  179. this.$dgConfirm(`是否确定删除这条数据!`, '提示', {}).then(() => {
  180. this.removeList([row]);
  181. });
  182. },
  183. /**
  184. * 批量删除
  185. */
  186. handleBatchRemove() {
  187. if (!this.verify()) return;
  188. this.openLayer('批量删除白名单人员', batchDeleteUser, 'del');
  189. },
  190. removeList(selectData) {
  191. const params = {
  192. listIds: selectData.map((item) => item.listId)
  193. };
  194. delWhiteList(params).then((res) => {
  195. this.$message.success('删除成功!');
  196. this.handleSearch();
  197. });
  198. }
  199. },
  200. created() {},
  201. mounted() {}
  202. };
  203. </script>
  204. <style lang='scss'>
  205. </style>