receiveUser.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <script setup lang="ts">
  2. import { nextTick, ref } from 'vue'
  3. import { User_List } from '@/api/user/index'
  4. // import Dialog from '@/components/dialog/Dialog.vue'
  5. import Drawer from '@/components/Drawer/index.vue'
  6. import { GlobalStore } from '@/stores/index'
  7. import TableBase from '@/components/TableBase/index.vue'
  8. import { ColumnProps } from '@/components/TableBase/interface/index'
  9. const search = ref('')
  10. const globalStore = GlobalStore()
  11. const drawerRef = ref<InstanceType<typeof Drawer> | null>(null)
  12. const tableRef = ref<InstanceType<typeof TableBase> | null>(null)
  13. const Dialogcolumns: ColumnProps[] = [{ prop: 'T_name', label: '名字', name: 'T_name' }]
  14. const InitParam = {
  15. User_tokey: globalStore.GET_User_tokey,
  16. T_name: '',
  17. T_dept_leader: 1
  18. }
  19. const searchHandle = () => {
  20. InitParam.T_name = search.value
  21. tableRef.value?.searchTable()
  22. }
  23. /**
  24. * 获取信息
  25. */
  26. const getApproverInfo = (row: any) => {
  27. emit('onUserInfo', row)
  28. drawerRef.value?.closeDrawer()
  29. }
  30. const callbackDrawer = (done: () => void) => {
  31. done()
  32. }
  33. const emit = defineEmits<{ (event: 'onUserInfo', value: any): void }>()
  34. /**
  35. * 配置高度
  36. */
  37. const onResize = () => {
  38. const height = document.documentElement.clientHeight
  39. return height - 45 - 74 - 40 - 12
  40. }
  41. const openDrawer = () => drawerRef.value?.openDrawer()
  42. defineExpose({
  43. openDrawer
  44. })
  45. </script>
  46. <template>
  47. <div>
  48. <Drawer ref="drawerRef" :handleClose="callbackDrawer">
  49. <template #header="{ params }">
  50. <h3 :id="params.titleId" :class="params.titleClass">选择经办人</h3>
  51. </template>
  52. <TableBase
  53. ref="tableRef"
  54. :columns="Dialogcolumns"
  55. :initParam="InitParam"
  56. :requestApi="User_List"
  57. layout="total, prev, pager, next"
  58. :onResize="onResize"
  59. >
  60. <template #table-header>
  61. <el-row :gutter="20">
  62. <el-col :span="24" class="d-flex">
  63. <span class="inline-flex">姓名:</span>
  64. <el-input v-model="search" type="text" placeholder="按姓名搜索" />
  65. <el-button type="primary" @click="searchHandle">搜索</el-button>
  66. </el-col>
  67. </el-row>
  68. </template>
  69. <template #T_name="{ row }">
  70. <el-button type="primary" link @click="getApproverInfo(row)">{{ row.T_name }}</el-button>
  71. </template>
  72. </TableBase>
  73. </Drawer>
  74. </div>
  75. </template>
  76. <style scoped>
  77. .inline-flex {
  78. white-space: nowrap;
  79. }
  80. .d-flex {
  81. display: flex;
  82. align-items: center;
  83. }
  84. </style>