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