EditTable.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <ContentDetailWrap :title="title" @back="push('/infra/codegen')">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane label="基本信息" name="basicInfo">
  5. <BasicInfoForm ref="basicInfoRef" :basicInfo="tableCurrentRow" />
  6. </el-tab-pane>
  7. <el-tab-pane label="字段信息" name="cloum">
  8. <CloumInfoForm ref="cloumInfoRef" :info="cloumCurrentRow" />
  9. </el-tab-pane>
  10. <el-tab-pane label="生成信息" name="genInfo">
  11. <GenInfoForm ref="genInfoRef" :genInfo="tableCurrentRow" />
  12. </el-tab-pane>
  13. </el-tabs>
  14. <template #right>
  15. <XButton type="primary" :title="t('action.save')" :loading="loading" @click="submitForm()" />
  16. </template>
  17. </ContentDetailWrap>
  18. </template>
  19. <script setup lang="ts">
  20. import { ref, unref, onMounted } from 'vue'
  21. import { useRouter, useRoute } from 'vue-router'
  22. import { ElTabs, ElTabPane } from 'element-plus'
  23. import { useI18n } from '@/hooks/web/useI18n'
  24. import { useMessage } from '@/hooks/web/useMessage'
  25. import { ContentDetailWrap } from '@/components/ContentDetailWrap'
  26. import { BasicInfoForm, CloumInfoForm, GenInfoForm } from './components'
  27. import { getCodegenTableApi, updateCodegenTableApi } from '@/api/infra/codegen'
  28. import { CodegenTableVO, CodegenColumnVO, CodegenUpdateReqVO } from '@/api/infra/codegen/types'
  29. const { t } = useI18n() // 国际化
  30. const message = useMessage() // 消息弹窗
  31. const { push } = useRouter()
  32. const { query } = useRoute()
  33. const loading = ref(false)
  34. const title = ref('代码生成')
  35. const activeName = ref('cloum')
  36. const cloumInfoRef = ref(null)
  37. const tableCurrentRow = ref<CodegenTableVO>()
  38. const cloumCurrentRow = ref<CodegenColumnVO[]>([])
  39. const basicInfoRef = ref<ComponentRef<typeof BasicInfoForm>>()
  40. const genInfoRef = ref<ComponentRef<typeof GenInfoForm>>()
  41. const getList = async () => {
  42. const id = query.id as unknown as number
  43. if (id) {
  44. // 获取表详细信息
  45. const res = await getCodegenTableApi(id)
  46. tableCurrentRow.value = res.table
  47. title.value = '修改[ ' + res.table.tableName + ' ]生成配置'
  48. cloumCurrentRow.value = res.columns
  49. }
  50. }
  51. const submitForm = async () => {
  52. const basicInfo = unref(basicInfoRef)
  53. const genInfo = unref(genInfoRef)
  54. const basicForm = await basicInfo?.elFormRef?.validate()?.catch(() => {})
  55. const genForm = await genInfo?.elFormRef?.validate()?.catch(() => {})
  56. if (basicForm && genForm) {
  57. const basicInfoData = (await basicInfo?.getFormData()) as CodegenTableVO
  58. const genInfoData = (await genInfo?.getFormData()) as CodegenTableVO
  59. const genTable: CodegenUpdateReqVO = {
  60. table: Object.assign({}, basicInfoData, genInfoData),
  61. columns: cloumCurrentRow.value
  62. }
  63. await updateCodegenTableApi(genTable)
  64. message.success(t('common.updateSuccess'))
  65. push('/infra/codegen')
  66. }
  67. }
  68. onMounted(() => {
  69. getList()
  70. })
  71. </script>