|
@@ -58,7 +58,7 @@
|
|
<el-input v-model="form.description" placeholder="中文描述作为自动api描述"></el-input>
|
|
<el-input v-model="form.description" placeholder="中文描述作为自动api描述"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="文件名称" prop="packageName">
|
|
<el-form-item label="文件名称" prop="packageName">
|
|
- <el-input v-model="form.packageName"></el-input>
|
|
|
|
|
|
+ <el-input v-model="form.packageName" placeholder="生成文件的默认名称"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item label="自动创建api">
|
|
<el-form-item label="自动创建api">
|
|
<el-checkbox v-model="form.autoCreateApiToSql"></el-checkbox>
|
|
<el-checkbox v-model="form.autoCreateApiToSql"></el-checkbox>
|
|
@@ -117,6 +117,7 @@
|
|
<el-tag type="danger">id , created_at , updated_at , deleted_at 会自动生成请勿重复创建</el-tag>
|
|
<el-tag type="danger">id , created_at , updated_at , deleted_at 会自动生成请勿重复创建</el-tag>
|
|
<!-- 组件列表 -->
|
|
<!-- 组件列表 -->
|
|
<div class="button-box clearflex">
|
|
<div class="button-box clearflex">
|
|
|
|
+ <el-button @click="enterForm(true)" type="primary">预览代码</el-button>
|
|
<el-button @click="enterForm" type="primary">生成代码</el-button>
|
|
<el-button @click="enterForm" type="primary">生成代码</el-button>
|
|
</div>
|
|
</div>
|
|
<!-- 组件弹窗 -->
|
|
<!-- 组件弹窗 -->
|
|
@@ -127,6 +128,13 @@
|
|
<el-button type="primary" @click="enterDialog">确 定</el-button>
|
|
<el-button type="primary" @click="enterDialog">确 定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
+
|
|
|
|
+ <el-dialog :visible.sync="previewFlag">
|
|
|
|
+ <PreviewCodeDialg v-if="previewFlag" :previewCode="preViewCode"></PreviewCodeDialg>
|
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
|
+ <el-button type="primary" @click="previewFlag = false">确 定</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
@@ -144,8 +152,9 @@ const fieldTemplate = {
|
|
};
|
|
};
|
|
|
|
|
|
import FieldDialog from "@/view/systemTools/autoCode/component/fieldDialog.vue";
|
|
import FieldDialog from "@/view/systemTools/autoCode/component/fieldDialog.vue";
|
|
|
|
+import PreviewCodeDialg from "@/view/systemTools/autoCode/component/previewCodeDialg.vue";
|
|
import { toUpperCase, toHump } from "@/utils/stringFun.js";
|
|
import { toUpperCase, toHump } from "@/utils/stringFun.js";
|
|
-import { createTemp, getDB, getTable, getColumn } from "@/api/autoCode.js";
|
|
|
|
|
|
+import { createTemp, getDB, getTable, getColumn, preview } from "@/api/autoCode.js";
|
|
import { getDict } from "@/utils/dictionary";
|
|
import { getDict } from "@/utils/dictionary";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
@@ -153,6 +162,7 @@ export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
activeNames: [""],
|
|
activeNames: [""],
|
|
|
|
+ preViewCode:{},
|
|
dbform: {
|
|
dbform: {
|
|
dbName: "",
|
|
dbName: "",
|
|
tableName: ""
|
|
tableName: ""
|
|
@@ -191,11 +201,13 @@ export default {
|
|
},
|
|
},
|
|
dialogMiddle: {},
|
|
dialogMiddle: {},
|
|
bk: {},
|
|
bk: {},
|
|
- dialogFlag: false
|
|
|
|
|
|
+ dialogFlag: false,
|
|
|
|
+ previewFlag:false
|
|
};
|
|
};
|
|
},
|
|
},
|
|
components: {
|
|
components: {
|
|
- FieldDialog
|
|
|
|
|
|
+ FieldDialog,
|
|
|
|
+ PreviewCodeDialg
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
editAndAddField(item) {
|
|
editAndAddField(item) {
|
|
@@ -250,7 +262,7 @@ export default {
|
|
deleteField(index) {
|
|
deleteField(index) {
|
|
this.form.fields.splice(index, 1);
|
|
this.form.fields.splice(index, 1);
|
|
},
|
|
},
|
|
- async enterForm() {
|
|
|
|
|
|
+ async enterForm(isPreview) {
|
|
if (this.form.fields.length <= 0) {
|
|
if (this.form.fields.length <= 0) {
|
|
this.$message({
|
|
this.$message({
|
|
type: "error",
|
|
type: "error",
|
|
@@ -277,31 +289,38 @@ export default {
|
|
});
|
|
});
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
- const data = await createTemp(this.form);
|
|
|
|
- if (data.headers?.success == "false") {
|
|
|
|
- return;
|
|
|
|
- } else {
|
|
|
|
- this.$message({
|
|
|
|
- type: "success",
|
|
|
|
- message: "自动化代码创建成功,正在下载"
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- const blob = new Blob([data]);
|
|
|
|
- const fileName = "ginvueadmin.zip";
|
|
|
|
- if ("download" in document.createElement("a")) {
|
|
|
|
- // 不是IE浏览器
|
|
|
|
- let url = window.URL.createObjectURL(blob);
|
|
|
|
- let link = document.createElement("a");
|
|
|
|
- link.style.display = "none";
|
|
|
|
- link.href = url;
|
|
|
|
- link.setAttribute("download", fileName);
|
|
|
|
- document.body.appendChild(link);
|
|
|
|
- link.click();
|
|
|
|
- document.body.removeChild(link); // 下载完成移除元素
|
|
|
|
- window.URL.revokeObjectURL(url); // 释放掉blob对象
|
|
|
|
- } else {
|
|
|
|
- // IE 10+
|
|
|
|
- window.navigator.msSaveBlob(blob, fileName);
|
|
|
|
|
|
+ if(isPreview){
|
|
|
|
+ const data = await preview(this.form);
|
|
|
|
+ console.log(data.code == 0)
|
|
|
|
+ this.preViewCode = data.data.autoCode
|
|
|
|
+ this.previewFlag = true
|
|
|
|
+ }else{
|
|
|
|
+ const data = await createTemp(this.form);
|
|
|
|
+ if (data.headers?.success == "false") {
|
|
|
|
+ return;
|
|
|
|
+ } else {
|
|
|
|
+ this.$message({
|
|
|
|
+ type: "success",
|
|
|
|
+ message: "自动化代码创建成功,正在下载"
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ const blob = new Blob([data]);
|
|
|
|
+ const fileName = "ginvueadmin.zip";
|
|
|
|
+ if ("download" in document.createElement("a")) {
|
|
|
|
+ // 不是IE浏览器
|
|
|
|
+ let url = window.URL.createObjectURL(blob);
|
|
|
|
+ let link = document.createElement("a");
|
|
|
|
+ link.style.display = "none";
|
|
|
|
+ link.href = url;
|
|
|
|
+ link.setAttribute("download", fileName);
|
|
|
|
+ document.body.appendChild(link);
|
|
|
|
+ link.click();
|
|
|
|
+ document.body.removeChild(link); // 下载完成移除元素
|
|
|
|
+ window.URL.revokeObjectURL(url); // 释放掉blob对象
|
|
|
|
+ } else {
|
|
|
|
+ // IE 10+
|
|
|
|
+ window.navigator.msSaveBlob(blob, fileName);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
return false;
|
|
return false;
|
|
@@ -373,6 +392,7 @@ export default {
|
|
.button-box {
|
|
.button-box {
|
|
padding: 10px 20px;
|
|
padding: 10px 20px;
|
|
.el-button {
|
|
.el-button {
|
|
|
|
+ margin-right: 20px;
|
|
float: right;
|
|
float: right;
|
|
}
|
|
}
|
|
}
|
|
}
|