receiveUser.vue 2.3 KB

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