diff --git a/README.md b/README.md new file mode 100644 index 0000000..c40a0fe --- /dev/null +++ b/README.md @@ -0,0 +1,417 @@ +

+ logo +

+

基于SpringBoot+Vue前后端分离的Java快速开发框架

+

+ star + + + logo + + + + +

+ +## 简介 + +代码生成器是基于数字底座的配置模式延伸出来的开源工具,其中内含一套完整的基于vue3+element-plus的定制化组件,界面风格与数字底座保持统一。代码生成器的目标为帮助开发者和运维者快速生成一套跟数字底座相符的业务后台管理代码,同时利用相同的前端设计标准指导界面开发。代码生成器是一个完全开源的项目,无商业版,但是需要依赖开源的数字底座进行相关人员权限的管控。 + +[系统在线体验----->>>>>](#在线体验) + +## 开源地址 + +源码地址: + +源码目录 + +``` +risenet-y9boot-webapp-code -- 代码生成器后端工程 +vue -- 前端工程 + ├── y9vue-code-generator -- 代码生成器前端工程 +``` + +## 内置功能 + +系统三员是系统默认生成的三个账号,包含系统管理员、安全保密员、安全审计员。 + +系统管理员:主要负责系统的配置和组织人员的管理 + +安全保密员:主要负责权限管理和子域三员管理(部门三员管理)以及查看安全审计员的日志和普通用户的日志 + +安全审计员:主要负责审查系统管理员的日志和安全保密员的日志 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
系统管理员
控制台显示系统的监控统计信息,主要面向用户、应用和日志信息,可根据业务的实际需要进行增改。
组织架构包括组织机构、部门、人员、部门领导的构建和管理,其中对组织、部门、人员进行树结构展现。
组织岗位包括组织机构、部门、岗位、部门领导的构建和管理,其中对组织、部门、岗位进行树结构展现。
应用系统管理对需授权的系统和应用进行构建和管理,支持在系统目录下面添加多级应用。
应用角色管理对系统下属的应用角色进行构建和管理。
公共角色管理对独立于所有系统之外的公共角色进行构建和管理。
应用资源管理对系统下属的应用资源进行构建和管理。应用资源主要包含菜单、按钮等,支持对于内部资源的自由定义。
字典表管理对系统中经常使用的较为固定的数据进行维护和管理。
图标管理对系统中的图标进行构建和管理,系统创建应用的时候可以从该图标库中选择。
权限树内含资源权限树和角色权限树,支持用户以列表和树的形式对全局的人员所持有的资源和角色进行详细查看。
数据目录管理采用组织部门、数据分类、时间周期模板的树形结构方式对数据进行编目设定,从而满足后续数据授权的要求。
子域三员管理支持对于子组织、下属组织、二级组织的三员的构建与管理。
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
安全保密员
应用角色关联展示已经构建的角色,将角色与资源进行绑定授权。
公共角色关联展示已经构建的公共角色,将公共角色与资源进行绑定授权。
应用资源授权展示已经构建的资源,将资源与角色、组织、岗位进行绑定授权。
子域三员管理对下级部门、下级单位的三员授权管理。
用户日志支持审查普通用户的登录日志和操作日志。支持增加针对应用相关的日志审查。
安全审计员日志支持审查安全审计员的登录日志和操作日志。
数据目录授权展示已经构建的数据目录,将数据目录与组织、岗位、角色进行绑定授权。
子域三员授权对已经构建的子域三员进行绑定授权。
+ + + + + + + + + + + + + +
安全审计员
系统管理员日志可以审查系统管理员的登录日志和操作日志。
安全保密员日志可以审查安全保密员的登录日志和操作日志。
+ +## 产品特点 + +### 内置前端框架 + +内置一套以vue+element-plus为基础的适应国产场景的前端框架,提供各类说明、经典布局和组件代码。方便开发者直接拷贝负责、引用从而快速生成统一的界面。同时,支持基于此框架和风格的定制化组件。 + +### 支持模板套用 + +将常用且核心的系统、实体、字段等信息进行模板化管理,方便大量CRUD系统的快速添加和生成,减少配置人员的重复工作量。 + +### 代码生成标准 + +依赖数字底座和单点登录,遵循统一的格式和方法生成代码,可以更好地支持信创数据库、中间件的适配。 + +### 可选择是否实现多租户 + +可以在创建实体的时候选择是否实现多租户,如果需要实现,则默认帮助实现多租户的功能。 + +### 预览功能 + +预览创建的实体会生成哪些文件,以及文件里面的内容。 + +### 索引功能 + +可以选择允许用户在创建实体时添加索引,包括聚合索引和唯一索引,并且在建表的时候自动添加索引。 + +### 生成单个实体相关代码 + +不生成全部代码,只生成选择的实体类的相关代码。 + +## 功能架构图 + +
+ +## 部署架构图 + +
+ +## 功能描述 + +| 序号 | 特点名称 | 特点描述 | +| ---- | -------------------- | ------------------------------------------------------------ | +| 1 | 前端框架说明 | 针对框架功能、目录结构、初始化、单点登录、配置文件、渲染过程、路由配置、路由过程进行图解和文字说明 | +| 2 | 框架路由说明 | 针对静态路由、动态路由和异步路由进行详细说明 | +| 3 | 经典布局 | 提供组织架构、应用系统、职位管理、登录日志等多个经典美观的布局展示 | +| 4 | 组件更新说明 | 每个版本中组件变化的说明 | +| 5 | 组件使用指南 | 针对组件的安装、依赖和国际化方式进行步骤指导 | +| 6 | 通用组件 | 主要包含卡片、弹窗、表单、过滤器、分页、表格、列表、树、图片预览、上传下载等组件(含多种样式)进行展示和代码展示 | +| 7 | 系统、实体、字段管理 | 针对系统基本信息、实体表基本信息、字段信息和配置进行增删改查 | +| 8 | 索引管理 | 支持对已经建立完成的表提前进行索引生成 | +| 9 | 代码生成、预览、下载 | 支持对代码进行生成、预览和下载的功能,支持整体下载,也支持单体下载。 | +| 10 | 模版套用 | 将已经建立的模板一键生成,方便用户在模板之上进行更多的内容增加 | +| 11 | 系统、实体、字段模板 | 针对系统、实体表和字段详细信息进行模板化记录和管理。 | + +## 后端技术选型 + +| 序号 | 依赖 | 版本 | 官网 | +| ---- | --------------- | ------- | ------------------------------------------------------------ | +| 1 | Spring Boot | 2.7.10 | 官网 | +| 2 | SpringDataJPA | 2.7.10 | 官网 | +| 3 | SpringDataRedis | 2.7.10 | 官网 | +| 4 | SpringKafka | 2.8.11 | 官网 | +| 5 | nacos | 2.2.1 | 官网 | +| 6 | druid | 1.2.16 | 官网 | +| 7 | Jackson | 2.13.5 | 官网 | +| 8 | javers | 6.13.0 | 官网 | +| 9 | lombok | 1.18.26 | 官网 | +| 10 | logback | 1.2.11 | 官网 | +| 11 | freemarker | 2.3.32 | [官网](https://freemarker.apache.org/) | + +## 前端技术选型 + +| 序号 | 依赖 | 版本 | 官网 | +| ---- | ------------ | ------- | ------------------------------------------------------------ | +| 1 | vue | 3.3.2 | 官网 | +| 2 | vite4 | 4.4.9 | 官网 | +| 3 | vue-router | 4.0.13 | 官网 | +| 4 | pinia | 2.0.11 | 官网 | +| 5 | axios | 0.24.0 | 官网 | +| 6 | typescript | 4.5.4 | 官网 | +| 7 | core-js | 3.20.1 | 官网 | +| 8 | element-plus | 2.2.29 | 官网 | +| 9 | sass | 1.58.0 | 官网 | +| 10 | animate.css | 4.1.1 | 官网 | +| 11 | vxe-table | 4.3.5 | 官网 | +| 12 | echarts | 5.3.2 | 官网 | +| 13 | svgo | 1.3.2 | 官网 | +| 14 | lodash | 4.17.21 | 官网 | + +## 中间件选型 + +| 序号 | 工具 | 版本 | 官网 | +| ---- | ---------------- | ---- | ------------------------------------------------------------ | +| 1 | JDK | 11 | 官网 | +| 2 | Tomcat | 9.0+ | 官网 | +| 3 | Kafka | 2.6+ | 官网 | +| 4 | filezilla server | 1.7+ | 官网 | + +## 数据库选型 + +| 序号 | 工具 | 版本 | 官网 | +| ---- | ------------- | ---------- | ------------------------------------------------------------ | +| 1 | Mysql | 5.7 / 8.0+ | 官网 | +| 2 | Redis | 6.2+ | 官网 | +| 3 | elasticsearch | 7.9+ | 官网 | + +## 数字底座专利 + +| 序 号 | 专利号 | 专利名称 | +| ---------- | ---------------- | -------------------------------------------------- | +| 1 | ZL202111207338.0 | 《基于集合运算的资源授权方法及资源授权系统》 | +| 2 | ZL202210702228.X | 《一种静默化数据处理方法及处理系统》 | +| 3 | ZL202310030893.3 | 《基于多租户模式下的权限调度方法及调度系统》 | +| 4 | ZL202310238451.8 | 《一种基于前后端分离架构的前端双随机多态混淆方法》 | +| 5 | ZL202310238534.7 | 《多租户模式下数字底座子域三员架构模型的实现方法》 | + +## 信创兼容适配 + +| **序号** | 类型 | 对象 | +| :------- | -------- | -------------------------- | +| 1 | 浏览器 | 奇安信、火狐、谷歌、360等 | +| 2 | 插件 | 金山、永中、数科、福昕等 | +| 3 | 中间件 | 东方通、金蝶、宝兰德等 | +| 4 | 数据库 | 人大金仓、达梦、高斯等 | +| 5 | 操作系统 | 统信、麒麟、中科方德等 | +| 6 | 芯片 | ARM体系、MIPS体系、X86体系 | + +## 在线体验 + +## 模板代码生成 + +地址: + +> 快速生成使用了数字底座相关组件的前后端工程 +> +> 演示账号 +> +> 系统管理员:systemManager 密码:Risesoft@2024 +> + +## 文档专区-TODO + +| 序号 | 名称 | +| :--- | ------------------------------------------------------------ | +| 1 | 单点登录对接文档 | +| 2 | 数字底座接口文档 | +| 3 | | +| 4 | | +| 5 | 数字底座war包部署文档 | +| 6 | 数字底座源码部署文档 | +| 7 | 操作使用文档(技术白皮书) | +| 8 | 数字底座数据库设计文档 | +| 9 | 内部Java开发规范手册 | +| 10 | 日志组件使用文档 | +| 11 | 文件组件使用文档 | +| 12 | 代码生成器使用文档 | +| 13 | 配置文件说明文档 | +| 14 | 常用工具类使用示例文档 | +| 15 | 前端开发手册 | +| 16 | 前端开发规范 | +| 17 | 前端代码格式化 | +| 18 | 前端系统组件 | +| 19 | 前端通用方法 | +| 20 | 前端国际化 | +| 21 | 前端Icon图标 | +| 22 | Oracle数据库适配文档 | +| 23 | Dameng数据库适配文档 | +| 24 | PostgreSQL数据库适配文档 | +| 25 | Kingbase数据库适配文档 | +| 26 | Mariadb数据库适配文档 | +| 27 | OceanBase数据库适配文档 | + +## 代码生成器截图 + +### 界面截图 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +## 依赖开源项目 + +| 序 号 | 项 目 名 称 | 项目介绍 | 地 址 | +| ----- | ----------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 数字底座 | 数字底座是一款面向大型政府、企业数字化转型,基于身份认证、组织架构、岗位职务、应用系统、资源角色等功能构建的统一且安全的管理支撑平台。数字底座基于三员管理模式,具备微服务、多租户、容器化和国产化,支持用户利用代码生成器快速构建自己的业务应用,同时可关联诸多成熟且好用的内部生态应用 | 码云GitHub | + +## 生态开源项目 + +| 序 号 | 项 目 名 称  | 项目介绍 | 地 址 | +| :--------- | -------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 工作流引擎 | 工作流引擎对内提供单位/机关流程管理规则和内部业务流程的数字化落地实践;对外提供自动化地第三方业务驱动、接口接入和算法单元驱动能力;工作流引擎在提供底层驱动引擎的同时对全局透明监控、安全防御和国产化特色功能进行充分考虑,是内部流程管理和业务算法驱动的不二之选。 | [码云](https://gitee.com/risesoft-y9/y9-flowable) [GitHub](https://github.com/risesoft-y9/WorkFlow-Engine) | +| 2 | 数据流引擎 | 数据流引擎是一款面向数据集成、数据同步、数据交换、数据共享、任务配置、任务调度的底层数据驱动引擎。数据流引擎采用管执分离、多流层、插件库等体系应对大规模数据任务、数据高频上报、数据高频采集、异构数据兼容的实际数据问题。 | [码云](https://gitee.com/risesoft-y9/y9-dataflow) [GitHub](https://github.com/risesoft-y9/DataFlow-Engine) | +| 3 | 网络硬盘 | 网络硬盘是通过存储、分类、检索、分享、协作、下发、回收等方式管理文档、文件、图片、音频、视频等资料的工具。网络硬盘擅长在国产的私有化环境中,管控文档权限、分配存储空间、安全加密、分享共享,同时可以完成一定轻量级的文件任务收发。网络硬盘是一个完全开源的项目,无商业版,但是需要依赖开源的数字底座进行人员岗位管控。 | [码云](https://gitee.com/risesoft-y9/y9-storage) [GitHub](https://github.com/risesoft-y9/Network-Drive) | +| 4 | 电子邮件 | 电子邮件是一款简化的具备邮件服务器的企业邮箱,支持在将其他主流邮箱的邮件进行导入后自主控制邮件数据安全。电子邮件以其简洁精确的功能和小巧安全的架构方便根据企业和政府机构的业务要求进行二次开发。电子邮件是一个完全开源的项目,无商业版,但是需要依赖开源的数字底座进行人员岗位管控。 | [码云](https://gitee.com/risesoft-y9/y9-email) [GitHub](https://github.com/risesoft-y9/Email) | +| 5 | 数据标注 | 数据标注是一款专门对文本数据进行处理和标注的工具,通过简化快捷的文本标注流程和动态的算法反馈,支持用户快速标注关键词并能通过算法持续减少人工标注的成本和时间。数据标注的过程先由人工标注构筑基础,再由自动标注反哺人工标注,最后由人工标注进行纠偏,从而大幅度提高标注的精准度和高效性。数据标注是一个完全开源的项目,无商业版,但是需要依赖开源的数字底座进行人员岗位管控。数据标注的各类词库结果会定期在本平台中公开。 | [码云](https://gitee.com/risesoft-y9/y9-label) [GitHub](https://github.com/risesoft-y9/Data-Labeling) | +| 6 | 接口管理 | 接口管理通过接口的注册、审批、集市和日志等方式对接口共享进行全生命周期的管理。接口管理注重流程化的接口共享模式和支持大规模接口转发的部署模式,从而面向多接口来源、高流量交互和复杂组织结构的场景。接口管理同时是一个轻量化的内核,支持各种面向特定场景的定制化业务改造。接口管理是一个完全开源的项目,无商业版,但是需要依赖开源的数字底座进行相关目录权限的管控。 | [码云](https://gitee.com/risesoft-y9/y9-interface-platform) [GitHub](https://github.com/risesoft-y9/Interface-Platform) | + +## 赞助与支持 + +### 中关村软件和信息服务产业创新联盟 + +官网:https://www.zgcsa.net + +### 北京有生博大软件股份有限公司 + +官网:https://www.risesoft.net/ + +### 统一标识代码注册管理中心 + +官网:https://www.idcode.org.cn/ + +>数字底座已经全面接入统一标识码(MA码),具体使用说明请查看:https://gitee.com/risesoft-y9/y9-core/tree/main/y9-digitalbase-idcode + +### 中国城市发展研究会 + +官网:https://www.china-cfh.com/ + +### 北京超维创想信息技术有限公司 + +官网:http://www.creatar.com/ + +### 深圳市北斗云信息技术有限公司 + +官网:https://www.northdoo.com/ + +## 咨询与合作 + +联系人:曲经理 + +微信号:qq349416828 + +备注:开源咨询-姓名 + +
+联系人:有生博大-咨询热线 + + +座机号:010-86393151 + +
+ diff --git a/risenet-y9boot-webapp-code/src/main/java/net/risesoft/y9public/service/Y9CodeSystemService.java b/risenet-y9boot-webapp-code/src/main/java/net/risesoft/y9public/service/Y9CodeSystemService.java index 8a14e8c..e7b60c6 100644 --- a/risenet-y9boot-webapp-code/src/main/java/net/risesoft/y9public/service/Y9CodeSystemService.java +++ b/risenet-y9boot-webapp-code/src/main/java/net/risesoft/y9public/service/Y9CodeSystemService.java @@ -54,6 +54,7 @@ public interface Y9CodeSystemService { */ Page page(int page, int rows); + /** * @description 分页获取 * diff --git a/risenet-y9boot-webapp-code/src/main/resources/application.yml b/risenet-y9boot-webapp-code/src/main/resources/application.yml index cc4fd97..9d37699 100644 --- a/risenet-y9boot-webapp-code/src/main/resources/application.yml +++ b/risenet-y9boot-webapp-code/src/main/resources/application.yml @@ -49,7 +49,7 @@ spring: druid: y9-public: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/y9_public?serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true&useCompression=true&useSSL=false&allowPublicKeyRetrieval=true + url: jdbc:mysql://192.168.3.31:3306/y9_public?serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true&useCompression=true&useSSL=false&allowPublicKeyRetrieval=true username: root #driver-class-name: oracle.jdbc.OracleDriver #url: jdbc:oracle:thin:@127.0.0.1:1521:orcl @@ -122,25 +122,25 @@ y9: systemName: code service: org: - directUrl: http://localhost:8080/org + directUrl: http://test-api-internal.youshengyun.com common: cacheEnabled: true kafkaEnabled: true - orgBaseUrl: http://localhost:8080/platform - y9DigitalBaseUrl: http://localhost:8080/y9DigitalBase - userOnlineBaseUrl: http://localhost:8080/userOnline - logBaseUrl: http://localhost:8080/log + orgBaseUrl: http://test-api-internal.youshengyun.com/platform + y9DigitalBaseUrl: http://test-api-internal.youshengyun.com/y9DigitalBase + userOnlineBaseUrl: http://test-api-internal.youshengyun.com/userOnline + logBaseUrl: http://test-api-internal.youshengyun.com/log feature: file: rest: - fileManagerUrl: http://localhost:8080/fileManager + fileManagerUrl: http://test-api-internal.youshengyun.com/fileManager base64FileName: false encryptionFileContent: false ftp: - host: localhost + host: 192.168.3.31 port: 21 - username: user - password: password + username: y9admin + password: '83204585' blockWhenExhausted: true bufferSize: 10240 connectTimeOut: 50000 @@ -205,6 +205,6 @@ y9: #- 客户端密钥,由认证服务提供商分配 client-secret: secret #- 认证服务器验证访问令牌有效性的路径 - introspection-uri: http://localhost:7055/sso/oauth2.0/introspect + introspection-uri: https://test.youshengyun.com/sso/oauth2.0/introspect #- 认证服务器获取用户信息路径 - profile-uri: http://localhost:7055/sso/oauth2.0/profile + profile-uri: https://test.youshengyun.com/sso/oauth2.0/profile diff --git a/vue/y9vue-code-generator/src/router/checkRouter.js b/vue/y9vue-code-generator/src/router/checkRouter.js index a023f12..346acb9 100644 --- a/vue/y9vue-code-generator/src/router/checkRouter.js +++ b/vue/y9vue-code-generator/src/router/checkRouter.js @@ -119,7 +119,7 @@ export const routerBeforeEach = async (to, from) => { } let path = to.path; let CHECK; - if (path == '/system' || path == '/localSystem') { + if (path == '/system' || path == '/localSystem' || path == '/localTemplate') { CHECK = await check(); } else { CHECK = (await checkRole(['systemAdmin'])) ? true : false; diff --git a/vue/y9vue-code-generator/src/router/index.ts b/vue/y9vue-code-generator/src/router/index.ts index 9d33142..a26069b 100644 --- a/vue/y9vue-code-generator/src/router/index.ts +++ b/vue/y9vue-code-generator/src/router/index.ts @@ -10,7 +10,7 @@ import { routerBeforeEach } from '@/router/checkRouter'; import NProgress from 'nprogress'; import { createRouter, createWebHistory } from 'vue-router'; -import systemRouter from '@/router/modules/systemRouter'; +import localTemplateRouter from '@/router/modules/localTemplateRouter'; import localSystemRouter from '@/router/modules/localSystemRouter'; import frontFrameRouter from '@/router/modules/frontFrameRouter'; //constantRoutes为不需要动态判断权限的路由,如登录、404、500等 @@ -42,7 +42,8 @@ export const constantRoutes: Array = [ //asyncRoutes需求动态判断权限并动态添加的页面 这里的路由模块顺序也是菜单显示的顺序(位置:src->router->modules) export const asyncRoutes = [ frontFrameRouter, - localSystemRouter + localSystemRouter, + localTemplateRouter ]; // 引入其他模块路由 diff --git a/vue/y9vue-code-generator/src/router/modules/frontFrameRouter.ts b/vue/y9vue-code-generator/src/router/modules/frontFrameRouter.ts index 7ad6346..b6e8fb2 100644 --- a/vue/y9vue-code-generator/src/router/modules/frontFrameRouter.ts +++ b/vue/y9vue-code-generator/src/router/modules/frontFrameRouter.ts @@ -22,7 +22,7 @@ const frontFrameRouter = { component: () => import('@/views/frontFrame/frameDes/index.vue'), name: 'frameDes', meta: { - title: '前端框架模版', + title: '前端框架说明', icon: 'ri-file-cloud-line', environment: 2 } @@ -42,7 +42,7 @@ const frontFrameRouter = { redirect: '/frontFrame/classicLayout/org', name: 'classicLayout', meta: { - title: '数字底座经典布局', + title: '经典布局', icon: 'ri-layout-2-line', environment: 2 }, @@ -141,153 +141,166 @@ const frontFrameRouter = { ] }, { - path: '/frontFrame/y9Card', - component: () => import('@/views/frontFrame/y9Card/index.vue'), - name: 'y9Card', + path: '/frontFrame/universalComponent', + redirect: '/frontFrame/y9Card', + name: 'universalComponent', meta: { - title: 'Card 卡片', - icon: 'ri-hard-drive-2-line', - environment: 2 - } - }, - { - path: '/frontFrame/y9Dialog', - component: () => import('@/views/frontFrame/y9Dialog/index.vue'), - name: 'y9Dialog', - meta: { - title: 'Dialog 弹窗', - icon: 'ri-window-line', - environment: 2 - } - }, - { - path: '/frontFrame/y9Form', - component: () => import('@/views/frontFrame/y9Form/index.vue'), - name: 'y9Form', - meta: { - title: 'Form 表单', - icon: 'ri-profile-line', - environment: 2 - } - }, - { - path: '/frontFrame/y9Filter', - component: () => import('@/views/frontFrame/y9Filter/index.vue'), - name: 'y9Filter', - meta: { - title: 'Filter 过滤', - icon: 'ri-filter-line', - environment: 2 - } - }, - { - path: '/frontFrame/y9Pagination', - component: () => import('@/views/frontFrame/y9Pagination/index.vue'), - name: 'y9Pagination', - meta: { - title: 'Pagination 分页', - icon: 'ri-page-separator', - environment: 2 - } - }, - { - path: '/frontFrame/y9Table', - redirect: '/frontFrame/y9Table/install', - name: 'y9Table', - meta: { - title: '表格', - icon: 'ri-table-2', + title: '通用组件', + icon: 'ri-compass-line', environment: 2 }, children: [ { - path: '/frontFrame/y9Table/y9Table', - component: () => import('@/views/frontFrame/y9Table/eltable.vue'), - name: 'y9Table1', + path: '/frontFrame/y9Card', + component: () => import('@/views/frontFrame/y9Card/index.vue'), + name: 'y9Card', meta: { - title: 'y9Table 表格', - icon: 'ri-table-2' + title: 'Card 卡片', + icon: 'ri-hard-drive-2-line', + environment: 2 } }, { - path: '/frontFrame/y9Table/y9VxeTable', - component: () => import('@/views/frontFrame/y9Table/vxetable.vue'), - name: 'y9VxeTable', + path: '/frontFrame/y9Dialog', + component: () => import('@/views/frontFrame/y9Dialog/index.vue'), + name: 'y9Dialog', meta: { - title: 'y9VxeTable 表格', - icon: 'ri-table-2' + title: 'Dialog 弹窗', + icon: 'ri-window-line', + environment: 2 } + }, + { + path: '/frontFrame/y9Form', + component: () => import('@/views/frontFrame/y9Form/index.vue'), + name: 'y9Form', + meta: { + title: 'Form 表单', + icon: 'ri-profile-line', + environment: 2 + } + }, + { + path: '/frontFrame/y9Filter', + component: () => import('@/views/frontFrame/y9Filter/index.vue'), + name: 'y9Filter', + meta: { + title: 'Filter 过滤', + icon: 'ri-filter-line', + environment: 2 + } + }, + { + path: '/frontFrame/y9Pagination', + component: () => import('@/views/frontFrame/y9Pagination/index.vue'), + name: 'y9Pagination', + meta: { + title: 'Pagination 分页', + icon: 'ri-page-separator', + environment: 2 + } + }, + { + path: '/frontFrame/y9Table', + redirect: '/frontFrame/y9Table/install', + name: 'y9Table', + meta: { + title: '表格', + icon: 'ri-table-2', + environment: 2 + }, + children: [ + { + path: '/frontFrame/y9Table/y9Table', + component: () => import('@/views/frontFrame/y9Table/eltable.vue'), + name: 'y9Table1', + meta: { + title: 'y9Table 表格', + icon: 'ri-table-2' + } + }, + { + path: '/frontFrame/y9Table/y9VxeTable', + component: () => import('@/views/frontFrame/y9Table/vxetable.vue'), + name: 'y9VxeTable', + meta: { + title: 'y9VxeTable 表格', + icon: 'ri-table-2' + } + } + ] + }, + + { + path: '/frontFrame/y9List', + component: () => import('@/views/frontFrame/y9List/index.vue'), + name: 'y9List', + meta: { + title: 'List 列表', + icon: 'ri-list-unordered', + environment: 2 + } + }, + { + path: '/frontFrame/y9Tree', + component: () => import('@/views/frontFrame/y9Tree/index.vue'), + name: 'y9Tree', + meta: { + title: 'y9Tree 树', + icon: 'ri-node-tree', + environment: 2 + } + }, + { + path: '/frontFrame/viewer', + component: () => import('@/views/frontFrame/v-viewer/index.vue'), + name: 'viewer', + meta: { + title: 'v-viewer 图片预览插件', + icon: 'ri-image-line', + environment: 2 + } + }, + { + path: '/frontFrame/y9Upload', + redirect: '/frontFrame/y9Upload/install', + meta: { + title: 'y9Upload 上传', + icon: 'ri-folder-upload-line' + }, + children: [ + { + path: '/frontFrame/y9UploadOne', + component: () => import('@/views/frontFrame/y9Upload/uploadOne.vue'), + name: 'y9UploadOne', + meta: { + title: 'y9Upload 上传样式一', + icon: 'ri-node-tree' + } + }, + { + path: '/frontFrame/y9UploadTwo', + component: () => import('@/views/frontFrame/y9Upload/uploadTwo.vue'), + name: 'y9UploadTwo', + meta: { + title: 'y9Upload 上传样式二', + icon: 'ri-node-tree' + } + }, + { + path: '/frontFrame/y9Uploader', + component: () => import('@/views/frontFrame/y9Upload/uploadThree.vue'), + name: 'uploadThree', + meta: { + title: 'y9Upload 上传样式三', + icon: 'ri-node-tree' + } + } + ] } ] }, - { - path: '/frontFrame/y9List', - component: () => import('@/views/frontFrame/y9List/index.vue'), - name: 'y9List', - meta: { - title: 'List 列表', - icon: 'ri-list-unordered', - environment: 2 - } - }, - { - path: '/frontFrame/y9Tree', - component: () => import('@/views/frontFrame/y9Tree/index.vue'), - name: 'y9Tree', - meta: { - title: 'y9Tree 树', - icon: 'ri-node-tree', - environment: 2 - } - }, - { - path: '/frontFrame/viewer', - component: () => import('@/views/frontFrame/v-viewer/index.vue'), - name: 'viewer', - meta: { - title: 'v-viewer 图片预览插件', - icon: 'ri-image-line', - environment: 2 - } - }, - { - path: '/frontFrame/y9Upload', - redirect: '/frontFrame/y9Upload/install', - meta: { - title: 'y9Upload 上传', - icon: 'ri-folder-upload-line' - }, - children: [ - { - path: '/frontFrame/y9UploadOne', - component: () => import('@/views/frontFrame/y9Upload/uploadOne.vue'), - name: 'y9UploadOne', - meta: { - title: 'y9Upload 上传样式一', - icon: 'ri-node-tree' - } - }, - { - path: '/frontFrame/y9UploadTwo', - component: () => import('@/views/frontFrame/y9Upload/uploadTwo.vue'), - name: 'y9UploadTwo', - meta: { - title: 'y9Upload 上传样式二', - icon: 'ri-node-tree' - } - }, - { - path: '/frontFrame/y9Uploader', - component: () => import('@/views/frontFrame/y9Upload/uploadThree.vue'), - name: 'uploadThree', - meta: { - title: 'y9Upload 上传样式三', - icon: 'ri-node-tree' - } - } - ] - } ] }; export default frontFrameRouter; diff --git a/vue/y9vue-code-generator/src/router/modules/localSystemRouter.ts b/vue/y9vue-code-generator/src/router/modules/localSystemRouter.ts index 932c2a2..5b89f7d 100644 --- a/vue/y9vue-code-generator/src/router/modules/localSystemRouter.ts +++ b/vue/y9vue-code-generator/src/router/modules/localSystemRouter.ts @@ -1,31 +1,24 @@ -/* - * @Author: lizhiwen - * @Date: 2022-05-19 14:01:58 - * @LastEditors: lizhiwen - * @LastEditTime: 2022-05-19 14:04:42 - * @Description: 首页路由 - */ - const systemRouter = { - path: '/localSystem', - component: () => import('@/layouts/index.vue'), - redirect: '/localSystem', - name: 'localSystemIndex', - meta: { - title: '应用生成', - environment: 1 - }, - children: [ - { - path: '/localSystem', - component: () => import('@/views/system/index.vue'), - name: 'localSystemIndex1', - meta: { - title: '应用生成', - icon: 'ri-function-line', - environment: 1 + path: '/localSystem', + component: () => import('@/layouts/index.vue'), + redirect: '/localSystem', + name: 'localSystemIndex', + meta: { + title: '应用生成', + environment: 1 + }, + children: [ + { + path: '/localSystem', + component: () => import('@/views/system/index.vue'), + name: 'localSystemIndex1', + meta: { + title: '应用生成', + icon: 'ri-function-line', + environment: 1 + } } - } - ] + ], + }; export default systemRouter; diff --git a/vue/y9vue-code-generator/src/router/modules/localTemplateRouter.ts b/vue/y9vue-code-generator/src/router/modules/localTemplateRouter.ts new file mode 100644 index 0000000..d74e7b7 --- /dev/null +++ b/vue/y9vue-code-generator/src/router/modules/localTemplateRouter.ts @@ -0,0 +1,23 @@ +const localTemplateRouter = { + path: '/localTemplate', + component: () => import('@/layouts/index.vue'), + redirect: '/localTemplate', + name: 'localTemplateIndex', + meta: { + title: '模板管理', + environment: 1 + }, + children: [ + { + path: '/localTemplate', + component: () => import('@/views/template/index.vue'), + name: 'localTemplate', + meta: { + title: '模板管理', + icon: 'ri-align-item-left-line', + environment: 1 + } + } + ], +}; +export default localTemplateRouter; diff --git a/vue/y9vue-code-generator/src/router/modules/systemRouter.ts b/vue/y9vue-code-generator/src/router/modules/systemRouter.ts deleted file mode 100644 index e71b707..0000000 --- a/vue/y9vue-code-generator/src/router/modules/systemRouter.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * @Author: lizhiwen - * @Date: 2022-05-17 18:01:58 - * @LastEditors: lizhiwen - * @LastEditTime: 2022-05-17 18:04:42 - * @Description: 首页路由 - */ - -const systemRouter = { - path: '/system', - component: () => import('@/layouts/index.vue'), - redirect: '/system', - name: 'systemIndex', - meta: { - title: '应用生成(云服务)', - environment: 0 - }, - children: [ - { - path: '/system', - component: () => import('@/views/system/index.vue'), - name: 'systemIndex1', - meta: { - title: '应用生成(云服务)', - icon: 'ri-apps-line', - environment: 0 - } - } - ] -}; -export default systemRouter; diff --git a/vue/y9vue-code-generator/src/views/system/comps/baseInfo.vue b/vue/y9vue-code-generator/src/views/system/comps/baseInfo.vue index 0bf24e0..4b8f6e1 100644 --- a/vue/y9vue-code-generator/src/views/system/comps/baseInfo.vue +++ b/vue/y9vue-code-generator/src/views/system/comps/baseInfo.vue @@ -149,7 +149,7 @@ options: [], render: () => { //text类型渲染的内容 - return h('span', systemInfo.value?.environment == '0' ? t('云服务') : t('本地化')); + return h('span', t('本地化')); } } }, @@ -205,13 +205,8 @@ //根据environment值改变选项 if (isEdit && item.prop == 'environment') { item.props.options = []; - if (systemInfo.value?.environment == '1') { - item.props.options.push({ label: '本地化', value: 1 }); - item.props.options.push({ label: '云服务', value: 0 }); - } else { - item.props.options.push({ label: '云服务', value: 0 }); - item.props.options.push({ label: '本地化', value: 1 }); - } + + item.props.options.push({ label: '本地化', value: 1 }); } }); } diff --git a/vue/y9vue-code-generator/src/views/system/comps/entityList.vue b/vue/y9vue-code-generator/src/views/system/comps/entityList.vue index e30bad5..c90b7aa 100644 --- a/vue/y9vue-code-generator/src/views/system/comps/entityList.vue +++ b/vue/y9vue-code-generator/src/views/system/comps/entityList.vue @@ -6,6 +6,7 @@ @on-curr-page-change="onEntityCurrPageChange" @on-page-size-change="onEntityPageSizeChange" @on-change="handlerGetData" + v-model:selectedVal="selectedVal" >