CodeCreatedResultModal.vue 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <template>
  2. <BasicModal
  3. title="生成代码"
  4. defaultFullscreen
  5. :wrapClassName="prefixCls"
  6. @register="registerModal"
  7. @ok="handleDownloadAll"
  8. okText="下载全部"
  9. >
  10. <a-tabs class="full-height">
  11. <a-tab-pane v-for="item in dataRef" :key="item.templateId" :tab="item.templateName">
  12. <CodeEditor readonly :value="item.code" />
  13. </a-tab-pane>
  14. </a-tabs>
  15. </BasicModal>
  16. </template>
  17. <script setup lang="ts">
  18. import type { CodeCreatedModel } from '@/modules/codeGenerator/types';
  19. import { BasicModal, useModalInner } from '@/components/Modal';
  20. import { ref } from 'vue';
  21. import { ApiServiceEnum, defHttp } from '@/utils/http/axios';
  22. import { CodeEditor } from '@/components/CodeEditor';
  23. import { useDesign } from '@/hooks/web/useDesign';
  24. import { extensionLanguageMap } from '@/modules/codeGenerator/constants/Constants';
  25. import { downloadByData } from '@/utils/file/download';
  26. const { prefixCls } = useDesign('smart-tool-code-codeCreateResult');
  27. const [registerModal, { changeLoading, closeModal }] = useModalInner((data: CodeCreatedModel) => {
  28. loadData(data);
  29. });
  30. const dataRef = ref<Array<any>>([]);
  31. /**
  32. * 加载数据函数
  33. */
  34. const loadData = async (data: CodeCreatedModel) => {
  35. try {
  36. changeLoading(true);
  37. dataRef.value = await defHttp.post({
  38. service: ApiServiceEnum.SMART_CODE,
  39. url: 'db/code/main/createCode',
  40. data,
  41. });
  42. } finally {
  43. changeLoading(false);
  44. }
  45. };
  46. /**
  47. * 下载全部
  48. */
  49. const handleDownloadAll = () => {
  50. dataRef.value.forEach((item): any => {
  51. const filename = `${item.filename}.${extensionLanguageMap[item.language]}`;
  52. downloadByData(item.code, filename);
  53. });
  54. closeModal();
  55. };
  56. </script>
  57. <style lang="less">
  58. @prefix-cls: ~'@{namespace}-smart-tool-code-codeCreateResult';
  59. .@{prefix-cls} {
  60. .ant-tabs-content {
  61. height: 100%;
  62. }
  63. }
  64. </style>