select.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <ele-modal
  3. title="选择人员"
  4. :visible.sync="staffVisible"
  5. :before-close="handleClose"
  6. width="400px"
  7. :centered="true"
  8. :close-on-click-modal="false"
  9. :maxable="true"
  10. append-to-body
  11. >
  12. <el-form label-width="68px" label-position="left">
  13. <el-form-item label="部门:" required>
  14. <deptSelect v-model="form.groupId" @changeGroup="searchDeptNodeClick" />
  15. </el-form-item>
  16. <el-form-item label="清理人:" required>
  17. <el-select
  18. style="width: 100%"
  19. v-model="form.nameIds"
  20. multiple
  21. placeholder="请选择"
  22. >
  23. <el-option
  24. v-for="item in nameList"
  25. :key="item.id"
  26. :label="item.name"
  27. :value="item.id"
  28. ></el-option>
  29. </el-select>
  30. </el-form-item>
  31. </el-form>
  32. <template v-slot:footer>
  33. <el-button @click="handleClose">取消</el-button>
  34. <el-button type="primary" @click="choose"> 确定 </el-button>
  35. </template>
  36. </ele-modal>
  37. </template>
  38. <script>
  39. import { getUserPage } from '@/api/system/organization';
  40. import deptSelect from '@/components/CommomSelect/dept-select.vue';
  41. export default {
  42. components: {
  43. deptSelect
  44. },
  45. data() {
  46. return {
  47. staffVisible: false,
  48. form: {
  49. nameIds: []
  50. },
  51. depVOList: [],
  52. nameList: [],
  53. index: 0
  54. };
  55. },
  56. methods: {
  57. handleClose() {
  58. this.staffVisible = false;
  59. this.nameList = [];
  60. this.form = {
  61. nameIds: []
  62. };
  63. },
  64. //选择部门(搜索)
  65. searchDeptNodeClick(info, row) {
  66. if (info) {
  67. const params = { groupId: info };
  68. this.getUserList(params);
  69. } else {
  70. this.form.nameIds = [];
  71. }
  72. },
  73. open(ids, index) {
  74. this.staffVisible = true;
  75. this.index = index;
  76. },
  77. // 选择
  78. choose() {
  79. if (!this.form.nameIds || this.form.nameIds.length == 0) {
  80. return this.$message.warning('请选择清理人');
  81. }
  82. // let cleaners =
  83. let obj = {};
  84. this.nameList.map((el) => {
  85. obj[el.id] = el.name;
  86. });
  87. let nameArr = [];
  88. this.form.nameIds.map((item) => {
  89. if (obj[item]) {
  90. nameArr.push(obj[item]);
  91. }
  92. });
  93. let name = nameArr.toString();
  94. this.$emit('setPersonnel', name, this.index);
  95. this.handleClose();
  96. },
  97. // 获取人员
  98. async getUserList(params) {
  99. try {
  100. let data = { pageNum: 1, size: -1 };
  101. // 如果传了参数就是获取巡点检人员数据
  102. if (params) {
  103. data = Object.assign(data, params);
  104. }
  105. const res = await getUserPage(data);
  106. let list = res.list.map((el) => {
  107. return {
  108. id: el.id,
  109. name: el.name
  110. };
  111. });
  112. this.nameList = list;
  113. } catch (error) {}
  114. }
  115. }
  116. };
  117. </script>