schangxiang@126.com
2025-05-06 e0f7bd33a83f75a08c84727fde656a5ec470a344
fasasdfasd
已添加2个文件
已修改4个文件
469 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityModeDrawer_Generate.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityModeDrawer模板.txt 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/ListHelper.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Utility/StructStrHelper.cs 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/EntityModeDrawerÄ£°å.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,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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>
        /// èŽ·å–æœ€æ–°çš„åˆ—List集合(去掉 Id,CreateId,ModifyId)
        /// </summary>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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");
                        //配置精度?这里需要获取数据库中的精度!!!TODO:
                        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>