DesignatedPersonSelection.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div>
  3. <el-select
  4. v-model="prop.form.designatedUserList.value"
  5. value-key="id"
  6. multiple
  7. placeholder="请选择人员vbbnnb"
  8. @click="dialogVisible = !disableType.contentDisable"
  9. :disabled="disableType.contentDisable"
  10. >
  11. <el-option
  12. v-for="user in selectedUser"
  13. :key="user.id"
  14. :label="user.staffNo + '-' + user.nickname"
  15. :value="user"
  16. />
  17. </el-select>
  18. <el-dialog
  19. v-model="dialogVisible"
  20. title="添加人员"
  21. align-center
  22. :close-on-click-modal="false"
  23. style="height: 583px"
  24. :width="731"
  25. :destroy-on-close="true"
  26. :append-to-body="true"
  27. class="workShopDialog"
  28. >
  29. <!-- <SelectTree @cancel="handleCancle" @submit="handleSubmit" :selectedUser="selectedUser" /> -->
  30. <PersonFilterSelection
  31. @cancel="handleCancle"
  32. @submit="handleSubmit"
  33. :init-selected="selectedUser"
  34. />
  35. </el-dialog>
  36. </div>
  37. </template>
  38. <script lang="ts" setup>
  39. import { ref, onBeforeUpdate, watch } from 'vue';
  40. import { SelectedFilterPersonInfo } from '@/api/message/person-group';
  41. // import SelectTree from '@/views/message/persongroup/components/SelectTree.vue';
  42. import PersonFilterSelection from '@/views/message/components/PersonFilterSelection.vue';
  43. // interface UserList {
  44. // id: string;
  45. // name: string;
  46. // userId: number;
  47. // }
  48. const dialogVisible = ref<boolean>(false);
  49. const selectedUser = ref<SelectedFilterPersonInfo[]>([]);
  50. const prop = defineProps(['form', 'disableType']);
  51. const handleCancle = () => {
  52. dialogVisible.value = false;
  53. };
  54. const handleSubmit = (selectedData: SelectedFilterPersonInfo[]) => {
  55. selectedUser.value = selectedData;
  56. prop.form.designatedUserList.value = selectedUser.value;
  57. dialogVisible.value = false;
  58. };
  59. watch(
  60. () => prop.form.designatedUserList.value,
  61. (newSelected) => {
  62. selectedUser.value = newSelected;
  63. },
  64. { deep: true, immediate: true },
  65. );
  66. onBeforeUpdate(() => {
  67. if (prop.form.designatedUserList?.value?.length > 0) {
  68. selectedUser.value = prop.form.designatedUserList.value.map((item) => {
  69. return {
  70. id: item.userId,
  71. nickname: item.userNickname,
  72. staffNo: item.userLoginName,
  73. };
  74. });
  75. }
  76. });
  77. </script>
  78. <style lang="scss" scoped>
  79. ::v-deep .el-dialog__body {
  80. height: 527px;
  81. }
  82. ::v-deep .el-select__selection {
  83. min-height: 25px;
  84. max-height: 60px;
  85. overflow-y: auto;
  86. }
  87. </style>