generator-code.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. <template>
  2. <div class="generator-code">
  3. <el-dialog v-model="visible" title="生成代码" :close-on-click-modal="false" :close-on-press-escape="false">
  4. <el-form :model="dataForm" :rules="rules" ref="dataFormRef" label-width="110px" size="small">
  5. <el-row>
  6. <el-col :span="12">
  7. <el-form-item label="表名" prop="tableName">
  8. <el-input v-model="dataForm.tableName" disabled placeholder="表名"></el-input>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="12">
  12. <el-form-item label="功能名" prop="tableComment">
  13. <el-input v-model="dataForm.tableComment" placeholder="功能名"></el-input>
  14. </el-form-item>
  15. </el-col>
  16. </el-row>
  17. <el-row>
  18. <el-col :span="12">
  19. <el-form-item label="类名" prop="className">
  20. <el-input v-model="dataForm.className" placeholder="类名"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :span="12">
  24. <el-form-item prop="baseclassId" label="基类">
  25. <el-select v-model="dataForm.baseclassId" placeholder="基类" class="w-percent-100" clearable>
  26. <el-option v-for="item in baseClassList" :key="item.id" :label="item.code" :value="item.id"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. </el-col>
  30. </el-row>
  31. <el-row>
  32. <el-col :span="12">
  33. <el-form-item label="模块名" prop="moduleName">
  34. <el-input v-model="dataForm.moduleName" placeholder="模块名"></el-input>
  35. </el-form-item>
  36. </el-col>
  37. <el-col :span="12">
  38. <el-form-item label="子模块名" prop="subModuleName">
  39. <el-input v-model="dataForm.subModuleName" placeholder="子模块名"></el-input>
  40. </el-form-item>
  41. </el-col>
  42. </el-row>
  43. <el-row>
  44. <el-col :span="12">
  45. <el-form-item label="项目包名" prop="packageName">
  46. <el-input v-model="dataForm.packageName" placeholder="项目包名"></el-input>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="12">
  50. <el-form-item label="版本号" prop="version">
  51. <el-input v-model="dataForm.version" placeholder="版本号"></el-input>
  52. </el-form-item>
  53. </el-col>
  54. </el-row>
  55. <el-row>
  56. <el-col :span="12">
  57. <el-form-item label="默认作者" prop="author">
  58. <el-input v-model="dataForm.author" placeholder="默认作者"></el-input>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="12">
  62. <el-form-item label="作者邮箱" prop="email">
  63. <el-input v-model="dataForm.email" placeholder="作者邮箱"></el-input>
  64. </el-form-item>
  65. </el-col>
  66. </el-row>
  67. <el-form-item label="后端生成路径" prop="backendPath">
  68. <el-input v-model="dataForm.backendPath" placeholder="后端生成路径"></el-input>
  69. </el-form-item>
  70. <el-form-item label="前端生成路径" prop="frontendPath">
  71. <el-input v-model="dataForm.frontendPath" placeholder="前端生成路径"></el-input>
  72. </el-form-item>
  73. </el-form>
  74. <template v-slot:footer>
  75. <el-button @click="visible = false" size="small">取消</el-button>
  76. <el-button type="primary" @click="dataFormSubmitHandle" size="small">保存</el-button>
  77. <el-button type="danger" @click="generatorCodeHandle" size="small">生成代码</el-button>
  78. </template>
  79. </el-dialog>
  80. </div>
  81. </template>
  82. <script lang="ts" setup>
  83. import { reactive, ref } from "vue";
  84. import baseService from "@/service/baseService";
  85. import { useI18n } from "vue-i18n";
  86. import { ElMessage } from "element-plus";
  87. const { t } = useI18n();
  88. const emit = defineEmits(["refreshDataList"]);
  89. const visible = ref(false);
  90. const baseClassList = ref<any[]>([]);
  91. const dataFormRef = ref();
  92. const dataForm = reactive({
  93. id: "",
  94. baseclassId: "",
  95. backendPath: "",
  96. frontendPath: "",
  97. packageName: "",
  98. email: "",
  99. author: "",
  100. version: "",
  101. subModuleName: "",
  102. moduleName: "",
  103. className: "",
  104. tableComment: "",
  105. tableName: ""
  106. });
  107. const rules = ref({
  108. tableName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  109. tableComment: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  110. className: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  111. moduleName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  112. packageName: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  113. author: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  114. backendPath: [{ required: true, message: "必填项不能为空", trigger: "blur" }],
  115. frontendPath: [{ required: true, message: "必填项不能为空", trigger: "blur" }]
  116. });
  117. const init = (id: string) => {
  118. visible.value = true;
  119. dataForm.id = "";
  120. // 重置表单数据
  121. if (dataFormRef.value) {
  122. dataFormRef.value.resetFields();
  123. }
  124. getBaseClassList();
  125. getTableInfo(id);
  126. };
  127. const getBaseClassList = () => {
  128. baseService.get("/devtools/baseclass/list").then((res) => {
  129. baseClassList.value = res.data;
  130. });
  131. };
  132. const getTableInfo = (id: string) => {
  133. baseService.get("/devtools/table/" + id).then((res) => {
  134. Object.assign(dataForm, res.data);
  135. });
  136. };
  137. // 表单提交
  138. const dataFormSubmitHandle = () => {
  139. dataFormRef.value.validate((valid: boolean) => {
  140. if (!valid) {
  141. return false;
  142. }
  143. baseService.put("/devtools/table", dataForm).then(() => {
  144. ElMessage.success({
  145. message: t("prompt.success"),
  146. duration: 500,
  147. onClose: () => {
  148. visible.value = false;
  149. emit("refreshDataList");
  150. }
  151. });
  152. });
  153. });
  154. };
  155. // 表单提交
  156. const generatorCodeHandle = () => {
  157. dataFormRef.value.validate((valid: boolean) => {
  158. if (!valid) {
  159. return false;
  160. }
  161. baseService.post("/devtools/generator", dataForm).then(() => {
  162. ElMessage.success({
  163. message: t("prompt.success"),
  164. duration: 500,
  165. onClose: () => {
  166. visible.value = false;
  167. emit("refreshDataList");
  168. }
  169. });
  170. });
  171. });
  172. };
  173. defineExpose({
  174. init
  175. });
  176. </script>
  177. <style scoped>
  178. .generator-code .el-dialog__body {
  179. padding: 15px 30px 0 20px;
  180. }
  181. </style>