schangxiang@126.com
2025-05-06 71a29934b04038b983772819e129d7c63202e565
2222
已添加4个文件
已修改3个文件
379 ■■■■■ 文件已修改
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/EntityMode_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Generate/Web/Controllers/File_Generate.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/MainForm.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/EntityMode模板.txt 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/Templete/Web/Controllers/File模板.txt 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMS专用代码生成器/Code/常用.txt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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;
        }
    }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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>
Weben_CMSרÓôúÂëÉú³ÉÆ÷/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
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/EntityModeÄ£°å.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
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/Templete/Web/Controllers/FileÄ£°å.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,
  }
}
Weben_CMSרÓôúÂëÉú³ÉÆ÷/Code/³£ÓÃ.txt
@@ -8,3 +8,6 @@
$NameSpacePath$
$EntityInstanceName$
$PageMenuInstanceName$