index.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <el-container class="flex flex-v flex-align-center group-container">
  3. <div class="ApprovalList">
  4. <el-header class="flex flex-align-center" style="width: 100%; padding: 0px">
  5. <div style="width: 100%">
  6. <el-row style="width: 100%" justify="space-between">
  7. <el-col :span="4"><el-input v-model="keyword" placeholder="搜索" clearable @blur="searchProcess" /></el-col>
  8. <el-col :span="8">
  9. <template v-if="!sortFlag">
  10. <el-space wrap><el-button @click="addNewGroupEv">新建分组</el-button></el-space>
  11. <el-space wrap><el-button @click="changeComponent">分组排序</el-button></el-space>
  12. </template>
  13. <template v-else>
  14. <el-space wrap><el-button type="primary" plain :icon="CircleCheck" @click="changeComponent('sort')">完 成</el-button></el-space>
  15. <el-space wrap><el-button type="info" plain @click="changeComponent">取 消</el-button></el-space>
  16. </template>
  17. <el-space wrap
  18. ><el-button :type="sortFlag ? 'info' : 'primary'" :icon="Plus" :disabled="sortFlag" @click="createProcessEv"
  19. >创建审批</el-button
  20. ></el-space
  21. >
  22. </el-col>
  23. </el-row>
  24. </div>
  25. </el-header>
  26. <div>
  27. <component :is="typeComponentMap[pageType]" ref="dyncComponent"></component>
  28. </div>
  29. </div>
  30. </el-container>
  31. </template>
  32. <script lang="tsx" setup name="flow_group">
  33. import { ref } from 'vue'
  34. import { Plus, CircleCheck } from '@element-plus/icons-vue'
  35. import SortGroup from './components/sortGroup'
  36. import ListGroup from './components/listGroup'
  37. import flowGroup from '@/api/flow/group'
  38. import router from '@/router'
  39. const sortFlag = ref(false)
  40. const dyncComponent = ref() // 实例化子组件
  41. const typeComponentMap = {
  42. 1: ListGroup,
  43. 2: SortGroup
  44. }
  45. const pageType = ref(1)
  46. const keyword = ref('')
  47. const changeComponent: (sort) => void = async sort => {
  48. sortFlag.value = !sortFlag.value
  49. if (pageType.value === 1) {
  50. pageType.value = 2
  51. return
  52. }
  53. if (pageType.value === 2) {
  54. if (sort) {
  55. const data = dyncComponent.value.exportSortData()
  56. await flowGroup.flowGroupSortApi(data)
  57. }
  58. pageType.value = 1
  59. }
  60. }
  61. const addNewGroupEv = () => {
  62. dyncComponent.value.showAddInput()
  63. }
  64. // 调用子组件的方法
  65. const searchProcess = async () => {
  66. if (!keyword.value) return
  67. await dyncComponent.value.searchProcessEv({ keyword: keyword.value })
  68. }
  69. const createProcessEv = () => {
  70. router.push('/flow/create')
  71. }
  72. </script>
  73. <style scoped lang="scss">
  74. .group-container {
  75. background-color: var(--el-bg-color);
  76. overflow-y: scroll;
  77. padding-bottom: 15px;
  78. }
  79. .ApprovalList {
  80. width: 100%;
  81. max-width: 1000px;
  82. }
  83. </style>