From e0f7bd33a83f75a08c84727fde656a5ec470a344 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周二, 06 5月 2025 09:57:37 +0800 Subject: [PATCH] fasasdfasd --- Weben_CMS专用代码生成器/Code/MainForm.cs | 5 Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityModeDrawer_Generate.cs | 46 +++++ Weben_CMS专用代码生成器/Code/Utility/ListHelper.cs | 36 ++++ Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityModeDrawer模板.txt | 160 ++++++++++++++++++++ Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj | 4 Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs | 218 +++++++++++++++++++++++++++ 6 files changed, 469 insertions(+), 0 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/EntityModeDrawer_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/EntityModeDrawer_Generate.cs" new file mode 100644 index 0000000..ffb292f --- /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/EntityModeDrawer_Generate.cs" @@ -0,0 +1,46 @@ +锘� + +using GenerateCode_WeiBen_WMS.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace GenerateCode_GEBrilliantFactory +{ + /// <summary> + /// 鐢熸垚鏌ヨ瀹炰綋绫� + /// </summary> + public class EntityModeDrawer_Generate : BaseGenerate + { + public static string CreateText(GenerateCodeParam param) + { + var str = TextHelper.ReadText(@"Templete\Web\Controllers\EntityModeDrawer妯℃澘.txt"); + CommonReplace(ref str); + + CommonHelper.CommonReplaceStr(param, ref str); + + //鏇挎崲鏂板form鍒楄〃灞炴�� + string attrString = ""; + List<ColumnModel> newColumnNameList = ListHelper.RemoveAttrForUpdateMode(param.ColumnNameList); + attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributes(param.ColumnNameList, param); + str = str.Replace("$PageAddFormAttributes$", attrString); + + attrString = ""; + attrString += StructStrHelper.GetVueFormOptionsStrForSave_PageAddFormAttributes(param.ColumnNameList,param); + str = str.Replace("$Save_PageAddFormAttributes$", attrString); + + attrString = ""; + attrString += StructStrHelper.GetVueFormOptionsStrForCommonQueryEnumForFrom(param.ColumnNameList, param); + str = str.Replace("$CommonQueryEnumForFrom$", attrString); + + attrString = ""; + attrString += StructStrHelper.GetVueFormOptionsStrForPageAddFormAttributesByOpen(param.ColumnNameList, param); + str = str.Replace("$PageAddFormAttributesByOpen$", attrString); + + + + 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 f3cc73a..3a1049a 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,7 @@ <Compile Include="Generate\BLL_Generate.cs" /> <Compile Include="Generate\DAL_Generate.cs" /> <Compile Include="Generate\Procedure_Generate.cs" /> + <Compile Include="Generate\Web\Controllers\EntityModeDrawer_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" /> @@ -282,6 +283,9 @@ <Content Include="Templete\InitSQL妯℃澘.txt"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> + <Content Include="Templete\Web\Controllers\EntityModeDrawer妯℃澘.txt"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> <Content Include="Templete\Web\Controllers\EntityMode妯℃澘.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 cc17f85..e9f5e78 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" @@ -309,6 +309,11 @@ 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); + + //17銆佺敓鎴� Controllers\EntityModeDrawer 鏂囦欢 + str_generate = EntityModeDrawer_Generate.CreateText(param); + tf = TextHelper.Export2File_V2(webRootPath + @"\Controllers", $"{tb_EntityName.Text.Trim()}Drawer.tsx", 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/EntityModeDrawer\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/EntityModeDrawer\346\250\241\346\235\277.txt" new file mode 100644 index 0000000..156b0a6 --- /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/EntityModeDrawer\346\250\241\346\235\277.txt" @@ -0,0 +1,160 @@ +import { + ref, + onMounted, + reactive, + computed, + Ref, + watch, + SetupContext, + h, +} from 'vue' +import { injectModel } from '@/libs/Provider/Provider' +import { $EntityName$Drawer } from '../Models/$EntityName$Drawer' +import { ElMessage } from 'element-plus' +import isEqual from 'lodash/isEqual' +import { ConfirmBox } from '@/components/ConfirmBox/ConfirmBox' +import { cloneDeep } from 'lodash' + +export const use$EntityName$Drawer = (props: any, ctx?: any) => { + const $PageMenuInstanceName$Drawer = injectModel<$EntityName$Drawer>('$PageMenuInstanceName$Drawer') + /** + * 用来对比的初始化数据 + */ + const initiateData: Ref<Record<string, any>> = ref({}) + const formData = ref<Record<string, any>>({}) + // ref + const formRef = ref() + + const disabled = ref(false) + + const current = computed(() => { + return props.row || null + }) + + const inputNumber = (attrs) => { + return ( + <el-input-number + min="1" + step="1" + precision="0" + {...attrs} + ></el-input-number> + ) + } + + const visible = computed({ + get() { + return props.modelValue + }, + set(val) { + ctx.emit('update:modelValue', val) + }, + }) + /** + * 添加的form字段 + */ + const formItems = reactive([ + $PageAddFormAttributes$ + ]) + /** + * 校验是否有数据变化 + */ + const checkIsEqualObject = () => { + const data = { + formData: formData.value, + } + const check = isEqual(initiateData.value, data) + return check + } + + const onClose = (done: () => void) => { + if (visible.value) { + if (checkIsEqualObject()) { + visible.value = false + done && done() + } else { + ConfirmBox('是否保存设置?') + .then(() => { + onConfirm() + }) + .catch(() => { + visible.value = false + done && done() + }) + } + } + } + /** + * 保存 + */ + const onConfirm = async () => { + await formRef.value?.validate() + const data = { + $Save_PageAddFormAttributes$ + } + if (!current.value) { + await $PageMenuInstanceName$Drawer.add$EntityName$(data) + } else { + const id = current.value.id + await $PageMenuInstanceName$Drawer.update$EntityName$(id, data) + } + ElMessage.success('保存成功') + ctx.emit('confirm') + } + + const updateCheckData = () => { + initiateData.value = { + formData: { + ...formData.value, + }, + } + } + const updateFormItemOptions = (propName: string, enumData: any[]) => { + const item = formItems.find((item) => item.prop === propName) + if (item && enumData) { + item.options = enumData.map((item) => ({ + label: item.description, + value: item.value, + })) + } + } + /** + * 通用查询枚举 + */ + const commonQueryEnumForFrom = async () => { + $CommonQueryEnumForFrom$ + } + commonQueryEnumForFrom() + /** + * 弹窗打开获取详情 + */ + const onOpen = async () => { + if (current.value) { + const res = await $PageMenuInstanceName$Drawer.get$EntityName$Detail(current.value) + + formData.value = { + $PageAddFormAttributesByOpen$ + id: res.id, + } + disabled.value = true + updateCheckData() + } else { + formData.value = {} + + disabled.value = false + updateCheckData() + } + } + + watch(() => current.value, onOpen) + + return { + formItems, + formData, + visible, + formRef, + onOpen, + onClose, + onConfirm, + } +} 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/Utility/ListHelper.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/Utility/ListHelper.cs" index 09bdfe2..0e29f42 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/Utility/ListHelper.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/Utility/ListHelper.cs" @@ -143,6 +143,42 @@ return newList; } + + /// <summary> + /// 鍓嶇椤甸潰锛堟柊澧炪�佷慨鏀硅〃鍗曠殑閫夐」绛涢�変笓鐢級 + /// </summary> + /// <param name="columnNameList"></param> + /// <returns></returns> + public static List<ColumnModel> RemoveForPageAddFormAttributes(List<ColumnModel> columnNameList) + { + List<ColumnModel> newList = new List<ColumnModel>(); + ColumnModel columnModel = null; + for (int i = 0; i < columnNameList.Count; i++) + { + columnModel = columnNameList[i]; + if (columnModel.ColumnName.ToUpper() == SystemCommonVar.c_creator.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_createTime.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifier.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_lastModifyTime.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyTime.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Id.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ExtraProperties.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ConcurrencyStamp.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_DeleterId.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_delFlag.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_CreateId.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_ModifyId.ToUpper() + || columnModel.ColumnName.ToUpper() == SystemCommonVar.c_Sort.ToUpper() + + ) + { + continue; + } + newList.Add(columnModel); + } + return newList; + } + /// <summary> /// 鑾峰彇鏈�鏂扮殑鍒桳ist闆嗗悎(鍘绘帀 Id锛孋reateId锛孧odifyId) /// </summary> 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/Utility/StructStrHelper.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/Utility/StructStrHelper.cs" index fee22c6..d044164 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/Utility/StructStrHelper.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/Utility/StructStrHelper.cs" @@ -1790,6 +1790,224 @@ /// <summary> + /// 鑾峰彇VUE formOptions瀛楃涓�(楂樼骇鏌ヨ涓殑) + /// </summary> + /// <param name="columnModelList"></param> + /// <returns></returns> + public static string GetVueFormOptionsStrForPageAddFormAttributes(List<ColumnModel> columnModelList, GenerateCodeParam param) + { + StringBuilder sb = new StringBuilder(); + try + { + /* + { + label: '鐗╂枡缂栫爜', + prop: 'materialCode', + el: 'input', + disabled: disabled, + placeholder: '璇疯緭鍏ョ墿鏂欑紪鐮�', + rules: [{ required: true, message: '鐗╂枡缂栫爜涓嶈兘涓虹┖', trigger: 'blur' }], + }, + */ + List<ColumnModel> newList = ListHelper.RemoveForPageAddFormAttributes(columnModelList); + foreach (var columnModel in newList) + { + DataTypeEnum enumDT = (DataTypeEnum)Enum.Parse(typeof(DataTypeEnum), "dt_" + columnModel.DataType.ToString()); + var elment = "input"; + switch (enumDT) + { + case DataTypeEnum.dt_datetime: + elment = "date-picker"; + break; + case DataTypeEnum.dt_bit: + case DataTypeEnum.dt_tinyint: + elment = "select"; + break; + default: + break; + } + sb.Append(" { \n"); + sb.Append(" label: '" + columnModel.Description + "', \n"); + sb.Append(" prop: '" + columnModel.ColumnName + "', \n"); + + //娣诲姞绫诲瀷 + switch (enumDT) + { + case DataTypeEnum.dt_datetime: + sb.Append(" type: 'datetimerange', \n"); + break; + default: + break; + } + + if (enumDT == DataTypeEnum.dt_decimal) + { + sb.Append(" el: (props: any, { attrs }: SetupContext) => { \n"); + sb.Append(" return h(inputNumber, { { \n"); + sb.Append(" ...props, { \n"); + sb.Append(" clearable: true, { \n"); + sb.Append(" ...attrs, { \n"); + sb.Append(" }) \n"); + sb.Append(" },\n"); + + //閰嶇疆绮惧害锛熻繖閲岄渶瑕佽幏鍙栨暟鎹簱涓殑绮惧害锛侊紒锛乀ODO锛� + sb.Append(" step: 0.01,\n"); + sb.Append(" precision: 2, \n"); + } + else if (enumDT == DataTypeEnum.dt_int) + { + //鍒ゆ柇鏄惁鏄笅鎷夌被鍨� + //澧炲姞瀵规灇涓剧被鍨嬬殑鏀寔 + if (param.EnumList?.Count > 0) + { + var findEnumObj = param.EnumList.Where(x => x.EnumAttrName == columnModel.ColumnName).FirstOrDefault(); + if (findEnumObj != null) + { + elment = "select"; + sb.Append(" el: '" + elment + "', \n"); + } + } + else + { + sb.Append(" el: (props: any, { attrs }: SetupContext) => { \n"); + sb.Append(" return h(inputNumber, { { \n"); + sb.Append(" ...props, { \n"); + sb.Append(" clearable: true, { \n"); + sb.Append(" ...attrs, { \n"); + sb.Append(" }) \n"); + sb.Append(" },\n"); + + //閰嶇疆绮惧害锛� + sb.Append(" step: 1,\n"); + sb.Append(" precision: 0, \n"); + } + } + else + { + sb.Append(" el: '" + elment + "', \n"); + } + + sb.Append(" disabled: disabled, \n"); + sb.Append(" placeholder: '璇疯緭鍏�" + columnModel.Description + "', \n"); + if (columnModel.IsNullable == false) + { + sb.Append(" rules: [{required: true, message: '" + columnModel.Description + "涓嶈兘涓虹┖', trigger: 'blur' }], \n"); + } + //娣诲姞绫诲瀷 + //switch (enumDT) + //{ + // case DataTypeEnum.dt_bit: + // case DataTypeEnum.dt_tinyint: + // sb.Append(" options: [{label: '鏄�',value: 'true'}, {label: '鍚�',value: 'false'}] \n"); + // break; + // default: + // break; + //} + sb.Append(" }, \n"); + } + //鍘绘帀鏈�鍚庝竴涓�, + var res = sb.ToString(); + res = res.Substring(0, res.Length - 1); + return res; + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> + /// 鑾峰彇VUE formOptions瀛楃涓�(楂樼骇鏌ヨ涓殑) + /// </summary> + /// <param name="columnModelList"></param> + /// <returns></returns> + public static string GetVueFormOptionsStrForCommonQueryEnumForFrom(List<ColumnModel> columnModelList, GenerateCodeParam param) + { + StringBuilder sb = new StringBuilder(); + try + { + /* + const materialTypeEnum = await wmsMaterialDrawer.getWmsEnumData({ + EnumName: 'MaterialTypeEnum', + }) + updateFormItemOptions('materialType', materialTypeEnum) + + */ + if (param.EnumList?.Count > 0) + { + foreach (var item in param.EnumList) + { + //灞炴�у皬鍐� + var instanceName = CommonHelper.FirstLowercase(item.EnumType); + sb.Append("const "+ instanceName + "Enum = await "+param.PageMenuInstanceName+"Drawer.getWmsEnumData({ \n"); + sb.Append(" EnumName: '" + item.EnumType + "', \n"); + sb.Append("}) \n"); + sb.Append("updateFormItemOptions('\"+ instanceName + \"', \"+ instanceName + \"Enum) \n"); + } + } + var res = sb.ToString(); + return res; + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> + /// 鑾峰彇VUE formOptions瀛楃涓�(楂樼骇鏌ヨ涓殑) + /// </summary> + /// <param name="columnModelList"></param> + /// <returns></returns> + public static string GetVueFormOptionsStrForSave_PageAddFormAttributes(List<ColumnModel> columnModelList, GenerateCodeParam param) + { + StringBuilder sb = new StringBuilder(); + try + { + /* + materialCode: formData.value.materialCode, + */ + List<ColumnModel> newList = ListHelper.RemoveForPageAddFormAttributes(columnModelList); + foreach (var columnModel in newList) + { + sb.Append($"{columnModel.ColumnName}: formData.value.{columnModel.ColumnName}, \n"); + } + //鍘绘帀鏈�鍚庝竴涓�, + var res = sb.ToString(); + res = res.Substring(0, res.Length - 1); + return res; + } + catch (Exception ex) + { + throw ex; + } + } + + public static string GetVueFormOptionsStrForPageAddFormAttributesByOpen(List<ColumnModel> columnModelList, GenerateCodeParam param) + { + StringBuilder sb = new StringBuilder(); + try + { + /* + materialCode: res.materialCode, + */ + List<ColumnModel> newList = ListHelper.RemoveForPageAddFormAttributes(columnModelList); + foreach (var columnModel in newList) + { + sb.Append($"{columnModel.ColumnName}: res.{columnModel.ColumnName}, \n"); + } + //鍘绘帀鏈�鍚庝竴涓�, + var res = sb.ToString(); + res = res.Substring(0, res.Length - 1); + return res; + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> /// 鑾峰彇VUE 瀵煎嚭鏁扮粍瀛楃涓�-姹夊瓧+灞炴�� /// </summary> /// <param name="columnModelList"></param> -- Gitblit v1.9.3