diff --git a/web-vue/.editorconfig b/web-vue/.editorconfig new file mode 100644 index 00000000..392a883a --- /dev/null +++ b/web-vue/.editorconfig @@ -0,0 +1,28 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 2 +max_line_length = 100 + +[*.{ts,mts,tsx,vue}] +ij_typescript_use_chained_calls_group_indents = false +ij_typescript_use_double_quotes = false +ij_typescript_use_explicit_js_extension = auto +ij_typescript_use_import_type = auto +ij_typescript_use_path_mapping = always +ij_typescript_use_public_modifier = false +ij_typescript_use_semicolon_after_statement = true + +[*.{yml,yaml,json}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/web-vue/.gitee/ISSUE_TEMPLATE.zh-CN.md b/web-vue/.gitee/ISSUE_TEMPLATE.zh-CN.md new file mode 100644 index 00000000..e62376c3 --- /dev/null +++ b/web-vue/.gitee/ISSUE_TEMPLATE.zh-CN.md @@ -0,0 +1,22 @@ +### 是什么问题、该问题是怎么引起的? + +1. + +### 重现步骤、期望结果、截图、代码 + +1. +``` +这里贴你的代码块 +``` + +### 实际结果、报错信息、截图 + +1. +``` +这里贴错误信息 +``` + +### 环境版本: + +- 浏览器版本:Chrome xx、Firefox xx、其它 +- 平台版本:JeeSite 4.x.x、5.x.x(package.json里查看) diff --git a/web-vue/.gitignore b/web-vue/.gitignore new file mode 100644 index 00000000..9599e3ce --- /dev/null +++ b/web-vue/.gitignore @@ -0,0 +1,36 @@ +node_modules +Thumbs.db +.DS_Store +.vercel +.turbo +.cache +dist + +upgrade + +# Test files +tests/server/static +tests/server/static/upload +coverage + +# Local files +.local +.env.local +.env.*.local +.eslintcache + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +vite.config.ts.timestamp* + +# IDE files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +*.iml diff --git a/web-vue/.npmrc b/web-vue/.npmrc new file mode 100644 index 00000000..746ac7dd --- /dev/null +++ b/web-vue/.npmrc @@ -0,0 +1,5 @@ +@jeesite:registry=https://maven.jeesite.net/repository/npm-package/ +registry=https://registry.npmmirror.com +package-manager-strict=false +auto-install-peers = true +git-checks=false diff --git a/web-vue/.prettierignore b/web-vue/.prettierignore new file mode 100644 index 00000000..136f2fc8 --- /dev/null +++ b/web-vue/.prettierignore @@ -0,0 +1,14 @@ +dist +public +node_modules + +.local +.npmrc +.output.js + +*.sh +*.md +*.svg +*.html +*.json +*-lock.yaml diff --git a/web-vue/.prettierrc.mjs b/web-vue/.prettierrc.mjs new file mode 100644 index 00000000..987cd1c4 --- /dev/null +++ b/web-vue/.prettierrc.mjs @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + * @author ThinkGem + */ +export default { + printWidth: 120, + tabWidth: 2, + useTabs: false, + semi: true, + vueIndentScriptAndStyle: true, + singleQuote: true, + quoteProps: 'as-needed', + bracketSpacing: true, + trailingComma: 'all', + jsxSingleQuote: false, + arrowParens: 'always', + insertPragma: false, + requirePragma: false, + proseWrap: 'preserve', + htmlWhitespaceSensitivity: 'strict', + endOfLine: 'auto', + plugins: ['prettier-plugin-packagejson'], + overrides: [ + { + files: '.*rc', + options: { + parser: 'json', + }, + }, + ], +}; diff --git a/web-vue/.stylelintignore b/web-vue/.stylelintignore new file mode 100644 index 00000000..9e3d42bb --- /dev/null +++ b/web-vue/.stylelintignore @@ -0,0 +1,6 @@ +dist +public +node_modules + +*.sh +*.md diff --git a/web-vue/LICENSE b/web-vue/LICENSE new file mode 100644 index 00000000..233ef956 --- /dev/null +++ b/web-vue/LICENSE @@ -0,0 +1,223 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2013-Now, http://jeesite.com (thinkgem@163.com). + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +============================================================================ + +授权许可补充协议条款: + +1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。 +2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。 +3. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者 + 规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息) + 更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。 +4. 基于本软件的作品,只能使用 JeeSite5 作为后台服务,除外情况不可商用且不允许二次分发或开源。 +5. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置 + 说明出处,举例:本软件基于 JeeSite Vue 快速开发平台,并附带链接:http://jeesite.com +6. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。 +7. 如果你对本软件有改进,希望可以贡献给我们,共同进步。 +8. 本项目已申请软件著作权,请尊重开源,感谢阅读。 + +版权所有:济南卓源软件有限公司 + +官方网址:http://jeesite.com + +技术服务:http://s.jeesite.com diff --git a/web-vue/README.md b/web-vue/README.md new file mode 100644 index 00000000..6b5e53c9 --- /dev/null +++ b/web-vue/README.md @@ -0,0 +1,819 @@ + + +

+ JeeSite +

+

+ JeeSite Vue3 前端源码
+ 使用 Turborepo、Monorepo、pnpm
+ 快速构建、模块化、代码复用、高效管理 +

+

+ TypeScript-Vue3 + Ant Design Vue-V4.x + JeeSite-V5.x + star + star + star + star +

+ +------ + +
+ 如果你喜欢 JeeSite,请给她一个 ⭐️ Star,您的支持将是我们前行的动力。 +
+ +------ + +1. 单仓多包 pnpm + Turborepo 涡轮增压,提升编译速度,方便统一管理脚本任务 +2. 按功能模块进行拆分为不同的包,方便进行团队开发源码管理,可根据需要进行发包 +3. 模块之间松耦合,单依赖,公共模块,公共组件,公共工具,方便代码复用 +4. 可方便从传统架构版本,升级到 Monorepo 模块化、分包架构 + +## 技术交流 + +* 官方网站: +* 使用文档: +* 问题反馈:[http://jeesite.net](https://gitee.com/thinkgem/jeesite5/issues/new)  |  + [gitcode](https://gitcode.com/thinkgem/jeesite/issues/create/choose)  |  + [新手必读](https://gitee.com/thinkgem/jeesite5/issues/I18ARR) +* 联系我们: +* 关注微信公众号,了解最新动态: + +

+  JeeSite微信公众号 +

+ +* QQ 群:`127515876`、`209330483`、`223507718`、`709534275`、`730390092`、`1373527`、`183903863(外包)` +* 微信群:如果二维码过期,请尝试点击图片并F5刷新,或者添加客服微信 jeesitex 邀请您进群 + +

+  JeeSite微信群 +

+ +* 后端源码仓库地址: + [Gitee](https://gitee.com/thinkgem/jeesite5)、 + [GitCode](https://gitcode.com/thinkgem/jeesite5)、 + [GitHub](https://github.com/thinkgem/jeesite5) +* 前端源码仓库地址: + [Gitee](https://gitee.com/thinkgem/jeesite-vue)、 + [GitCode](https://gitcode.com/thinkgem/jeesite-vue)、 + [GitHub](https://github.com/thinkgem/jeesite-vue) +* 源码合集仓库地址: + [GVP](https://gitee.com/thinkgem/jeesite/tree/main)、 + [G-Star](https://gitcode.com/thinkgem/jeesite/tree/main)、 + [GitHub](https://github.com/thinkgem/jeesite/tree/main) + +## 平台介绍 + +* JeeSite 快速开发平台,低代码,轻量级,不仅仅是一个后台开发框架,它是一个企业级快速开发解决方案,后端基于经典组合 Spring Boot、Shiro、MyBatis,前端采用分离版 Vue3、Vite、Monorepo、Ant Design Vue、TypeScript、Vben Admin 最先进技术栈,或者 Beetl、Bootstrap、AdminLTE 经典开发模式。 + +* 提供在线数据源管理、数据表建模、代码生成等功能,可自动创建业务模块代码工程和微服务模块代码工程,自动生成前端代码和后端代码;包括核心功能模块如:组织机构、用户、角色、岗位、管理员、权限审计、菜单及按钮权限、数据权限、模块管理、系统参数、字典管理、系统监控、数据监控等;扩展功能如:工作流引擎、内容管理、消息推送、单点登录、第三方登录、在线作业调度、对象存储、可视化数据大屏、报表设计器、在线文件预览、国际化、全文检索、统一认证服务等。 + +* 本平台采用松耦合设计,真正的轻量级,微内核,快速部署,插件架构,模块增减便捷,支持扩展 SaaS 架构、集群部署、读写分离、分库分表、Spring Cloud 微服务架构;并内置了众多账号安全设置、密码策略、系统访问限制等安全解决方案,支持等保评测。 + +* 本平台专注于为初级研发人员提供强大的支持,使他们能够高效、快速地开发出复杂的业务功能,同时为中高级人员腾出宝贵的时间,专注于更具战略性和创新性的任务。我们致力于让开发者能够全心投入业务逻辑中,而将繁琐的技术细节交由平台来封装处理。这不仅降低了技术实现的难度,还确保了系统架构的稳定性和安全性,进而帮助企业节省人力成本、缩短项目周期,并提高整体软件的安全性和质量。 + +* 2013 年发布以来已被广大爱好者用到了企业、政府、医疗、金融、互联网等各个领域中,拥有:精良架构、易于扩展、大众思维的设计模式,工匠精神,用心打磨每一个细节,深入开发者的内心,并荣获开源中国《最受欢迎中国开源软件》多次奖项,期间也帮助了不少刚毕业的大学生,教师作为入门教材,快速的去实践。 + +* 2019 年换代升级,我们结合了多年总结和经验,以及各方面的应用案例,对架构完成了一次全部重构,也纳入很多新的思想。不管是从开发者模式、底层架构、逻辑处理还是到用户界面,用户交互体验上都有很大的进步,在不忘学习成本、提高开发效率的情况下,安全方面也做和很多工作,包括:身份认证、密码策略、安全审计、日志收集等众多安全选项供您选择。努力为大中小微企业打造全方位企业级快速开发解决方案。 + +* 2021 年终发布 Vue3 的前后分离版本,使得 JeeSite 拥有同一个后台服务 Web 来支撑分离版和全栈版两套前端技术栈。 + +* 对接 OpenAPI、Ollama、DeepSeek 等热门 AI 大模型,凭借检索增强生成 RAG 技术,为企业知识库打造专属智能对话。 + +* 提供大模型 Tool 本地工具调用及 MCP 服务端和客户端工具调用,助力大模型与您的业务深度融合,实现高效交互。 + +* 支持国产化软件和硬件环境,如国产芯片、操作系统、数据库、中间件、国密算法等。 + +## 核心优势 + +* JeeSite 非常易于二次开发,可控性高,整体架构清晰、技术稳定而先进、源代码书写规范、经典技术会的人多、易于维护、易于扩展、安全稳定。 + +* JeeSite 功能全,知识点非常多,也非常少。因为她使用的都是一些通用的技术,通俗的设计风格,大多数基础知识点,多数人都能掌握,所以每一个 JeeSite 的功能点都非常容易掌握。只要您学会使用这些功能和组件的应用,就可以顺利地完成系统开发了。 + +* JeeSite 是一个低代码开发平台,具有较高的封装度、扩展性,封装不是限制您去做一些事情,而是在便捷的同时,也具有较好的扩展性,在不具备一些功能的情况下,JeeSite 提供了扩展接口,提供了原生调用方法。 + +* 大家都在用 Spring,也在学习 Spring 的优点,Spring 提供了较好的扩展性,可又有多少人去修改它的源代码呢,退一步说,大家去修改了 Spring 的源码,反而会对未来升级造成很大困扰,您说不是呢?这样的例子很多,所以不要纠结,我们非常注重这一点,JeeSite 也一样具备强大的扩展性。为你解决升级的困扰。 + +* 为什么说 JeeSite 比较易于学习?JeeSite 很好的把握了设计的 “度”,避免过度设计的情况。过度设计是在产品设计过程中忽略了产品和用户的实际需求,反而带来了不必要的复杂性,而忽略了系统的学习、开发和维护成本。 + +------ + +* 至今 JeeSite 平台架构已经非常稳定,我们持续升级,并不失架构的先进性。 +* JeeSite 精益求精,用心打磨每一个细节,界面 UI 操作便捷,体验性好。 +* JeeSite 是一个专业的平台,是一个可以让您,用着省心的平台。 +* 社区版基于 Apache License 2.0 开源协议,永久免费使用。 + +### 架构特点及安全方面的优势: + +## Vue 前端简介 + +基于 Vue3、Vite、Ant-Design-Vue、TypeScript 和 Vue Vben Admin 等前沿技术栈构建,本软件采用最先进的技术架构, +帮助初学者快速上手并融入团队开发。内置组织机构、角色用户、菜单授权、数据权限、系统参数等核心模块,结合强大的组件封装 +与数据驱动视图设计,为微小、中大型项目提供开箱即用的解决方案和丰富的示例,助力高效开发。 + +用户界面专为信息化管理后台量身打造,在界面设计上精益求精,每一处细节都彰显着精致,为用户带来优雅且直观的操作体验。 +它提供多样化的菜单布局、智能的页签管理、高效的树表操作体验、强大的表格组件、灵活的表单组件设计,具备强大的扩展能力, +同时支持黑暗布局风格,为用户提供高效、灵活且美观的操作体验,满足各类管理后台的复杂需求。 + +另外我们还支持 Turborepo + Monorepo 快速构建、模块化、代码复用、支持分包开发 +详见: + +## 前端技术特点 + +定义众多组件,非常贴心的组件属性及小功能,符合 JeeSite 以往的设计思想,列表和表单以数据驱动视图, +极大简化了业务功能开发, 注释分解详见【[源码解析](https://jeesite.com/docs/vue-crud-view)】 + +为什么做数据驱动视图?前端向下兼容一直是最大的问题,有了一套相应的标准,会对框架升级帮助很大。 +比如你可以非常小的成本,业务代码改动非常小的情况下,去升级前端;数据驱动视图可以为未来自定义拖拽表单做更好的铺垫, +数据存储结构更清晰化,更利于维护。 + +提示:请仔细阅读源码解析,表单视图和列表视图上的注释哦,支持复杂表单以及多表单联合使用。 + +## 演示地址 + +1. 地址: + +## 学习准备 + +- [VSCode](https://code.visualstudio.com/) - 推荐 IDE 集成开发工具 +- [Node.js 20](https://nodejs.org/dist/latest-v20.x/) 和 [git](https://git-scm.com/) - 开发环境 +- [Vite](https://vitejs.dev/) - 熟悉 Vite 特性 +- [Vue-v3](https://cn.vuejs.org/) - 熟悉 Vue 基础语法 +- [TypeScript](https://www.typescriptlang.org/) - 熟悉 TS 基本语法 +- [ES6+](http://es6.ruanyifeng.com/) - 熟悉 ES6 基本语法 +- [Vue-Router-v4](https://next.router.vuejs.org/) - 熟悉 vue-router 基本使用 +- [Vue-Vben-Admin](https://jeesite.com/front/vben-admin/) - 熟悉 UI 及表单列表及常用组件使用 +- [Ant-Design-Vue](https://antdv.com/components/overview-cn/) - 熟悉 UI 基本使用 + +## 安装使用 + +- 如果没有安装 Node.js 20+,下载地址: + +```bash +# 验证 +node -v +# 配置国内源 +npm config set registry https://registry.npmmirror.com +``` + +- 如果没有安装 Pnpm 执行安装 + +```bash +npm i -g pnpm +# 验证 +pnpm -v +# 配置国内源 +pnpm config set registry https://registry.npmmirror.com +``` + +- 获取源代码 + +```bash +git clone https://gitee.com/thinkgem/jeesite-vue.git +cd jeesite-vue +``` +注意:不要放到中文或带空格的目录下。 + +- 安装依赖 + +```bash +pnpm install +``` + +- 开发环境运行访问(方式一) + +```bash +pnpm dev +``` +开发环境会加载文件较多,便于调试,请耐心等待。 + +- 编译打包后运行访问(方式二) + +```bash +pnpm preview +``` +编译打包后,会整合这些文件,所以访问性能会大大提高,生产环境可以开启 gzip + +- 打包发布程序 + +```bash +pnpm build +``` +打包完成后,会在根目录生成 dist 文件夹,发布 nginx。 + +详见文档: + +### 后端服务 + +- 安装后台服务 [JeeSite v5.x](https://gitee.com/thinkgem/jeesite5/tree/v5.springboot3/) +- 打开 [.env.development](https://jeesite.com/docs/vue-settings/#env-development-详解) 文件,修改后台接口: + +```bash +# 代理设置,可配置多个,不能换行,格式:[访问接口的根路径, 代理地址, 是否保持Host头] +# VITE_PROXY = [["/js","https://vue.jeesite.com/js",true]] +VITE_PROXY = [["/js","http://127.0.0.1:8980/js",false]] + +# 访问接口的根路径(例如:https://vue.jeesite.com) +VITE_GLOB_API_URL = + +# 访问接口的前缀,在根路径之后 +VITE_GLOB_API_URL_PREFIX = /js +``` + +### 如果您使用的 VSCode 的话,推荐安装以下插件: + +* [UnoCSS](https://marketplace.visualstudio.com/items?itemName=antfu.unocss) - UnoCSS 提示插件 +* [Iconify](https://marketplace.visualstudio.com/items?itemName=antfu.iconify) - Iconify 图标插件 +* [I18n-ally](https://marketplace.visualstudio.com/items?itemName=Lokalise.i18n-ally) - i18n 插件 +* [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) - Vue3 开发必备(Vetur禁用) +* [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - 脚本代码检查 +* [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - 代码格式化 +* [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) - CSS 格式化 +* [DotENV](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv) - .env 文件高亮 + +## 常见问题 + +* Vue 版本的浏览器支持情况:支持所有现代浏览器,Vue3 已不再支持 IE 浏览器。 +* 为什么使用抽屉作为表单组件,因为抽屉空间更大,可以展示更多内容,且操作更友好。 +* 如何将表单抽屉改为弹窗,替换 list 和 form 页面的 Drawer 为 Modal 即可,V5.6增加了路由表单和弹窗表单的代码生成。 +* 打不开代码生成工具怎么办?提示 404,请检查 .env.development 中的代理配置 VITE_PROXY 最后一个参数(是否保持Host头),本地服务 127.0.0.1 应设置为 false,远程服务设置为 true。 +* 更多文档详见: + +## 软件截图 + + + + + + + + + +## 附录 + +### 表单视图 + +```html + + + +``` + +### 列表视图 + +```html + + + +``` + +## 更多介绍 + +* 架构特点: +* 内置功能: +* 目录结构: +* 参数配置: +* 开发规范: +* 数表设计: + +## 学习文档 + +* 库表生成、代码生成: +* 菜单权限、按钮权限: +* 数据权限、库事务: +* 表结构、数据字典: +* 持久层框架、SQL: +* 后端常用工具: + +**分离版** + +* 版本介绍: +* 源码解析: +* 表单组件: +* 表格组件: +* 参数配置: +* 常用组件: +* 前端权限: +* 图标组件: +* 前端样式库: +* 多语言国际化: + +**经典版** + +* 表单组件: +* 表格组件: +* 常用工具: +* 自定义主题: + +## 更多文档 + +* AI、CMS、RAG、Tool、MCP 人工智能助手: +* BPM 业务流程引擎(Flowable): +* CMS 多站点内容管理模块: + +* 消息推送消息提醒: +* 对象存储模块: +* 单点登录模块: +* 在线任务调度: + +* 大屏设计器: +* 报表设计器: +* 文件管理分享: +* 文件在线预览: + +* 集群、高可用架构: +* SaaS 多租户架构: +* 读写分离分片分表: +* Spring监控系统: +* 分布式跨应用事务: +* 追踪系统集成: +* ELK 日志收集: + +* MybatisPlus: +* 接口快速开发: +* 内外网中间件: +* 统一认证平台: + +## 授权许可协议条款 + +1. 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款。 +2. 不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。 +3. 在使用本软件时,由于它集成了众多第三方开源软件,请共同遵守这些开源软件的使用许可条款规定。 +4. 在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议、版权声明和其他原作者 + 规定需要包含的说明(请尊重原作者的著作权,不要删除或修改文件中的`Copyright`和`@author`信息) + 更不要,全局替换源代码中的 jeesite 或 ThinkGem 等字样,否则你将违反本协议条款承担责任。 +5. 基于本软件的作品,只能使用 JeeSite5 作为后台服务,除外情况不可商用且不允许二次分发或开源。 +6. 您若套用本软件的一些代码或功能参考,请保留源文件中的版权和作者,需要在您的软件介绍明显位置 + 说明出处,举例:本软件基于 JeeSite Vue 快速开发平台,并附带链接:http://jeesite.com +7. 任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。 +8. 如果你对本软件有改进,希望可以贡献给我们,共同进步。 +9. 本项目已申请软件著作权,请尊重开源,感谢阅读。 + +## 技术支持与服务 + +* 本软件免费,我们也提供了相应的收费服务,因为: +* 没有资金的支撑就很难得到发展,特别是一个好的产品,如果 JeeSite 帮助了您,请为我们点赞。支持我们,您可以获得更多回馈,我们会把公益事业做的更好,开放更多资源,回报社区和社会。请给我们一些动力吧,在此非常感谢已支持我们的朋友! +* **联系我们**:请访问技术支持与服务页面: + +## 专业版增加的功能 + +1. 主题标签页的三种风格自由切换 +2. 业务流程、流程设计、流程办理 +3. 文件管理、上传秒传、文件预览 +4. 高级折叠表单和个性化本地存储 +5. 表格个性化设置参数本地存储 +6. 租户管理功能、租户切换 +7. 动态设置页面字体大小 +8. 页签右键,在新窗口打开 +9. 消息推送、消息提醒 +10. 语言国际化、本地化 +11. 快速升级到 Monorepo 脚本 +12. 更多功能详见文档 diff --git a/web-vue/bin/build.bat b/web-vue/bin/build.bat new file mode 100644 index 00000000..d108a701 --- /dev/null +++ b/web-vue/bin/build.bat @@ -0,0 +1,9 @@ +@echo off +%~d0 +cd %~dp0 + +cd.. +npm run build + +cd bin +pause \ No newline at end of file diff --git a/web-vue/bin/build.sh b/web-vue/bin/build.sh new file mode 100644 index 00000000..961d9d0f --- /dev/null +++ b/web-vue/bin/build.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd .. +pnpm build + +cd bin diff --git a/web-vue/bin/install.bat b/web-vue/bin/install.bat new file mode 100644 index 00000000..a3616032 --- /dev/null +++ b/web-vue/bin/install.bat @@ -0,0 +1,9 @@ +@echo off +%~d0 +cd %~dp0 + +cd.. +npm run install + +cd bin +pause \ No newline at end of file diff --git a/web-vue/bin/install.sh b/web-vue/bin/install.sh new file mode 100644 index 00000000..63fdbe92 --- /dev/null +++ b/web-vue/bin/install.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd.. +pnpm install + +cd bin diff --git a/web-vue/bin/startup.bat b/web-vue/bin/startup.bat new file mode 100644 index 00000000..4a9ffb73 --- /dev/null +++ b/web-vue/bin/startup.bat @@ -0,0 +1,9 @@ +@echo off +%~d0 +cd %~dp0 + +cd.. +pnpm dev + +cd bin +pause \ No newline at end of file diff --git a/web-vue/bin/startup.sh b/web-vue/bin/startup.sh new file mode 100644 index 00000000..a7fb752d --- /dev/null +++ b/web-vue/bin/startup.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd .. +pnpm dev + +cd bin diff --git a/web-vue/eslint.config.mjs b/web-vue/eslint.config.mjs new file mode 100644 index 00000000..8423819f --- /dev/null +++ b/web-vue/eslint.config.mjs @@ -0,0 +1,177 @@ +/** + * Copyright (c) 2013-Now http://jeesite.com All rights reserved. + * No deletion without permission, or be held responsible to law. + * @author ThinkGem + */ +import globals from 'globals'; +import vuePlugin from 'eslint-plugin-vue'; +import tsPlugin from '@typescript-eslint/eslint-plugin'; +import prettierPlugin from 'eslint-plugin-prettier'; +import tsParser from '@typescript-eslint/parser'; +import vueParser from 'vue-eslint-parser'; +import babelParser from '@babel/eslint-parser'; + +export default [ + // 基础忽略配置 + { + ignores: [ + '**/node_modules/', + '**/dist/', + '**/public/', + '**/build/', + '**/.git/', + '**/.vscode/', + '**/.idea/', + '**/.husky/', + '**/.local/', + '**/.turbo/', + '**/Dockerfile', + '**/*.sh', + '**/*.md', + '**/*.woff', + '**/*.ttf', + '**/*.d.ts', + '**/__snapshots__/', + ], + }, + + // 公共基础配置 + { + languageOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.node, + defineOptions: 'readonly', + }, + parserOptions: { + requireConfigFile: false, + }, + }, + rules: { + // 通用规则 + 'no-case-declarations': 'off', + 'no-extra-boolean-cast': 'off', + 'no-undef': 'off', + 'space-before-function-paren': 'off', + }, + }, + + // Vue 文件配置 + { + files: ['**/*.vue'], + plugins: { + vue: vuePlugin, + }, + languageOptions: { + parser: vueParser, + parserOptions: { + parser: { + ts: tsParser, + tsx: tsParser, + js: babelParser, + '