+ diff --git a/JeecgUniapp-master/.commitlintrc.cjs b/JeecgUniapp-master/.commitlintrc.cjs
new file mode 100644
index 00000000..dd736e1d
--- /dev/null
+++ b/JeecgUniapp-master/.commitlintrc.cjs
@@ -0,0 +1,106 @@
+const fs = require('fs')
+const path = require('path')
+const { execSync } = require('child_process')
+
+const scopes = fs
+ .readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
+ .filter((dirent) => dirent.isDirectory())
+ .map((dirent) => dirent.name.replace(/s$/, ''))
+
+// precomputed scope
+const scopeComplete = execSync('git status --porcelain || true')
+ .toString()
+ .trim()
+ .split('\n')
+ .find((r) => ~r.indexOf('M src'))
+ ?.replace(/(\/)/g, '%%')
+ ?.match(/src%%((\w|-)*)/)?.[1]
+ ?.replace(/s$/, '')
+
+module.exports = {
+ ignores: [(commit) => commit.includes('init')],
+ extends: ['@commitlint/config-conventional'],
+ rules: {
+ 'body-leading-blank': [2, 'always'],
+ 'footer-leading-blank': [1, 'always'],
+ 'header-max-length': [2, 'always', 108],
+ 'subject-empty': [2, 'never'],
+ 'type-empty': [2, 'never'],
+ 'subject-case': [0],
+ 'type-enum': [
+ 2,
+ 'always',
+ [
+ 'feat',
+ 'fix',
+ 'perf',
+ 'style',
+ 'docs',
+ 'test',
+ 'refactor',
+ 'build',
+ 'ci',
+ 'chore',
+ 'revert',
+ 'wip',
+ 'workflow',
+ 'types',
+ 'release',
+ ],
+ ],
+ },
+ prompt: {
+ /** @use `pnpm commit :f` */
+ alias: {
+ f: 'docs: fix typos',
+ r: 'docs: update README',
+ s: 'style: update code format',
+ b: 'build: bump dependencies',
+ c: 'chore: update config',
+ },
+ customScopesAlign: !scopeComplete ? 'top' : 'bottom',
+ defaultScope: scopeComplete,
+ scopes: [...scopes, 'mock'],
+ allowEmptyIssuePrefixs: false,
+ allowCustomIssuePrefixs: false,
+
+ // English
+ typesAppend: [
+ { value: 'wip', name: 'wip: work in process' },
+ { value: 'workflow', name: 'workflow: workflow improvements' },
+ { value: 'types', name: 'types: type definition file changes' },
+ ],
+
+ // 中英文对照版
+ // messages: {
+ // type: '选择你要提交的类型 :',
+ // scope: '选择一个提交范围 (可选):',
+ // customScope: '请输入自定义的提交范围 :',
+ // subject: '填写简短精炼的变更描述 :\n',
+ // body: '填写更加详细的变更描述 (可选)。使用 "|" 换行 :\n',
+ // breaking: '列举非兼容性重大的变更 (可选)。使用 "|" 换行 :\n',
+ // footerPrefixsSelect: '选择关联issue前缀 (可选):',
+ // customFooterPrefixs: '输入自定义issue前缀 :',
+ // footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
+ // confirmCommit: '是否提交或修改commit ?',
+ // },
+ // types: [
+ // { value: 'feat', name: 'feat: 新增功能' },
+ // { value: 'fix', name: 'fix: 修复缺陷' },
+ // { value: 'docs', name: 'docs: 文档变更' },
+ // { value: 'style', name: 'style: 代码格式' },
+ // { value: 'refactor', name: 'refactor: 代码重构' },
+ // { value: 'perf', name: 'perf: 性能优化' },
+ // { value: 'test', name: 'test: 添加疏漏测试或已有测试改动' },
+ // { value: 'build', name: 'build: 构建流程、外部依赖变更 (如升级 npm 包、修改打包配置等)' },
+ // { value: 'ci', name: 'ci: 修改 CI 配置、脚本' },
+ // { value: 'revert', name: 'revert: 回滚 commit' },
+ // { value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
+ // { value: 'wip', name: 'wip: 正在开发中' },
+ // { value: 'workflow', name: 'workflow: 工作流程改进' },
+ // { value: 'types', name: 'types: 类型定义文件修改' },
+ // ],
+ // emptyScopesAlias: 'empty: 不填写',
+ // customScopesAlias: 'custom: 自定义',
+ },
+}
diff --git a/JeecgUniapp-master/.editorconfig b/JeecgUniapp-master/.editorconfig
new file mode 100644
index 00000000..7f098647
--- /dev/null
+++ b/JeecgUniapp-master/.editorconfig
@@ -0,0 +1,13 @@
+root = true
+
+[*] # 表示所有文件适用
+charset = utf-8 # 设置文件字符集为 utf-8
+indent_style = space # 缩进风格(tab | space)
+indent_size = 2 # 缩进大小
+end_of_line = lf # 控制换行类型(lf | cr | crlf)
+trim_trailing_whitespace = true # 去除行首的任意空白字符
+insert_final_newline = true # 始终在文件末尾插入一个新行
+
+[*.md] # 表示仅 md 文件适用以下规则
+max_line_length = off # 关闭最大行长度限制
+trim_trailing_whitespace = false # 关闭末尾空格修剪
diff --git a/JeecgUniapp-master/.eslintignore b/JeecgUniapp-master/.eslintignore
new file mode 100644
index 00000000..2ce5c919
--- /dev/null
+++ b/JeecgUniapp-master/.eslintignore
@@ -0,0 +1 @@
+src/uni_modules/
diff --git a/JeecgUniapp-master/.eslintrc-auto-import.json b/JeecgUniapp-master/.eslintrc-auto-import.json
new file mode 100644
index 00000000..96409884
--- /dev/null
+++ b/JeecgUniapp-master/.eslintrc-auto-import.json
@@ -0,0 +1,102 @@
+{
+ "globals": {
+ "Component": true,
+ "ComponentPublicInstance": true,
+ "ComputedRef": true,
+ "DirectiveBinding": true,
+ "EffectScope": true,
+ "ExtractDefaultPropTypes": true,
+ "ExtractPropTypes": true,
+ "ExtractPublicPropTypes": true,
+ "InjectionKey": true,
+ "MaybeRef": true,
+ "MaybeRefOrGetter": true,
+ "PropType": true,
+ "Ref": true,
+ "VNode": true,
+ "WritableComputedRef": true,
+ "computed": true,
+ "createApp": true,
+ "customRef": true,
+ "defineAsyncComponent": true,
+ "defineComponent": true,
+ "effectScope": true,
+ "getCurrentInstance": true,
+ "getCurrentScope": true,
+ "h": true,
+ "inject": true,
+ "isProxy": true,
+ "isReactive": true,
+ "isReadonly": true,
+ "isRef": true,
+ "markRaw": true,
+ "nextTick": true,
+ "onActivated": true,
+ "onAddToFavorites": true,
+ "onBackPress": true,
+ "onBeforeMount": true,
+ "onBeforeUnmount": true,
+ "onBeforeUpdate": true,
+ "onDeactivated": true,
+ "onError": true,
+ "onErrorCaptured": true,
+ "onHide": true,
+ "onLaunch": true,
+ "onLoad": true,
+ "onMounted": true,
+ "onNavigationBarButtonTap": true,
+ "onNavigationBarSearchInputChanged": true,
+ "onNavigationBarSearchInputClicked": true,
+ "onNavigationBarSearchInputConfirmed": true,
+ "onNavigationBarSearchInputFocusChanged": true,
+ "onPageNotFound": true,
+ "onPageScroll": true,
+ "onPullDownRefresh": true,
+ "onReachBottom": true,
+ "onReady": true,
+ "onRenderTracked": true,
+ "onRenderTriggered": true,
+ "onResize": true,
+ "onScopeDispose": true,
+ "onServerPrefetch": true,
+ "onShareAppMessage": true,
+ "onShareTimeline": true,
+ "onShow": true,
+ "onTabItemTap": true,
+ "onThemeChange": true,
+ "onUnhandledRejection": true,
+ "onUnload": true,
+ "onUnmounted": true,
+ "onUpdated": true,
+ "onWatcherCleanup": true,
+ "provide": true,
+ "reactive": true,
+ "readonly": true,
+ "ref": true,
+ "resolveComponent": true,
+ "shallowReactive": true,
+ "shallowReadonly": true,
+ "shallowRef": true,
+ "toRaw": true,
+ "toRef": true,
+ "toRefs": true,
+ "toValue": true,
+ "triggerRef": true,
+ "unref": true,
+ "useAttrs": true,
+ "useCssModule": true,
+ "useCssVars": true,
+ "useGeoPosition": true,
+ "useId": true,
+ "useModel": true,
+ "usePageList": true,
+ "useRequest": true,
+ "useSlots": true,
+ "useTemplateRef": true,
+ "useUpload": true,
+ "watch": true,
+ "watchEffect": true,
+ "watchPostEffect": true,
+ "watchSyncEffect": true
+ }
+}
diff --git a/JeecgUniapp-master/.eslintrc.cjs b/JeecgUniapp-master/.eslintrc.cjs
new file mode 100644
index 00000000..aff8be49
--- /dev/null
+++ b/JeecgUniapp-master/.eslintrc.cjs
@@ -0,0 +1,97 @@
+module.exports = {
+ env: {
+ browser: true,
+ es2021: true,
+ node: true,
+ },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'plugin:vue/vue3-essential',
+ // eslint-plugin-import 插件, @see https://www.npmjs.com/package/eslint-plugin-import
+ 'plugin:import/recommended',
+ // eslint-config-airbnb-base 插件 已经改用 eslint-config-standard 插件
+ 'standard',
+ // 1. 接入 prettier 的规则
+ 'prettier',
+ 'plugin:prettier/recommended',
+ './.eslintrc-auto-import.json',
+ ],
+ overrides: [
+ {
+ env: {
+ node: true,
+ },
+ files: ['.eslintrc.{js,cjs}'],
+ parserOptions: {
+ sourceType: 'script',
+ },
+ },
+ ],
+ parserOptions: {
+ ecmaVersion: 'latest',
+ parser: '@typescript-eslint/parser',
+ sourceType: 'module',
+ },
+ plugins: [
+ '@typescript-eslint',
+ 'vue',
+ // 2. 加入 prettier 的 eslint 插件
+ 'prettier',
+ // eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
+ 'import',
+ ],
+ rules: {
+ // 3. 注意要加上这一句,开启 prettier 自动修复的功能
+ 'prettier/prettier': 'error',
+ // turn on errors for missing imports
+ 'import/no-unresolved': 'off',
+ // 对后缀的检测,否则 import 一个ts文件也会报错,需要手动添加'.ts', 增加了下面的配置后就不用了
+ 'import/extensions': [
+ 'error',
+ 'ignorePackages',
+ { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' },
+ ],
+ // 只允许1个默认导出,关闭,否则不能随意export xxx
+ 'import/prefer-default-export': ['off'],
+ 'no-console': ['off'],
+ // 'no-unused-vars': ['off'],
+ // '@typescript-eslint/no-unused-vars': ['off'],
+ // 解决vite.config.ts报错问题
+ 'import/no-extraneous-dependencies': 'off',
+ 'no-plusplus': 'off',
+ 'no-shadow': 'off',
+ 'vue/multi-word-component-names': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ 'no-underscore-dangle': 'off',
+ 'no-use-before-define': 'off',
+ 'no-undef': 'off',
+ 'no-unused-vars': 'off',
+ 'no-param-reassign': 'off',
+ '@typescript-eslint/no-unused-vars': 'off',
+ // 避免 `eslint` 对于 `typescript` 函数重载的误报
+ 'no-redeclare': 'off',
+ '@typescript-eslint/no-redeclare': 'error',
+ },
+ // eslint-import-resolver-typescript 插件,@see https://www.npmjs.com/package/eslint-import-resolver-typescript
+ settings: {
+ 'import/parsers': {
+ '@typescript-eslint/parser': ['.ts', '.tsx'],
+ },
+ 'import/resolver': {
+ typescript: {},
+ },
+ },
+ globals: {
+ $t: true,
+ uni: true,
+ UniApp: true,
+ wx: true,
+ WechatMiniprogram: true,
+ getCurrentPages: true,
+ UniHelper: true,
+ Page: true,
+ App: true,
+ NodeJS: true,
+ },
+}
diff --git a/JeecgUniapp-master/.gitattributes b/JeecgUniapp-master/.gitattributes
new file mode 100644
index 00000000..7493dc65
--- /dev/null
+++ b/JeecgUniapp-master/.gitattributes
@@ -0,0 +1,3 @@
+*.js linguist-language=vue
+*.css linguist-language=vue
+*.ts linguist-language=vue
\ No newline at end of file
diff --git a/JeecgUniapp-master/.gitignore b/JeecgUniapp-master/.gitignore
new file mode 100644
index 00000000..cda71dbf
--- /dev/null
+++ b/JeecgUniapp-master/.gitignore
@@ -0,0 +1,15 @@
+node_modules
+dist
+.cache
+
+## ide
+**/.idea
+*.iml
+
+## backend
+**/target
+**/logs
+**/dist
+
+## front
+/yarn-error.log
diff --git a/JeecgUniapp-master/.npmrc b/JeecgUniapp-master/.npmrc
new file mode 100644
index 00000000..356a6560
--- /dev/null
+++ b/JeecgUniapp-master/.npmrc
@@ -0,0 +1,6 @@
+# registry = https://registry.npmjs.org
+registry = https://registry.npmmirror.com
+
+strict-peer-dependencies=false
+auto-install-peers=true
+shamefully-hoist=true
diff --git a/JeecgUniapp-master/.prettierignore b/JeecgUniapp-master/.prettierignore
new file mode 100644
index 00000000..6b66b071
--- /dev/null
+++ b/JeecgUniapp-master/.prettierignore
@@ -0,0 +1,12 @@
+# unplugin-auto-import 生成的类型文件,每次提交都改变,所以加入这里吧,与 .gitignore 配合使用
+auto-import.d.ts
+
+# vite-plugin-uni-pages 生成的类型文件,每次切换分支都一堆不同的,所以直接 .gitignore
+uni-pages.d.ts
+
+# 插件生成的文件
+src/pages.json
+src/manifest.json
+
+# 忽略自动生成文件
+src/service/app/**
diff --git a/JeecgUniapp-master/.prettierrc.cjs b/JeecgUniapp-master/.prettierrc.cjs
new file mode 100644
index 00000000..3986355e
--- /dev/null
+++ b/JeecgUniapp-master/.prettierrc.cjs
@@ -0,0 +1,19 @@
+// @see https://prettier.io/docs/en/options
+module.exports = {
+ singleQuote: true,
+ printWidth: 100,
+ tabWidth: 2,
+ useTabs: false,
+ semi: false,
+ trailingComma: 'all',
+ endOfLine: 'auto',
+ htmlWhitespaceSensitivity: 'ignore',
+ overrides: [
+ {
+ files: '*.json',
+ options: {
+ trailingComma: 'none',
+ },
+ },
+ ],
+}
diff --git a/JeecgUniapp-master/.stylelintignore b/JeecgUniapp-master/.stylelintignore
new file mode 100644
index 00000000..2ce5c919
--- /dev/null
+++ b/JeecgUniapp-master/.stylelintignore
@@ -0,0 +1 @@
+src/uni_modules/
diff --git a/JeecgUniapp-master/.stylelintrc.cjs b/JeecgUniapp-master/.stylelintrc.cjs
new file mode 100644
index 00000000..574beef3
--- /dev/null
+++ b/JeecgUniapp-master/.stylelintrc.cjs
@@ -0,0 +1,58 @@
+// .stylelintrc.cjs
+
+module.exports = {
+ root: true,
+ extends: [
+ // stylelint-config-standard 替换成了更宽松的 stylelint-config-recommended
+ 'stylelint-config-recommended',
+ // stylelint-config-standard-scss 替换成了更宽松的 stylelint-config-recommended-scss
+ 'stylelint-config-recommended-scss',
+ 'stylelint-config-recommended-vue/scss',
+ 'stylelint-config-html/vue',
+ 'stylelint-config-recess-order',
+ ],
+ plugins: ['stylelint-prettier'],
+ overrides: [
+ // 扫描 .vue/html 文件中的\n",
+ ],
+ },
+ "Print unibest style": {
+ "scope": "vue",
+ "prefix": "st",
+ "body": ["\n"],
+ },
+ "Print unibest script": {
+ "scope": "vue",
+ "prefix": "sc",
+ "body": ["\n"],
+ },
+ "Print unibest template": {
+ "scope": "vue",
+ "prefix": "te",
+ "body": ["", "
+ {{ dataSource.list?.length }}个成员
+ +=a)}}for(var h=this.__startIndex;h