From 71a29934b04038b983772819e129d7c63202e565 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 06 5月 2025 08:24:48 +0800 Subject: [PATCH] 2222 --- Weben_CMS专用代码生成器/Code/MainForm.cs | 8 + Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/File模板.txt | 31 ++++ Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityMode模板.txt | 275 +++++++++++++++++++++++++++++++++++++++ Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityMode_Generate.cs | 27 +++ Weben_CMS专用代码生成器/Code/常用.txt | 5 Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj | 8 + Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/File_Generate.cs | 27 +++ 7 files changed, 380 insertions(+), 1 deletions(-) diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/EntityMode_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/EntityMode_Generate.cs" new file mode 100644 index 0000000..4805e1e --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/EntityMode_Generate.cs" @@ -0,0 +1,27 @@ +锘� + +using GenerateCode_WeiBen_WMS.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace GenerateCode_GEBrilliantFactory +{ + /// <summary> + /// 鐢熸垚鏌ヨ瀹炰綋绫� + /// </summary> + public class EntityMode_Generate : BaseGenerate + { + public static string CreateText(GenerateCodeParam param) + { + var str = TextHelper.ReadText(@"Templete\Web\Controllers\EntityMode妯℃澘.txt"); + CommonReplace(ref str); + + CommonHelper.CommonReplaceStr(param, ref str); + + + return str; + } + } +} diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/File_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/File_Generate.cs" new file mode 100644 index 0000000..ade88ee --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Web/Controllers/File_Generate.cs" @@ -0,0 +1,27 @@ +锘� + +using GenerateCode_WeiBen_WMS.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace GenerateCode_GEBrilliantFactory +{ + /// <summary> + /// 鐢熸垚鏌ヨ瀹炰綋绫� + /// </summary> + public class File_Generate : BaseGenerate + { + public static string CreateText(GenerateCodeParam param) + { + var str = TextHelper.ReadText(@"Templete\Web\Controllers\File妯℃澘.txt"); + CommonReplace(ref str); + + CommonHelper.CommonReplaceStr(param, ref str); + + + return str; + } + } +} diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" index 4286f30..f3cc73a 100644 --- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" @@ -128,6 +128,8 @@ <Compile Include="Generate\BLL_Generate.cs" /> <Compile Include="Generate\DAL_Generate.cs" /> <Compile Include="Generate\Procedure_Generate.cs" /> + <Compile Include="Generate\Web\Controllers\EntityMode_Generate.cs" /> + <Compile Include="Generate\Web\Controllers\File_Generate.cs" /> <Compile Include="Generate\Web\enum_Generate.cs" /> <Compile Include="Generate\Web\Index_Generate.cs" /> <Compile Include="Model\GenerateCodeParam.cs" /> @@ -280,6 +282,12 @@ <Content Include="Templete\InitSQL妯℃澘.txt"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> + <Content Include="Templete\Web\Controllers\EntityMode妯℃澘.txt"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="Templete\Web\Controllers\File妯℃澘.txt"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> <Content Include="Templete\Web\enum妯℃澘.txt"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" index 39a34fb..cc17f85 100644 --- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" @@ -301,6 +301,14 @@ tf = TextHelper.Export2File_V2(webRootPath, $"enum.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo); + //15銆佺敓鎴� Controllers\File 鏂囦欢 + str_generate = File_Generate.CreateText(param); + tf = TextHelper.Export2File_V2(webRootPath+ @"\Controllers", $"File.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo); + + //16銆佺敓鎴� Controllers\EntityMode 鏂囦欢 + str_generate = EntityMode_Generate.CreateText(param); + tf = TextHelper.Export2File_V2(webRootPath + @"\Controllers", $"{tb_EntityName.Text.Trim()}.ts", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo); + #endregion diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityMode\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityMode\346\250\241\346\235\277.txt" new file mode 100644 index 0000000..8aca535 --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/EntityMode\346\250\241\346\235\277.txt" @@ -0,0 +1,275 @@ +import { ref, onMounted, reactive, Ref, nextTick, computed } from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { $EntityName$ } from '../Models/$EntityName$' +import { ElMessage } from 'element-plus' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { useFile } from './File' + +interface CurrentType { + row: any + index: number +} +export const use$EntityName$ = (props: any, ctx?: any) => { + const $PageMenuInstanceName$ = injectModel<$EntityName$>('$PageMenuInstanceName$') + const { exportFile } = useFile() + /** + * 头部配置 + */ + const headers = ref({}) + /** + * 动态列配置 + */ + const $PageMenuInstanceName$Columns = ref<Record<string, any>>([]) + /** + * 搜索值 + */ + const search = ref('') + + /** + * 排序 + */ + const sort = ref(0) + /** + * 选择项 + */ + const selection = ref([]) + /** + * 当前选中的行 + */ + const current = ref<any>(null) + /** + * 数据源 + */ + const dataSource: Ref<any[]> = ref([]) + + /** + * 表格 + */ + const tableRef = ref() + const dialogConfig = reactive({ + visible: false, + title: '', + isAdd: false, + }) + const dialogConfigForQuery = reactive({ + visible: false, + title: '', + isAdd: false, + }) + + + const dialogSettingConfig = reactive({ + visible: false, + title: '', + }) + + /** + * 分页数据 + */ + const paginationParams = ref({}) + + /** + * 打开详情 + * @param row + */ + const openDetail = (row: any) => { + current.value = row + dialogConfig.visible = true + dialogConfig.title = row.name + dialogConfig.isAdd = false + sort.value = row.sort + } + + const contextMenu = [ + { + label: '展开详情', + fn: (c: CurrentType) => { + current.value = null + sort.value = c.row.sort + nextTick(() => openDetail(c.row)) + }, + divided: true, + icon: 'o', + }, + // { + // label: '向上添加', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 1 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '添加' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'up', + // }, + // { + // label: '向下添加', + // fn: (c: CurrentType, pageNum: number) => { + // current.value = null + // sort.value = c.index + 2 + (pageNum - 1) * 50 + // dialogConfig.visible = true + // dialogConfig.title = '添加' + // dialogConfig.isAdd = false + // }, + // divided: true, + // icon: 'down', + // }, + // { + // label: '创建副本', + // fn: async ({ row }: CurrentType) => { + // await $PageMenuInstanceName$.cloneData([row.id]) + // ElMessage.success('创建副本成功') + // tableRef.value?.getList() + // }, + // divided: true, + // icon: 'copy', + // }, + { + label: '删除', + fn: async (c: CurrentType) => { + const names = selection.value.map((item: { name: string }) => item.name) + ConfirmBox( + `是否删除${names.length ? names.join(',') : c.row.name}` + ).then(async () => { + const ids = selection.value.map((item: { id: string }) => item.id) + await $PageMenuInstanceName$.delete$EntityName$s(ids.length ? ids : [c.row.id]) + ElMessage.success('删除成功') + tableRef.value.getList() + }) + }, + icon: 'close', + }, + ] + + const onCheck = (records: any) => { + selection.value = records + } + + const onAdd$EntityName$ = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfig.visible = true + dialogConfig.isAdd = true + dialogConfig.title = '添加' + sort.value = params.totalCount + 1 + } + + //点击按钮【高级查询】 + const onAdvancedQuery = () => { + const params = tableRef.value?.getPaginationParams() + current.value = null + dialogConfigForQuery.visible = true + dialogConfigForQuery.isAdd = true + dialogConfigForQuery.title = '高级查询' + } + + const onConfirm$EntityName$ = async () => { + dialogConfig.visible = false + if (dialogConfig.isAdd) { + tableRef.value?.scrollToRow({ + skip: true, + }) + } else { + await tableRef.value?.getList() + } + } + /** + * 行点击时更新current + */ + const onRowClick = ({ row }: any) => { + if (dialogConfig.visible && current.value) { + current.value = row + } + } + /** + * 导出 + */ + const onExport = (data={}) => { + //const params = tableRef.value?.getParams() + exportFile('/api/v1/hIAWms/$PageMenuInstanceName$/export', data, 'hIAWms') + } + + /** + * 关键字搜索 + */ + const onSearch = () => { + tableRef.value?.getList({ + Filter: search.value, + }) + } + + /** + * 重置表格数据 + */ + const reloadList = () => { + tableRef.value?.getList() + } + /** + * 上传成功 + */ + const onSuccess = () => { + tableRef.value?.getList() + ElMessage.success('导入成功') + } + /** + * 失败 + * @param err + */ + const onError = (err: any) => { + try { + const message = JSON.parse(err.message) + ElMessage.error(message.msg) + } catch (error) { + ElMessage.error('导入失败') + } + } + /** + * 上传钩子 + */ + const onBeforeUpload = (file: File) => { + const format = ['xlsx', 'xls', 'csv'] + if (!format.includes(file.name.split('.')[1])) { + ElMessage.error('导入文件格式不正确,请导入.xlsx/.xls与.csv格式的文件') + return false + } + return true + } + + onMounted(() => { + headers.value = { + Authorization: `Bearer ${sessionStorage.getItem('Token')}`, + 'X-Project': sessionStorage.getItem('X-Project'), + } + }) + + ctx.expose({ + reloadList, + }) + + return { + dataSource, + contextMenu, + dialogConfig, + dialogConfigForQuery, + dialogSettingConfig, + tableRef, + current, + search, + sort, + $PageMenuInstanceName$Columns, + paginationParams, + headers, + onBeforeUpload, + onError, + onSuccess, + openDetail, + onSearch, + onExport, + onRowClick, + onConfirm$EntityName$, + onCheck, + onAdd$EntityName$, + onAdvancedQuery + } +} diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/File\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/File\346\250\241\346\235\277.txt" new file mode 100644 index 0000000..c79b5d5 --- /dev/null +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Web/Controllers/File\346\250\241\346\235\277.txt" @@ -0,0 +1,31 @@ +import { importFileToService, exportFileToClient } from '@/api/file' +import { ElMessage } from 'element-plus' +import { downloadFile } from '@/utils' +import dayjs from 'dayjs' + +export const useFile = () => { + /** + * 导入文件 + * @param url + */ + const importFile = async (url: string, file: File) => { + const formData = new FormData() + formData.append('file', file) + await importFileToService(url, formData) + ElMessage('导入成功') + } + /** + * 导出文件 + * @param url + */ + const exportFile = async (url: string, params: any, name: string) => { + const res = await exportFileToClient(url, params) + downloadFile(res, `${name}_${dayjs().format('YYYYMMDDHHMMss')}.xlsx`) + ElMessage.success('导出成功') + } + + return { + importFile, + exportFile, + } +} diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/\345\270\270\347\224\250.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/\345\270\270\347\224\250.txt" index 6f3d785..fcfe59b 100644 --- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/\345\270\270\347\224\250.txt" +++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/\345\270\270\347\224\250.txt" @@ -7,4 +7,7 @@ $NameSpacePath$ -$EntityInstanceName$ \ No newline at end of file +$EntityInstanceName$ + + +$PageMenuInstanceName$ \ No newline at end of file -- Gitblit v1.9.3