vue view code gen

This commit is contained in:
21世纪小八路
2023-03-31 23:36:54 +08:00
parent cbfc8cb06e
commit 822c45c81e
22 changed files with 949 additions and 198 deletions

View File

@@ -4,6 +4,22 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<None Remove="CrudTemplete\Vue\Api.tpl" />
<None Remove="CrudTemplete\Vue\DetailConfig.tpl" />
<None Remove="CrudTemplete\Vue\FormSchema.tpl" />
<None Remove="CrudTemplete\Vue\Index.tpl" />
<None Remove="CrudTemplete\Vue\Model.tpl" />
<None Remove="CrudTemplete\Vue\PageRouter.tpl" />
<None Remove="CrudTemplete\Vue\PageRouterIndex.tpl" />
<None Remove="CrudTemplete\Vue\Router.tpl" />
<None Remove="CrudTemplete\Vue\SearchField.tpl" />
<None Remove="CrudTemplete\Vue\Service.tpl" />
<None Remove="CrudTemplete\Vue\Store.tpl" />
<None Remove="CrudTemplete\Vue\StoreModulesIndex.tpl" />
<None Remove="CrudTemplete\Vue\TableConfig.tpl" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="CrudTemplete\Controllers\Controller.tpl" /> <EmbeddedResource Include="CrudTemplete\Controllers\Controller.tpl" />
<EmbeddedResource Include="CrudTemplete\DbModel\Model.tpl" /> <EmbeddedResource Include="CrudTemplete\DbModel\Model.tpl" />
@@ -15,6 +31,19 @@
<EmbeddedResource Include="CrudTemplete\View\Details.tpl" /> <EmbeddedResource Include="CrudTemplete\View\Details.tpl" />
<EmbeddedResource Include="CrudTemplete\View\Edit.tpl" /> <EmbeddedResource Include="CrudTemplete\View\Edit.tpl" />
<EmbeddedResource Include="CrudTemplete\View\Index.tpl" /> <EmbeddedResource Include="CrudTemplete\View\Index.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Api.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\DetailConfig.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\FormSchema.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Index.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Model.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\PageRouter.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\PageRouterIndex.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Router.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\SearchField.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Service.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\Store.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\StoreModulesIndex.tpl" />
<EmbeddedResource Include="CrudTemplete\Vue\TableConfig.tpl" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -0,0 +1,4 @@
import { API_PROXY_PREFIX } from "../api";
export const GetPageListUrl: string = `${API_PROXY_PREFIX}/{{ModelClassName}}/GetPageList`;

View File

@@ -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<IData> } = {
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;

View File

@@ -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;

View File

@@ -0,0 +1,205 @@
<template>
<DStandardTable
:tableConfig="tableConfig"
:dispatchKey="dispatchKey"
:dataSource="dataSourceCmp"
:searchFields="searchFields"
:span="span"
:selectedRowKeys="state.selectedRows"
:rowKey="rowKey"
:total="totalCmp"
selectedRowKeyType="checkbox"
:onSelectChange="onSelectRowChange"
@onTableRefresh="onTableRefresh($event)"
>
<template #toolbar>
<a-button type="primary" shape="round" @click="onAddData()"
>新增</a-button
>
</template>
{% for field in ModelFields %}{% if field.DbColumnName contains 'Image' or field.DbColumnName contains 'image' or field.DbColumnName contains 'thumbnail' or field.DbColumnName contains 'Thumbnail' %}
<template #{{field.DbColumnName}}="{ record }">
<Image :src="record.{{field.DbColumnName}}" :width="40" :height="40"></Image>
</template>{% endif %}{% endfor %}
<template #action="{ record }">
<a-space>
<a-button size="small" shape="round" @click="onViewDataDetail(record)"
>查看</a-button
>
<a-button
size="small"
shape="round"
type="primary"
@click="onEdit(record)"
>编辑</a-button
>
<a-button size="small" shape="round" danger @click="onDelete(record)"
>删除</a-button
>
</a-space>
</template>
</DStandardTable>
<CoreShopFormModal
:visible="state.editModalVisible"
width="50%"
:schema="state.formSchema"
:modalVisible="onEditModalVisible"
:onSuccess="onEditSuccess"
:title="state.formModalTitle"
></CoreShopFormModal>
<Modal
:visible="state.dataDetailVisible"
:onClose="onCloseDataDetailModal"
:onCancel="onCloseDataDetailModal"
:destroyOnClose="true"
:title="state.dataDetailConfig?.title"
:width="45"
height="auto"
>
<DataDetailDisplay
:data="state.dataDetailConfig.fields"
:column="2"
></DataDetailDisplay>
</Modal>
<DeleteConfirmModal
:visible="state.deleteConfirmModalVisible"
:destroyOnClose="true"
:content="state.deleteContentTip"
:onCancel="onCancelDeleteDataModal"
:onSuccess="onSuccessDeleteData"
:DeleteUrl="state.deleteDataUrl"
:params="state.deleteDataparams"
>
</DeleteConfirmModal>
</template>
<script setup lang="ts">
import DStandardTable from "@/components/table/dStandardTable.vue";
import { I{{ModelClassName}} } from "@/models/{{ModelClassName}}";
import { computed, ComputedRef, reactive } from "vue";
import { useStore } from "vuex";
import tableConfig from "./table-config";
import formSchema from "./form-schema";
import { CoreShopFormModal } from "@/components/coreshop-form";
import searchFields from "./search-field";
import { cloneDeep } from "lodash";
import { IFormSchema } from "@/components/coreshop-form/type";
import dataDetailConfig from "./detail-config";
import { DataDetailDisplay, IData } from "@/components/data-detail-display";
import { buildDataDetail } from "@/utils/build-data-detail";
import Modal from "@/components/modal";
import DeleteConfirmModal from "@/components/coreshop-modal-delete/index";
import Image from "@/components/coreshop-image";
/** 数据查询的接口 */
const dispatchKey: string = "{{ModelClassName}}/getPageList";
const span: number = 3;
const rowKey: string = "id";
// 表格刷新
let handleTableRefreshFun: Function;
const state = reactive<{
selectedRows: Array<any>;
editModalVisible: boolean;
formModalTitle: string;
formSchema: IFormSchema;
dataDetailVisible: boolean;
dataDetailConfig: {
title?: string;
fields?: Array<IData>;
};
deleteConfirmModalVisible: boolean;
deleteContentTip: string;
deleteDataUrl: string;
deleteDataparams: { [key: string]: any };
}>({
selectedRows: [],
editModalVisible: false,
formModalTitle: "编辑",
formSchema: {},
dataDetailVisible: false,
dataDetailConfig: {
title: "详情",
fields: [],
},
deleteConfirmModalVisible: false,
deleteContentTip: "确定删除?删除后将无法恢复。",
deleteDataUrl: "",
deleteDataparams: {},
});
const store = useStore();
const dataSourceCmp: ComputedRef<Array<I{{ModelClassName}}>> = computed(
() => store.state.{{ModelClassName}}.{{ModelClassName}}.{{ModelClassName}}
);
const totalCmp: ComputedRef<number> = computed(
() => store.state.{{ModelClassName}}.{{ModelClassName}}.count
);
const onTableRefresh = (fun: Function) => {
handleTableRefreshFun = fun;
};
const onAddData = () => {
state.editModalVisible = true;
state.formModalTitle = "新增";
state.formSchema = formSchema;
};
const onEdit = (data: { [key: string]: any }) => {
let editFormSchema: IFormSchema = cloneDeep(formSchema);
state.editModalVisible = true;
state.formModalTitle = "编辑";
editFormSchema.filter = { id: data.id };
state.formSchema = editFormSchema;
};
/** 查看详情 */
const onViewDataDetail = (data: { [key: string]: any }) => {
dataDetailConfig.fields = buildDataDetail(dataDetailConfig.fields, data);
state.dataDetailVisible = true;
state.dataDetailConfig = dataDetailConfig;
};
const onEditModalVisible = (visible: boolean) => {
state.editModalVisible = visible;
};
const onEditSuccess = () => {
state.editModalVisible = false;
handleTableRefreshFun && handleTableRefreshFun();
};
const onCloseDataDetailModal = () => {
state.dataDetailVisible = false;
};
//#region 删除数据模态交互
const onDelete = (data: { [key: string]: any }) => {
state.deleteConfirmModalVisible = true;
state.deleteContentTip = "确定删除?删除后将无法恢复。";
state.deleteDataUrl = "api/{{ModelClassName}}/DoDelete";
state.deleteDataparams = { id: data.id };
};
const onCancelDeleteDataModal = () => {
state.deleteConfirmModalVisible = false;
};
/** 删除数据后回调*/
const onSuccessDeleteData = () => {
store.commit("{{ModelClassName}}/deleteDataById", state.deleteDataparams.id);
};
/** 选中数据 */
const onSelectRowChange=(selectedRows:Array<number>)=>{
state.selectedRows =selectedRows;
}
//#endregion
</script>
<style lang="less" scoped>
</style>

View File

@@ -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 %}
}

View File

@@ -0,0 +1,13 @@
export const routers: Array<any> = [
{
path: "{{ModelClassName}}",
name: "{{ModelDescription}}",
meta: {
page: {
closable: false,
},
authority: "*",
},
component: () => import("./{{ModelClassName}}/index.vue"),
}
];

View File

@@ -0,0 +1,5 @@
import { routers } from './router';
export {
routers ,
}

View File

@@ -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],
},
]

View File

@@ -0,0 +1,32 @@
import { FieldTypeEnum, ISearchField } from "@/components/searchForm";
import { markRaw } from "vue";
const searchFields: Array<ISearchField> = 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;

View File

@@ -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<any> {
return request(GetPageListUrl, HttpMehtod.FORM_DATA, params)
}

View File

@@ -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<I{{ModelClassName}}>;
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,
};

View File

@@ -0,0 +1,6 @@

import {{ModelClassName}} from "./{{ModelClassName}}";
export default {
{{ModelClassName}},
};

View File

@@ -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;

View File

@@ -23,7 +23,7 @@ namespace CoreCms.Net.CodeGenerator
/// <param name="tableName">表名称</param> /// <param name="tableName">表名称</param>
/// <param name="tableDescription">表说明</param> /// <param name="tableDescription">表说明</param>
/// <param name="columns">表字段</param> /// <param name="columns">表字段</param>
public static byte[] CodeGenerator(string tableName, string tableDescription, List<DbColumnInfo> columns, string fileType) public static byte[] CodeGenerator(string tableName, string tableDescription, List<DbColumnInfo> columns, string fileType, bool isVue = false)
{ {
//ModelClassName //ModelClassName
//ModelName //ModelName
@@ -32,7 +32,7 @@ namespace CoreCms.Net.CodeGenerator
byte[] data; byte[] data;
var obj = new var obj = new
{ {
ModelCreateTime= dt, ModelCreateTime = dt,
ModelName = tableName, ModelName = tableName,
ModelDescription = tableDescription, ModelDescription = tableDescription,
ModelClassName = tableName, ModelClassName = tableName,
@@ -143,56 +143,17 @@ namespace CoreCms.Net.CodeGenerator
} }
} }
//CreateHtml // 生成layUI 前端代码
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Create.tpl"), Encoding.UTF8)) if (isVue == false)
{ {
file = reader.ReadToEnd(); CodeGeneratorForLayUI(obj, tableName, zip);
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 // 生成 vue 前端代码
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8)) else
{ {
file = reader.ReadToEnd(); CodeGeneratorForVue(obj, tableName, zip);
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);
}
}
break; break;
case "EntityFiles": case "EntityFiles":
//Model //Model
@@ -235,55 +196,14 @@ namespace CoreCms.Net.CodeGenerator
} }
break; break;
case "ViewFiles": 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 if (isVue == false)
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
{ {
file = reader.ReadToEnd(); CodeGeneratorForLayUI(obj, tableName, zip);
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);
}
} }
else
//IndexHtml
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
{ {
file = reader.ReadToEnd(); CodeGeneratorForVue(obj, tableName, zip);
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; break;
case "InterFaceFiles": case "InterFaceFiles":
@@ -325,7 +245,7 @@ namespace CoreCms.Net.CodeGenerator
/// <param name="tableName">表名称</param> /// <param name="tableName">表名称</param>
/// <param name="tableDescription">表说明</param> /// <param name="tableDescription">表说明</param>
/// <param name="columns">表字段</param> /// <param name="columns">表字段</param>
public static byte[] CodeGeneratorAll(List<DbTableInfoAndColumns> dbModels, string fileType) public static byte[] CodeGeneratorAll(List<DbTableInfoAndColumns> dbModels, string fileType, bool isVue = false)
{ {
//ModelClassName //ModelClassName
//ModelName //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(); CodeGeneratorForLayUI(obj, item.Name, zip);
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 else
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Edit.tpl"), Encoding.UTF8))
{ {
file = reader.ReadToEnd(); CodeGeneratorForVue(obj, item.Name, zip);
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);
}
} }
break; break;
case "EntityFiles": case "EntityFiles":
@@ -538,55 +417,14 @@ namespace CoreCms.Net.CodeGenerator
} }
break; break;
case "ViewFiles": 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 if (isVue == false)
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Details.tpl"), Encoding.UTF8))
{ {
file = reader.ReadToEnd(); CodeGeneratorForLayUI(obj, item.Name, zip);
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);
}
} }
else
//IndexHtml
using (var reader = new StreamReader(assembly.GetManifestResourceStream("CoreCms.Net.CodeGenerator.CrudTemplete.View.Index.tpl"), Encoding.UTF8))
{ {
file = reader.ReadToEnd(); CodeGeneratorForVue(obj, item.Name, zip);
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);
}
} }
break; break;
case "InterFaceFiles": case "InterFaceFiles":
@@ -625,5 +463,271 @@ namespace CoreCms.Net.CodeGenerator
return data; 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);
}
}
}
} }
} }

View File

@@ -33,7 +33,7 @@ namespace CoreCms.Net.IRepository
///// </summary> ///// </summary>
///// <param name="model"></param> ///// <param name="model"></param>
///// <returns></returns> ///// <returns></returns>
byte[] CodeGen(string tableName, string fileType); byte[] CodeGen(string tableName, string fileType, bool isVue = false);
/// <summary> /// <summary>
@@ -42,6 +42,6 @@ namespace CoreCms.Net.IRepository
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
byte[] CodeGenByAll(string fileType); byte[] CodeGenByAll(string fileType, bool isVue = false);
} }
} }

View File

@@ -33,7 +33,7 @@ namespace CoreCms.Net.IServices
///// </summary> ///// </summary>
///// <param name="model"></param> ///// <param name="model"></param>
///// <returns></returns> ///// <returns></returns>
byte[] CodeGen(string tableName, string fileType); byte[] CodeGen(string tableName, string fileType, bool isVue = false);
/// <summary> /// <summary>
@@ -42,6 +42,6 @@ namespace CoreCms.Net.IServices
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
byte[] CodeGenByAll(string fileType); byte[] CodeGenByAll(string fileType, bool isVue = false);
} }
} }

View File

@@ -55,7 +55,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
public byte[] CodeGen(string tableName, string fileType) public byte[] CodeGen(string tableName, string fileType, bool isVue = false)
{ {
var tables = DbClient.DbMaintenance.GetTableInfoList(false); var tables = DbClient.DbMaintenance.GetTableInfoList(false);
var views = DbClient.DbMaintenance.GetViewInfoList(false); var views = DbClient.DbMaintenance.GetViewInfoList(false);
@@ -66,7 +66,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
} }
var columns = DbClient.DbMaintenance.GetColumnInfosByTableName(tb.Name, false); 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
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
public byte[] CodeGenByAll(string fileType) public byte[] CodeGenByAll(string fileType, bool isVue = false)
{ {
var tables = DbClient.DbMaintenance.GetTableInfoList(false); var tables = DbClient.DbMaintenance.GetTableInfoList(false);
var views = DbClient.DbMaintenance.GetViewInfoList(false); var views = DbClient.DbMaintenance.GetViewInfoList(false);
@@ -96,7 +96,7 @@ namespace CoreCms.Net.Repository.CodeGenerator
if (!allDb.Any()) if (!allDb.Any())
return null; return null;
return GeneratorCodeHelper.CodeGeneratorAll(allDb, fileType); return GeneratorCodeHelper.CodeGeneratorAll(allDb, fileType, isVue);
} }
} }
} }

View File

@@ -52,9 +52,9 @@ namespace CoreCms.Net.Services.CodeGenerator
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
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
/// <param name="tableName"></param> /// <param name="tableName"></param>
/// <param name="fileType"></param> /// <param name="fileType"></param>
/// <returns></returns> /// <returns></returns>
public byte[] CodeGenByAll(string fileType) public byte[] CodeGenByAll(string fileType, bool isVue = false)
{ {
return _dal.CodeGenByAll(fileType, isVue);
return _dal.CodeGenByAll(fileType);
} }
} }

View File

@@ -128,6 +128,57 @@ namespace CoreCms.Net.Web.Admin.Controllers
} }
/// <summary>
/// 生成代码
/// </summary>
/// <param name="tableName"></param>
/// <param name="fileType"></param>
/// <returns></returns>
[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 #region excel

View File

@@ -4299,6 +4299,14 @@
<param name="fileType"></param> <param name="fileType"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CodeGeneratorController.CodeGenDownVue(System.String,System.String)">
<summary>
生成代码
</summary>
<param name="tableName"></param>
<param name="fileType"></param>
<returns></returns>
</member>
<member name="M:CoreCms.Net.Web.Admin.Controllers.CodeGeneratorController.GetDataBaseTablesToExcel"> <member name="M:CoreCms.Net.Web.Admin.Controllers.CodeGeneratorController.GetDataBaseTablesToExcel">
<summary> <summary>
获取所有表和表名并生成excel 获取所有表和表名并生成excel