From 822c45c81e72751e3d960f4314dd1707419d4c65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?21=E4=B8=96=E7=BA=AA=E5=B0=8F=E5=85=AB=E8=B7=AF?=
<2529156631@qq.com>
Date: Fri, 31 Mar 2023 23:36:54 +0800
Subject: [PATCH] vue view code gen
---
.../CoreCms.Net.CodeGenerator.csproj | 29 ++
.../CrudTemplete/Vue/Api.tpl | 4 +
.../CrudTemplete/Vue/DetailConfig.tpl | 19 +
.../CrudTemplete/Vue/FormSchema.tpl | 112 +++++
.../CrudTemplete/Vue/Index.tpl | 205 ++++++++
.../CrudTemplete/Vue/Model.tpl | 49 ++
.../CrudTemplete/Vue/PageRouter.tpl | 13 +
.../CrudTemplete/Vue/PageRouterIndex.tpl | 5 +
.../CrudTemplete/Vue/Router.tpl | 13 +
.../CrudTemplete/Vue/SearchField.tpl | 32 ++
.../CrudTemplete/Vue/Service.tpl | 8 +
.../CrudTemplete/Vue/Store.tpl | 52 ++
.../CrudTemplete/Vue/StoreModulesIndex.tpl | 6 +
.../CrudTemplete/Vue/TableConfig.tpl | 42 ++
.../GeneratorCodeHelper.cs | 472 +++++++++++-------
.../CodeGenerator/ICodeGeneratorRepository.cs | 4 +-
.../CodeGenerator/ICodeGeneratorServices.cs | 4 +-
.../CodeGenerator/CodeGeneratorRepository.cs | 8 +-
.../CodeGenerator/CodeGeneratorServices.cs | 9 +-
.../System/CodeGeneratorController.cs | 51 ++
.../CoreCms.Net.Web.Admin.xml | 8 +
CoreCms.Net.Web.Admin/appsettings.json | 2 +-
22 files changed, 949 insertions(+), 198 deletions(-)
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Api.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/DetailConfig.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/FormSchema.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Index.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Model.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouter.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouterIndex.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Router.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/SearchField.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Service.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Store.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/StoreModulesIndex.tpl
create mode 100644 CoreCms.Net.CodeGenerator/CrudTemplete/Vue/TableConfig.tpl
diff --git a/CoreCms.Net.CodeGenerator/CoreCms.Net.CodeGenerator.csproj b/CoreCms.Net.CodeGenerator/CoreCms.Net.CodeGenerator.csproj
index af88d6c6..f52e390b 100644
--- a/CoreCms.Net.CodeGenerator/CoreCms.Net.CodeGenerator.csproj
+++ b/CoreCms.Net.CodeGenerator/CoreCms.Net.CodeGenerator.csproj
@@ -4,6 +4,22 @@
net7.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15,6 +31,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Api.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Api.tpl
new file mode 100644
index 00000000..b1764971
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Api.tpl
@@ -0,0 +1,4 @@
+import { API_PROXY_PREFIX } from "../api";
+
+export const GetPageListUrl: string = `${API_PROXY_PREFIX}/{{ModelClassName}}/GetPageList`;
+
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/DetailConfig.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/DetailConfig.tpl
new file mode 100644
index 00000000..eaafc199
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/DetailConfig.tpl
@@ -0,0 +1,19 @@
+import { IData } from "@/components/data-detail-display";
+import { FieldTypeEnum } from "@/components/data-detail-display/enum";
+
+const detailConfig: { title: string; dataField: string; fields: Array } = {
+ title: "详情",
+ dataField: "",
+ fields: [
+ {% for field in ModelFields %}
+ {% if field.DbColumnName contains 'Image' or field.DbColumnName contains 'image' or field.DbColumnName contains 'thumbnail' or field.DbColumnName contains 'Thumbnail' %}
+ { label: "{{field.ColumnDescription}}", key: "{{field.DbColumnName}}",type:FieldTypeEnum.PICTURE },
+ {% else %}
+ { label: "{{field.ColumnDescription}}", key: "{{field.DbColumnName}}" },
+ {% endif %}
+ {% endfor %}
+ ],
+};
+
+//IData
+export default detailConfig;
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/FormSchema.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/FormSchema.tpl
new file mode 100644
index 00000000..40468288
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/FormSchema.tpl
@@ -0,0 +1,112 @@
+import { ControlTypeEnum, validateTriggerEnum, validateTypeEnum, } from "@/components/coreshop-form/enum";
+import { IFormSchema } from "@/components/coreshop-form/type";
+
+const formSchema: IFormSchema = {
+ saveDataSourceKey: "{{ModelClassName}}/DoCreate",
+ editDataSourceKey: "{{ModelClassName}}/DoEdit",
+ queryDataSourceKey: "{{ModelClassName}}/GetEdit",
+ filter: null,
+ labelCol: { span: 3 },
+ fieldValueModel: "model",
+ fields: [
+ {% for field in ModelFields %}
+
+ {% if field.DbColumnName contains 'Image' or field.DbColumnName contains 'image' or field.DbColumnName contains 'thumbnail' or field.DbColumnName contains 'Thumbnail' %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "{{field.ColumnDescription}}",
+ value: "",
+ placeholder: "请上传{{field.ColumnDescription}}",
+ type: ControlTypeEnum.FILE,
+ },
+
+ {% elsif field.DataType == 'nvarchar' %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "{{field.ColumnDescription}}",
+ value: "",
+ placeholder: "请输入{{field.ColumnDescription}}",
+ type: ControlTypeEnum.STRING,
+ config: {
+ rules: [
+ {
+ required: true,
+ message: "{{field.ColumnDescription}}不能为空",
+ trigger: validateTriggerEnum.blur,
+ type: validateTypeEnum.string,
+ },
+ ],
+ },
+ },
+
+ {% elsif field.DataType == 'int' or field.DataType == 'bigint' %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "{{field.ColumnDescription}}",
+ placeholder: "请输入{{field.ColumnDescription}}",
+ type: ControlTypeEnum.NUMBER,
+ value: 1000,
+ config: {
+ rules: [
+ {
+ required: true,
+ message: "{{field.ColumnDescription}}不能为空",
+ trigger: validateTriggerEnum.blur,
+ type: validateTypeEnum.number,
+ },
+ ],
+ },
+ },
+
+ {% elsif field.DataType == 'datetime' %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "请选择{{field.ColumnDescription}}",
+ placeholder: "请选择{{field.ColumnDescription}}",
+ type: ControlTypeEnum.DATE_PICKER,
+ },
+
+ {% elsif field.DataType == 'bit' %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "{{field.ColumnDescription}}",
+ value: false,
+ placeholder: "{{field.ColumnDescription}}",
+ type: ControlTypeEnum.SWITCH,
+ config: {
+ rules: [
+ {
+ required: true,
+ message: "{{field.ColumnDescription}}",
+ trigger: validateTriggerEnum.blur,
+ type: validateTypeEnum.boolean
+ },
+ ],
+ checkedLabel: "是",
+ unCheckedLabel: "否",
+ },
+ },
+
+ {% else %}
+ {
+ key: "{{field.DbColumnName}}",
+ name: "{{field.ColumnDescription}}",
+ value: "",
+ placeholder: "请输入{{field.ColumnDescription}}",
+ type: ControlTypeEnum.STRING,
+ config: {
+ rules: [
+ {
+ required: true,
+ message: "{{field.ColumnDescription}}不能为空",
+ trigger: validateTriggerEnum.blur,
+ type: validateTypeEnum.string,
+ },
+ ],
+ },
+ },
+ {% endif %}
+ {% endfor %}
+ ]}
+
+export default formSchema;
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Index.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Index.tpl
new file mode 100644
index 00000000..9ff18c5c
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Index.tpl
@@ -0,0 +1,205 @@
+
+
+
+ 新增
+
+ {% for field in ModelFields %}{% if field.DbColumnName contains 'Image' or field.DbColumnName contains 'image' or field.DbColumnName contains 'thumbnail' or field.DbColumnName contains 'Thumbnail' %}
+
+
+ {% endif %}{% endfor %}
+
+
+ 查看
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Model.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Model.tpl
new file mode 100644
index 00000000..93af4535
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Model.tpl
@@ -0,0 +1,49 @@
+
+ /** {{ModelDescription}} */
+ export interface I{{ModelClassName}}
+ {
+ {% for field in ModelFields %}
+ /** {{field.ColumnDescription}} */
+ {% if field.DataType == 'nvarchar' or field.DataType == 'varchar' or field.DataType == 'text' %}
+ {{field.DbColumnName}}:string;
+ {% elsif field.DataType == 'int' and field.IsNullable == false %}
+ {{field.DbColumnName}}:number;
+ {% elsif field.DataType == 'int' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:number;
+ {% elsif field.DataType == 'bigint' and field.IsNullable == false %}
+ {{field.DbColumnName}}:number;
+ {% elsif field.DataType == 'bigint' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:number;
+ {% elsif field.DataType == 'float' and field.IsNullable == false %}
+ {{field.DbColumnName}}:number;
+ {% elsif field.DataType == 'float' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:number;
+ {% elsif field.DataType == 'bit' and field.IsNullable == false %}
+ {{field.DbColumnName}}:boolean;
+ {% elsif field.DataType == 'bit' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:boolean;
+ {% elsif field.DataType == 'datetime' and field.IsNullable == false %}
+ {{field.DbColumnName}}:Date;
+ {% elsif field.DataType == 'datetime' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:Date;
+ {% elsif field.DataType == 'date' and field.IsNullable == false %}
+ {{field.DbColumnName}}:Date;
+ {% elsif field.DataType == 'date' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:Date;
+ {% elsif field.DataType == 'uniqueidentifier' and field.IsNullable == false %}
+ {{field.DbColumnName}}:string;
+ {% elsif field.DataType == 'uniqueidentifier' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:string;
+ {% elsif field.DataType == 'decimal' and field.IsNullable == false %}
+ {{field.DbColumnName}}:number;
+ {% elsif field.DataType == 'decimal' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:number;
+ {% elsif field.DataType == 'numeric' and field.IsNullable == false %}
+ {{field.DbColumnName}}:number;
+ {% elsif field.DataType == 'numeric' and field.IsNullable == true %}
+ {{field.DbColumnName}}?:number;
+ {% else %}
+ {% endif %}
+ {% endfor %}
+ }
+
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouter.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouter.tpl
new file mode 100644
index 00000000..9466eff8
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouter.tpl
@@ -0,0 +1,13 @@
+export const routers: Array = [
+ {
+ path: "{{ModelClassName}}",
+ name: "{{ModelDescription}}",
+ meta: {
+ page: {
+ closable: false,
+ },
+ authority: "*",
+ },
+ component: () => import("./{{ModelClassName}}/index.vue"),
+ }
+];
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouterIndex.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouterIndex.tpl
new file mode 100644
index 00000000..13d511e5
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/PageRouterIndex.tpl
@@ -0,0 +1,5 @@
+import { routers } from './router';
+
+export {
+ routers ,
+}
\ No newline at end of file
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Router.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Router.tpl
new file mode 100644
index 00000000..4c4a3346
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Router.tpl
@@ -0,0 +1,13 @@
+import { routers as {{ModelClassName}}Router } from "@/pages/{{ModelClassName}}";
+const routes = [
+ {
+ path: "{{ModelClassName}}",
+ name: "{{ModelDescription}}管理",
+ meta: {
+ icon: FileTextOutlined,
+ authority: "*",
+ },
+ component: CoreshopPageView,
+ children: [...{{ModelClassName}}Router],
+ },
+]
\ No newline at end of file
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/SearchField.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/SearchField.tpl
new file mode 100644
index 00000000..b834950b
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/SearchField.tpl
@@ -0,0 +1,32 @@
+import { FieldTypeEnum, ISearchField } from "@/components/searchForm";
+import { markRaw } from "vue";
+const searchFields: Array = markRaw([
+ {% for field in ModelFields %}
+ {% if field.DataType == 'bit' %}
+ {
+ field: "{{field.DbColumnName}}",
+ type: FieldTypeEnum.SELECT,
+ placeholder: "请选择{{field.ColumnDescription}}",
+ options: [
+ { label: "是", value: true },
+ { label: "否", value: false },
+ ],
+ },
+
+ {% elsif field.DataType == 'datetime' %}
+ {
+ field: "{{field.DbColumnName}}",
+ type: FieldTypeEnum.DATE,
+ placeholder: ['开始时间', '结束时间']
+ },
+ {% else %}
+ {
+ field: "{{field.DbColumnName}}",
+ type: FieldTypeEnum.STRING,
+ placeholder: "请输入{{field.ColumnDescription}}"
+ },
+ {% endif %}
+ {% endfor %}
+])
+
+export default searchFields;
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Service.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Service.tpl
new file mode 100644
index 00000000..7f162c6b
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Service.tpl
@@ -0,0 +1,8 @@
+import { HttpMehtod } from "@/enum";
+import { request } from "@/utils/request";
+import { Observable } from "rxjs";
+import { GetPageListUrl } from "./api";
+
+export function getPageList(params: any): Observable {
+ return request(GetPageListUrl, HttpMehtod.FORM_DATA, params)
+}
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Store.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Store.tpl
new file mode 100644
index 00000000..16c657ce
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/Store.tpl
@@ -0,0 +1,52 @@
+import { I{{ModelClassName}} } from "@/models/{{ModelClassName}}";
+import * as {{ModelClassName}}Service from "@/services/{{ModelClassName}}Service";
+
+export const Set_{{ModelClassName}}_List :string = "Set_{{ModelClassName}}_List";
+
+interface I{{ModelClassName}}Entity {
+ {{ModelClassName}}?: Array;
+ count: number;
+}
+
+export interface IState {
+ {{ModelClassName}}: I{{ModelClassName}}Entity;
+}
+
+const state = (): IState => ({
+ {{ModelClassName}}: {
+ {{ModelClassName}}: [],
+ count: 0,
+ },
+});
+
+const mutations: { [key: string]: Function } = {
+ [Set_{{ModelClassName}}_List](state: IState, payload: { [key: string]: any }) {
+ state.{{ModelClassName}}.{{ModelClassName}} = payload.data;
+ state.{{ModelClassName}}.count = payload.count;
+ },
+
+ /** 删除数据 */
+ deleteDataById(state: IState, id: number| string) {
+ state.{{ModelClassName}}.{{ModelClassName}}=state.{{ModelClassName}}.{{ModelClassName}}?.filter(x=>x.id!==id);
+},
+
+};
+
+const getters: { [key: string]: Function } = {};
+
+const actions = {
+ /** 列表查询 */
+ getPageList({ commit }: any, params: { [key: string]: any }) {
+ {{ModelClassName}}Service.getPageList(params).subscribe((res) => {
+ commit(Set_{{ModelClassName}}_List, res);
+ });
+ },
+};
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions,
+ getters,
+};
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/StoreModulesIndex.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/StoreModulesIndex.tpl
new file mode 100644
index 00000000..92821408
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/StoreModulesIndex.tpl
@@ -0,0 +1,6 @@
+
+import {{ModelClassName}} from "./{{ModelClassName}}";
+
+export default {
+ {{ModelClassName}},
+};
diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/TableConfig.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/TableConfig.tpl
new file mode 100644
index 00000000..d6770557
--- /dev/null
+++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Vue/TableConfig.tpl
@@ -0,0 +1,42 @@
+import { ButtonEnum, ITableConfig } from "@/components/table";
+
+const tableConfig: ITableConfig = {
+ buildInButtons: [
+ {
+ buttonKey: ButtonEnum.selectExcelExport,
+ dataSource: "api/{{ModelClassName}}/SelectExportExcel",
+ },
+ {
+ buttonKey: ButtonEnum.queryExcelExport,
+ dataSource: "api/{{ModelClassName}}/QueryExportExcel",
+ },
+ ],
+ columns: [
+ {% for field in ModelFields %}
+ {% if field.DbColumnName contains 'Image' or field.DbColumnName contains 'image' or field.DbColumnName contains 'thumbnail' or field.DbColumnName contains 'Thumbnail' %}
+ {
+ title: "{{field.ColumnDescription}}",
+ key: "{{field.DbColumnName}}",
+ dataIndex: "{{field.DbColumnName}}",
+ slots: { customRender: "{{field.DbColumnName}}" },
+ width: "5%",
+ },{% else %}
+ {
+ title: "{{field.ColumnDescription}}",
+ key: "{{field.DbColumnName}}",
+ dataIndex: "{{field.DbColumnName}}",
+ },
+ {% endif %}
+ {% endfor %}
+ {
+ title: "操作",
+ dataIndex: "action",
+ key: "action",
+ align: "center",
+ width: "18%",
+ slots: { customRender: "action" },
+ },
+ ],
+};
+
+export default tableConfig;
diff --git a/CoreCms.Net.CodeGenerator/GeneratorCodeHelper.cs b/CoreCms.Net.CodeGenerator/GeneratorCodeHelper.cs
index 0c2d9a04..f0fb456f 100644
--- a/CoreCms.Net.CodeGenerator/GeneratorCodeHelper.cs
+++ b/CoreCms.Net.CodeGenerator/GeneratorCodeHelper.cs
@@ -23,7 +23,7 @@ namespace CoreCms.Net.CodeGenerator
/// 表名称
/// 表说明
/// 表字段
- public static byte[] CodeGenerator(string tableName, string tableDescription, List columns, string fileType)
+ public static byte[] CodeGenerator(string tableName, string tableDescription, List columns, string fileType, bool isVue = false)
{
//ModelClassName
//ModelName
@@ -32,7 +32,7 @@ namespace CoreCms.Net.CodeGenerator
byte[] data;
var obj = new
{
- ModelCreateTime= dt,
+ ModelCreateTime = dt,
ModelName = tableName,
ModelDescription = tableDescription,
ModelClassName = tableName,
@@ -143,56 +143,17 @@ namespace CoreCms.Net.CodeGenerator
}
}
- //CreateHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
+ // 生成layUI 前端代码
+ if (isVue == false)
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/create.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForLayUI(obj, tableName, zip);
}
- //EditHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
+ // 生成 vue 前端代码
+ else
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/edit.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForVue(obj, tableName, zip);
}
- //DetailsHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/details.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
-
- //IndexHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/index.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
break;
case "EntityFiles":
//Model
@@ -235,55 +196,14 @@ namespace CoreCms.Net.CodeGenerator
}
break;
case "ViewFiles":
- //CreateHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/create.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
- //EditHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/edit.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
- //DetailsHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
+ if (isVue == false)
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/details.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForLayUI(obj, tableName, zip);
}
-
- //IndexHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
+ else
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/index.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForVue(obj, tableName, zip);
}
break;
case "InterFaceFiles":
@@ -325,7 +245,7 @@ namespace CoreCms.Net.CodeGenerator
/// 表名称
/// 表说明
/// 表字段
- public static byte[] CodeGeneratorAll(List dbModels, string fileType)
+ public static byte[] CodeGeneratorAll(List dbModels, string fileType, bool isVue = false)
{
//ModelClassName
//ModelName
@@ -446,55 +366,14 @@ namespace CoreCms.Net.CodeGenerator
}
}
- //CreateHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
+ // 生成
+ if (isVue == false)
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/create.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForLayUI(obj, item.Name, zip);
}
- //EditHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
+ else
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/edit.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
-
- //DetailsHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/details.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
-
- //IndexHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/index.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForVue(obj, item.Name, zip);
}
break;
case "EntityFiles":
@@ -538,55 +417,14 @@ namespace CoreCms.Net.CodeGenerator
}
break;
case "ViewFiles":
- //CreateHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/create.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
- //EditHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
- {
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/edit.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
- }
- //DetailsHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
+ if (isVue == false)
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/details.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForLayUI(obj, item.Name, zip);
}
-
- //IndexHtml
- using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
+ else
{
- file = reader.ReadToEnd();
- template = Template.Parse(file);
- result = template.Render(Hash.FromAnonymousObject(obj));
- ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + item.Name.ToLower().ToLower() + "/index.html");
- using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
- {
- entryStream.Write(result);
- }
+ CodeGeneratorForVue(obj, item.Name, zip);
}
break;
case "InterFaceFiles":
@@ -625,5 +463,271 @@ namespace CoreCms.Net.CodeGenerator
return data;
}
+ public static void CodeGeneratorForLayUI(object obj, string tableName, ZipArchive zip)
+ {
+ var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
+ string file;
+ string result;
+ Template template;
+ //CreateHtml
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/create.html");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ //EditHtml
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/edit.html");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ //DetailsHtml
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/details.html");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ //IndexHtml
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("Html/" + tableName.ToLower().ToLower() + "/index.html");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ }
+
+ // 生成vue 前端代码
+ public static void CodeGeneratorForVue(object obj, string tableName, ZipArchive zip)
+ {
+ // 前端页面
+ var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
+ string file;
+ string result;
+ Template template;
+ //CreateHtml
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Index.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/index.vue");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 创建页面路由
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.PageRouter.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/router.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 导出页面路由
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.PageRouterIndex.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/index.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 创建路由
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Router.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("router.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 前端接口模型
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Model.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("models/" + tableName + "/index.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 前端服务(Service)
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Service.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("services/" + tableName + "Service/index.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 前端 服务端调用的API 地址
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Api.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("services/" + tableName + "Service/api.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 前端 数据状态
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.Store.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("store/modules/" + tableName + "/index.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 前端 数据状态管理默认导出index
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.StoreModulesIndex.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("store/modules/index.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 创建数据表达配置
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.FormSchema.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/form-schema.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 创建查看详情配置
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.DetailConfig.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/detail-config.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+
+ // 创建表格搜索字段配置
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.SearchField.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/search-field.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ // 创建表格字段配置
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Vue.TableConfig.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("pages/" + tableName + "/" + tableName + "/table-config.ts");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ }
+
+ public static void CodeGeneratorForInterFaceFiles(object obj, string tableName, ZipArchive zip)
+ {
+ var assembly = IntrospectionExtensions.GetTypeInfo(typeof(GeneratorCodeHelper)).Assembly;
+ string file;
+ string result;
+ Template template;
+ //IRespository
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.IRepository.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry3 = zip.CreateEntry("IRepository/I" + tableName + "Repository.cs");
+ using (StreamWriter entryStream = new StreamWriter(entry3.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ //Respository
+ using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.Repositories.Repository.tpl"), Encoding.UTF8))
+ {
+ file = reader.ReadToEnd();
+ template = Template.Parse(file);
+ result = template.Render(Hash.FromAnonymousObject(obj));
+ ZipArchiveEntry entry1 = zip.CreateEntry("Repository/" + tableName + "Repository.cs");
+ using (StreamWriter entryStream = new StreamWriter(entry1.Open()))
+ {
+ entryStream.Write(result);
+ }
+ }
+ }
}
}
diff --git a/CoreCms.Net.IRepository/CodeGenerator/ICodeGeneratorRepository.cs b/CoreCms.Net.IRepository/CodeGenerator/ICodeGeneratorRepository.cs
index 06a96fa0..daa3dc28 100644
--- a/CoreCms.Net.IRepository/CodeGenerator/ICodeGeneratorRepository.cs
+++ b/CoreCms.Net.IRepository/CodeGenerator/ICodeGeneratorRepository.cs
@@ -33,7 +33,7 @@ namespace CoreCms.Net.IRepository
/////
/////
/////
- byte[] CodeGen(string tableName, string fileType);
+ byte[] CodeGen(string tableName, string fileType, bool isVue = false);
///
@@ -42,6 +42,6 @@ namespace CoreCms.Net.IRepository
///
///
///
- byte[] CodeGenByAll(string fileType);
+ byte[] CodeGenByAll(string fileType, bool isVue = false);
}
}
\ No newline at end of file
diff --git a/CoreCms.Net.IServices/CodeGenerator/ICodeGeneratorServices.cs b/CoreCms.Net.IServices/CodeGenerator/ICodeGeneratorServices.cs
index c60b2bef..21ec9351 100644
--- a/CoreCms.Net.IServices/CodeGenerator/ICodeGeneratorServices.cs
+++ b/CoreCms.Net.IServices/CodeGenerator/ICodeGeneratorServices.cs
@@ -33,7 +33,7 @@ namespace CoreCms.Net.IServices
/////
/////
/////
- byte[] CodeGen(string tableName, string fileType);
+ byte[] CodeGen(string tableName, string fileType, bool isVue = false);
///
@@ -42,6 +42,6 @@ namespace CoreCms.Net.IServices
///
///
///
- byte[] CodeGenByAll(string fileType);
+ byte[] CodeGenByAll(string fileType, bool isVue = false);
}
}
\ No newline at end of file
diff --git a/CoreCms.Net.Repository/CodeGenerator/CodeGeneratorRepository.cs b/CoreCms.Net.Repository/CodeGenerator/CodeGeneratorRepository.cs
index de440319..9131277e 100644
--- a/CoreCms.Net.Repository/CodeGenerator/CodeGeneratorRepository.cs
+++ b/CoreCms.Net.Repository/CodeGenerator/CodeGeneratorRepository.cs
@@ -55,7 +55,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
///
///
///
- public byte[] CodeGen(string tableName, string fileType)
+ public byte[] CodeGen(string tableName, string fileType, bool isVue = false)
{
var tables = DbClient.DbMaintenance.GetTableInfoList(false);
var views = DbClient.DbMaintenance.GetViewInfoList(false);
@@ -66,7 +66,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
}
var columns = DbClient.DbMaintenance.GetColumnInfosByTableName(tb.Name, false);
- return GeneratorCodeHelper.CodeGenerator(tb.Name, tb.Description, columns, fileType);
+ return GeneratorCodeHelper.CodeGenerator(tb.Name, tb.Description, columns, fileType, isVue);
}
@@ -76,7 +76,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
///
///
///
- public byte[] CodeGenByAll(string fileType)
+ public byte[] CodeGenByAll(string fileType, bool isVue = false)
{
var tables = DbClient.DbMaintenance.GetTableInfoList(false);
var views = DbClient.DbMaintenance.GetViewInfoList(false);
@@ -96,7 +96,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
if (!allDb.Any())
return null;
- return GeneratorCodeHelper.CodeGeneratorAll(allDb, fileType);
+ return GeneratorCodeHelper.CodeGeneratorAll(allDb, fileType, isVue);
}
}
}
\ No newline at end of file
diff --git a/CoreCms.Net.Services/CodeGenerator/CodeGeneratorServices.cs b/CoreCms.Net.Services/CodeGenerator/CodeGeneratorServices.cs
index 16e12035..99dfb29c 100644
--- a/CoreCms.Net.Services/CodeGenerator/CodeGeneratorServices.cs
+++ b/CoreCms.Net.Services/CodeGenerator/CodeGeneratorServices.cs
@@ -52,9 +52,9 @@ namespace CoreCms.Net.Services.CodeGenerator
///
///
///
- public byte[] CodeGen(string tableName, string fileType)
+ public byte[] CodeGen(string tableName, string fileType, bool isVue = false)
{
- return _dal.CodeGen(tableName, fileType);
+ return _dal.CodeGen(tableName, fileType, isVue);
}
@@ -65,10 +65,9 @@ namespace CoreCms.Net.Services.CodeGenerator
///
///
///
- public byte[] CodeGenByAll(string fileType)
+ public byte[] CodeGenByAll(string fileType, bool isVue = false)
{
-
- return _dal.CodeGenByAll(fileType);
+ return _dal.CodeGenByAll(fileType, isVue);
}
}
diff --git a/CoreCms.Net.Web.Admin/Controllers/System/CodeGeneratorController.cs b/CoreCms.Net.Web.Admin/Controllers/System/CodeGeneratorController.cs
index 479df4f8..21cd6e10 100644
--- a/CoreCms.Net.Web.Admin/Controllers/System/CodeGeneratorController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/System/CodeGeneratorController.cs
@@ -128,6 +128,57 @@ namespace CoreCms.Net.Web.Admin.Controllers
}
+ ///
+ /// 生成代码
+ ///
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Description("生成代码Vue")]
+ public IActionResult CodeGenDownVue([FromQuery] string tableName, [FromQuery] string fileType)
+ {
+ var jm = new AdminUiCallBack();
+ if (string.IsNullOrEmpty(tableName))
+ {
+ jm.msg = "请选择数据库";
+ return new JsonResult(jm);
+ }
+ if (string.IsNullOrEmpty(fileType))
+ {
+ jm.msg = "请选择要导出的文件类型";
+ return new JsonResult(jm);
+ }
+
+ if (tableName == "AllTable")
+ {
+ var data = _codeGeneratorServices.CodeGenByAll(fileType, true);
+ if (data != null)
+ {
+ return File(data, System.Net.Mime.MediaTypeNames.Application.Zip, tableName + "-" + fileType + ".zip");
+ }
+ else
+ {
+ jm.msg = tableName + "获取数据库字段失败";
+ return new JsonResult(jm);
+ }
+ }
+ else
+ {
+ var data = _codeGeneratorServices.CodeGen(tableName, fileType, true);
+ if (data != null)
+ {
+ return File(data, System.Net.Mime.MediaTypeNames.Application.Zip, tableName + "-" + fileType + ".zip");
+ }
+ else
+ {
+ jm.msg = tableName + "获取数据库字段失败";
+ return new JsonResult(jm);
+ }
+ }
+
+ }
+
#region 获取所有表和表名并生成excel
diff --git a/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml b/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml
index c50e80b4..af2b2539 100644
--- a/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml
+++ b/CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml
@@ -4299,6 +4299,14 @@
+
+
+ 生成代码
+
+
+
+
+
获取所有表和表名并生成excel
diff --git a/CoreCms.Net.Web.Admin/appsettings.json b/CoreCms.Net.Web.Admin/appsettings.json
index a888fbb5..3285a33e 100644
--- a/CoreCms.Net.Web.Admin/appsettings.json
+++ b/CoreCms.Net.Web.Admin/appsettings.json
@@ -262,4 +262,4 @@
"WxOpenToken": "",
"WxOpenEncodingAESKey": ""
}
-}
\ No newline at end of file
+}