From 2284534e062d51809403706c4ec2bb0dc8c4706a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A6=86=E9=92=B1=E8=90=BD=E5=B0=BD=E6=A7=BF=E8=8A=B1?=
=?UTF-8?q?=E7=A8=80?= <2675540038@qq.com>
Date: Thu, 18 Apr 2024 13:44:38 +0800
Subject: [PATCH] 1
---
.editorconfig | 14 +
.env | 2 +
.env.development | 2 +
.env.site | 2 +
.eslintignore | 3 +
.eslintrc | 76 ++
.github/ISSUE_TEMPLATE/bug-report.zh-CN.yml | 79 ++
.github/ISSUE_TEMPLATE/config.yml | 5 +
.../ISSUE_TEMPLATE/feature-report.zh-CN.yml | 30 +
.github/PULL_REQUEST_TEMPLATE.md | 52 ++
.github/dependabot.yml | 20 +
.github/workflows/issue-assignees.temp.yml | 52 ++
.github/workflows/issue-help-wanted.temp.yml | 22 +
.../workflows/issue-mark-duplicate.temp.yml | 19 +
.github/workflows/issue-reply.temp.yml | 21 +
.github/workflows/issue-synchronize.temp.yml | 17 +
.github/workflows/pr-spelling.temp.yml | 12 +
.github/workflows/preview-publish.yml | 15 +
.github/workflows/pull-request.yml | 14 +
.gitignore | 13 +
.husky/commit-msg | 4 +
.husky/pre-commit | 4 +
.husky/prepare-commit-msg | 4 +
.prettierrc.js | 39 +
.stylelintignore | 8 +
LICENSE | 9 +
PROXY.md | 22 +
README-zh_CN.md | 115 +++
README.md | 94 +++
cache.dockerfile | 15 +
commitlint.config.js | 1 +
globals.d.ts | 13 +
index.html | 17 +
jsx.d.ts | 13 +
package.json | 90 +++
public/favicon.ico | Bin 0 -> 16958 bytes
shims-vue.d.ts | 5 +
src/App.vue | 25 +
src/assets/assets-login-bg-black.png | Bin 0 -> 807777 bytes
src/assets/assets-login-bg-white.png | Bin 0 -> 995753 bytes
src/assets/assets-logo-full.svg | 39 +
src/assets/assets-product-1.svg | 5 +
src/assets/assets-product-2.svg | 5 +
src/assets/assets-product-3.svg | 5 +
src/assets/assets-product-4.svg | 5 +
src/assets/assets-result-403.svg | 32 +
src/assets/assets-result-404.svg | 36 +
src/assets/assets-result-500.svg | 32 +
src/assets/assets-result-ie.svg | 33 +
src/assets/assets-result-maintenance.svg | 49 ++
src/assets/assets-result-wifi.svg | 23 +
src/assets/assets-setting-auto.svg | 13 +
src/assets/assets-setting-dark.svg | 5 +
src/assets/assets-setting-light.svg | 13 +
src/assets/assets-t-logo.svg | 41 +
src/assets/assets-tencent-logo.png | Bin 0 -> 11383 bytes
src/components/color/index.vue | 35 +
src/components/product-card/index.vue | 121 +++
src/components/result/index.vue | 118 +++
src/components/thumbnail/index.vue | 49 ++
src/components/trend/index.vue | 105 +++
src/config/color.ts | 30 +
src/config/global.ts | 2 +
src/config/host.ts | 26 +
src/config/style.ts | 14 +
src/constants/index.ts | 46 ++
src/interface.ts | 39 +
src/layouts/blank.vue | 12 +
src/layouts/components/Breadcrumb.vue | 39 +
src/layouts/components/Content.vue | 43 ++
src/layouts/components/Footer.vue | 27 +
src/layouts/components/Header.vue | 334 +++++++++
src/layouts/components/LayoutContent.vue | 168 +++++
src/layouts/components/LayoutHeader.vue | 52 ++
src/layouts/components/LayoutSidebar.vue | 51 ++
src/layouts/components/MenuContent.vue | 108 +++
src/layouts/components/Notice.vue | 221 ++++++
src/layouts/components/Search.vue | 134 ++++
src/layouts/components/SideNav.vue | 157 ++++
src/layouts/index.vue | 100 +++
src/layouts/setting.vue | 404 ++++++++++
src/main.jsx | 51 ++
src/pages/activity/activity_index.vue | 367 +++++++++
src/pages/association/index.vue | 254 +++++++
.../dashboard/base/components/MiddleChart.vue | 158 ++++
.../base/components/OutputOverview.vue | 189 +++++
.../dashboard/base/components/RankList.vue | 111 +++
.../dashboard/base/components/TopPanel.vue | 246 ++++++
src/pages/dashboard/base/index.ts | 702 ++++++++++++++++++
src/pages/dashboard/base/index.vue | 44 ++
src/pages/dashboard/detail/index.ts | 267 +++++++
src/pages/dashboard/detail/index.vue | 242 ++++++
src/pages/login/index.less | 202 +++++
src/pages/login/index.vue | 184 +++++
src/pages/news/news_index.vue | 327 ++++++++
src/pages/register/index.less | 202 +++++
src/pages/register/index.vue | 160 ++++
src/pages/user/user_index.vue | 139 ++++
src/pages/user/user_info.vue | 144 ++++
src/pages/user/user_line.vue | 136 ++++
src/pages/user/user_plan.vue | 128 ++++
src/permission.js | 53 ++
src/router/index.js | 50 ++
src/router/modules/base.ts | 23 +
src/router/modules/components.ts | 84 +++
src/service/service-advance.ts | 233 ++++++
src/service/service-base.ts | 205 +++++
src/service/service-detail-base.ts | 84 +++
src/service/service-detail-deploy.ts | 234 ++++++
src/service/service-detail.ts | 57 ++
src/service/service-user.ts | 64 ++
src/store/index.ts | 22 +
src/store/modules/notification.ts | 90 +++
src/store/modules/permission.ts | 66 ++
src/store/modules/setting.ts | 122 +++
src/store/modules/tab-router.ts | 83 +++
src/store/modules/user.ts | 88 +++
src/style/font-family.less | 6 +
src/style/index.less | 5 +
src/style/layout.less | 201 +++++
src/style/reset.less | 78 ++
src/style/variables.less | 27 +
src/utils/charts.ts | 38 +
src/utils/color.ts | 118 +++
src/utils/date.ts | 12 +
src/utils/request.ts | 66 ++
stylelint.config.js | 5 +
tsconfig.json | 26 +
vite.config.js | 59 ++
129 files changed, 10171 insertions(+)
create mode 100644 .editorconfig
create mode 100644 .env
create mode 100644 .env.development
create mode 100644 .env.site
create mode 100644 .eslintignore
create mode 100644 .eslintrc
create mode 100644 .github/ISSUE_TEMPLATE/bug-report.zh-CN.yml
create mode 100644 .github/ISSUE_TEMPLATE/config.yml
create mode 100644 .github/ISSUE_TEMPLATE/feature-report.zh-CN.yml
create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
create mode 100644 .github/dependabot.yml
create mode 100644 .github/workflows/issue-assignees.temp.yml
create mode 100644 .github/workflows/issue-help-wanted.temp.yml
create mode 100644 .github/workflows/issue-mark-duplicate.temp.yml
create mode 100644 .github/workflows/issue-reply.temp.yml
create mode 100644 .github/workflows/issue-synchronize.temp.yml
create mode 100644 .github/workflows/pr-spelling.temp.yml
create mode 100644 .github/workflows/preview-publish.yml
create mode 100644 .github/workflows/pull-request.yml
create mode 100644 .gitignore
create mode 100644 .husky/commit-msg
create mode 100644 .husky/pre-commit
create mode 100644 .husky/prepare-commit-msg
create mode 100644 .prettierrc.js
create mode 100644 .stylelintignore
create mode 100644 LICENSE
create mode 100644 PROXY.md
create mode 100644 README-zh_CN.md
create mode 100644 README.md
create mode 100644 cache.dockerfile
create mode 100644 commitlint.config.js
create mode 100644 globals.d.ts
create mode 100644 index.html
create mode 100644 jsx.d.ts
create mode 100644 package.json
create mode 100644 public/favicon.ico
create mode 100644 shims-vue.d.ts
create mode 100644 src/App.vue
create mode 100644 src/assets/assets-login-bg-black.png
create mode 100644 src/assets/assets-login-bg-white.png
create mode 100644 src/assets/assets-logo-full.svg
create mode 100644 src/assets/assets-product-1.svg
create mode 100644 src/assets/assets-product-2.svg
create mode 100644 src/assets/assets-product-3.svg
create mode 100644 src/assets/assets-product-4.svg
create mode 100644 src/assets/assets-result-403.svg
create mode 100644 src/assets/assets-result-404.svg
create mode 100644 src/assets/assets-result-500.svg
create mode 100644 src/assets/assets-result-ie.svg
create mode 100644 src/assets/assets-result-maintenance.svg
create mode 100644 src/assets/assets-result-wifi.svg
create mode 100644 src/assets/assets-setting-auto.svg
create mode 100644 src/assets/assets-setting-dark.svg
create mode 100644 src/assets/assets-setting-light.svg
create mode 100644 src/assets/assets-t-logo.svg
create mode 100644 src/assets/assets-tencent-logo.png
create mode 100644 src/components/color/index.vue
create mode 100644 src/components/product-card/index.vue
create mode 100644 src/components/result/index.vue
create mode 100644 src/components/thumbnail/index.vue
create mode 100644 src/components/trend/index.vue
create mode 100644 src/config/color.ts
create mode 100644 src/config/global.ts
create mode 100644 src/config/host.ts
create mode 100644 src/config/style.ts
create mode 100644 src/constants/index.ts
create mode 100644 src/interface.ts
create mode 100644 src/layouts/blank.vue
create mode 100644 src/layouts/components/Breadcrumb.vue
create mode 100644 src/layouts/components/Content.vue
create mode 100644 src/layouts/components/Footer.vue
create mode 100644 src/layouts/components/Header.vue
create mode 100644 src/layouts/components/LayoutContent.vue
create mode 100644 src/layouts/components/LayoutHeader.vue
create mode 100644 src/layouts/components/LayoutSidebar.vue
create mode 100644 src/layouts/components/MenuContent.vue
create mode 100644 src/layouts/components/Notice.vue
create mode 100644 src/layouts/components/Search.vue
create mode 100644 src/layouts/components/SideNav.vue
create mode 100644 src/layouts/index.vue
create mode 100644 src/layouts/setting.vue
create mode 100644 src/main.jsx
create mode 100644 src/pages/activity/activity_index.vue
create mode 100644 src/pages/association/index.vue
create mode 100644 src/pages/dashboard/base/components/MiddleChart.vue
create mode 100644 src/pages/dashboard/base/components/OutputOverview.vue
create mode 100644 src/pages/dashboard/base/components/RankList.vue
create mode 100644 src/pages/dashboard/base/components/TopPanel.vue
create mode 100644 src/pages/dashboard/base/index.ts
create mode 100644 src/pages/dashboard/base/index.vue
create mode 100644 src/pages/dashboard/detail/index.ts
create mode 100644 src/pages/dashboard/detail/index.vue
create mode 100644 src/pages/login/index.less
create mode 100644 src/pages/login/index.vue
create mode 100644 src/pages/news/news_index.vue
create mode 100644 src/pages/register/index.less
create mode 100644 src/pages/register/index.vue
create mode 100644 src/pages/user/user_index.vue
create mode 100644 src/pages/user/user_info.vue
create mode 100644 src/pages/user/user_line.vue
create mode 100644 src/pages/user/user_plan.vue
create mode 100644 src/permission.js
create mode 100644 src/router/index.js
create mode 100644 src/router/modules/base.ts
create mode 100644 src/router/modules/components.ts
create mode 100644 src/service/service-advance.ts
create mode 100644 src/service/service-base.ts
create mode 100644 src/service/service-detail-base.ts
create mode 100644 src/service/service-detail-deploy.ts
create mode 100644 src/service/service-detail.ts
create mode 100644 src/service/service-user.ts
create mode 100644 src/store/index.ts
create mode 100644 src/store/modules/notification.ts
create mode 100644 src/store/modules/permission.ts
create mode 100644 src/store/modules/setting.ts
create mode 100644 src/store/modules/tab-router.ts
create mode 100644 src/store/modules/user.ts
create mode 100644 src/style/font-family.less
create mode 100644 src/style/index.less
create mode 100644 src/style/layout.less
create mode 100644 src/style/reset.less
create mode 100644 src/style/variables.less
create mode 100644 src/utils/charts.ts
create mode 100644 src/utils/color.ts
create mode 100644 src/utils/date.ts
create mode 100644 src/utils/request.ts
create mode 100644 stylelint.config.js
create mode 100644 tsconfig.json
create mode 100644 vite.config.js
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..4fc13c7
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,14 @@
+root = true
+
+[*]
+indent_style = space
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[*.{ts,js,vue,css}]
+indent_size = 2
diff --git a/.env b/.env
new file mode 100644
index 0000000..1b6a998
--- /dev/null
+++ b/.env
@@ -0,0 +1,2 @@
+# 打包路径 根据项目不同按需配置
+VITE_BASE_URL = /
\ No newline at end of file
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..79debef
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,2 @@
+# 打包路径
+VITE_BASE_URL = /
diff --git a/.env.site b/.env.site
new file mode 100644
index 0000000..753a6ae
--- /dev/null
+++ b/.env.site
@@ -0,0 +1,2 @@
+# 打包路径 根据项目不同按需配置
+VITE_BASE_URL = https://static.tdesign.tencent.com/starter/vue/
\ No newline at end of file
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..d631784
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,3 @@
+dist
+node_modules
+!.prettierrc.js
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..875ec75
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,76 @@
+{
+ "extends": ["airbnb-base", "prettier", "plugin:@typescript-eslint/recommended", "plugin:vue/essential"],
+ "env": {
+ "browser": true,
+ "node": true,
+ "jest": true,
+ "es6": true
+ },
+ "globals": {
+ "cy": "readonly"
+ },
+ "plugins": ["vue", "@typescript-eslint"],
+ "parserOptions": {
+ "parser": "@typescript-eslint/parser",
+ "sourceType": "module",
+ "allowImportExportEverywhere": true,
+ "ecmaFeatures": {
+ "jsx": true
+ }
+ },
+ "rules": {
+ "@typescript-eslint/ban-ts-ignore": 0,
+ "@typescript-eslint/no-explicit-any": 0,
+ "@typescript-eslint/no-require-imports": 0,
+ "@typescript-eslint/no-var-requires": 0,
+ "@typescript-eslint/prefer-for-of": 0,
+ "@typescript-eslint/explicit-function-return-type": 0,
+ "@typescript-eslint/explicit-module-boundary-types": 0,
+ "import/no-extraneous-dependencies": 0,
+ "import/extensions": 0,
+ "import/no-unresolved": 0,
+ "indent": [2, 2],
+ "camelcase": 0,
+ "class-methods-use-this": 0,
+ "new-cap": 0,
+ "no-new": 1,
+ "no-shadow": 0,
+ "no-console": 0,
+ "no-underscore-dangle": 0,
+ "no-confusing-arrow": 0,
+ "no-plusplus": [
+ "error",
+ {
+ "allowForLoopAfterthoughts": true
+ }
+ ],
+ "no-param-reassign": 0,
+ "func-style": 0,
+ "prefer-default-export": 0,
+ "max-len": 0,
+ "consistent-return": 0
+ },
+ "overrides": [
+ {
+ "files": ["*.vue"],
+ "rules": {
+ "vue/return-in-computed-property": 1,
+ "vue/order-in-components": 2,
+ "vue/component-name-in-template-casing": [2, "kebab-case"],
+ "vue/require-default-prop": 0,
+ "@typescript-eslint/explicit-module-boundary-types": "off",
+ "import/order": "off"
+ }
+ },
+ {
+ "files": ["src/*", "*.js"],
+ "rules": {
+ "no-var-requires": 0,
+ "no-console": 0,
+ "no-unused-expressions": 0,
+ "@typescript-eslint/explicit-module-boundary-types": "off",
+ "import/order": "off"
+ }
+ }
+ ]
+}
diff --git a/.github/ISSUE_TEMPLATE/bug-report.zh-CN.yml b/.github/ISSUE_TEMPLATE/bug-report.zh-CN.yml
new file mode 100644
index 0000000..feb3fc9
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug-report.zh-CN.yml
@@ -0,0 +1,79 @@
+name: 反馈 Bug
+description: 通过 github 模板进行 Bug 反馈。
+title: "[组件名称] 描述问题的标题"
+body:
+ - type: markdown
+ attributes:
+ value: |
+ # 欢迎你的参与
+ tdesign-vue-starter 的 Issue 列表接受 bug 报告或是新功能请求。也可加入官方社区:
+
+ 在发布一个 Issue 前,请确保:
+ - 在 [常见问题](https://tdesign.tencent.com/about/faq)、[更新日志](https://tdesign.tencent.com/about/release) 和 [旧Issue列表](https://github.com/Tencent/tdesign-vue-starter/issues?q=is%3Aissue) 中搜索过你的问题。(你的问题可能已有人提出,也可能已在最新版本中被修正)
+ - 如果你发现一个已经关闭的旧 Issue 在最新版本中仍然存在,不要在旧 Issue 下面留言,请建一个新的 issue。
+
+ - type: input
+ id: version
+ attributes:
+ label: tdesign-vue-starter 版本
+ description: 请检查在最新项目版本中能否重现此 issue。
+ placeholder: 请填写
+ validations:
+ required: true
+
+ - type: input
+ id: reproduce
+ attributes:
+ label: 重现链接
+ description: 请提供尽可能精简的 CodePen、CodeSandbox 或 GitHub 仓库的链接。请不要填无关链接,否则你的 Issue 将被关闭。
+ placeholder: 请填写
+
+ - type: textarea
+ id: reproduceSteps
+ attributes:
+ label: 重现步骤
+ description: 请清晰的描述重现该 Issue 的步骤,这能帮助我们快速定位问题。没有清晰重现步骤将不会被修复,标有 'need reproduction' 的 Issue 在 7 天内不提供相关步骤,将被关闭。
+ placeholder: 请填写
+
+ - type: textarea
+ id: expect
+ attributes:
+ label: 期望结果
+ placeholder: 请填写
+
+ - type: textarea
+ id: actual
+ attributes:
+ label: 实际结果
+ placeholder: 请填写
+
+ - type: input
+ id: frameworkVersion
+ attributes:
+ label: 框架版本
+ placeholder: Vue(3.2.0)
+
+ - type: input
+ id: browsersVersion
+ attributes:
+ label: 浏览器版本
+ placeholder: Chrome(8.213.231.123)
+
+ - type: input
+ id: systemVersion
+ attributes:
+ label: 系统版本
+ placeholder: MacOS(11.2.3)
+
+ - type: input
+ id: nodeVersion
+ attributes:
+ label: Node版本
+ placeholder: 请填写
+
+ - type: textarea
+ id: remarks
+ attributes:
+ label: 补充说明
+ description: 可以是遇到这个 bug 的业务场景、上下文等信息。
+ placeholder: 请填写
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..1e82356
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: true
+contact_links:
+ - name: 使用 issue-helper 新建
+ url: https://Tencent.github.io/tdesign/issue-helper/?lang=zh-CN&repo=Tencent/tdesign-vue-starter
+ about: 使用 https://Tencent.github.io/tdesign/issue-helper/ 创建 issue,其中包含 bug 和 feature,表单提交更加严格。
diff --git a/.github/ISSUE_TEMPLATE/feature-report.zh-CN.yml b/.github/ISSUE_TEMPLATE/feature-report.zh-CN.yml
new file mode 100644
index 0000000..f21a354
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature-report.zh-CN.yml
@@ -0,0 +1,30 @@
+name: 反馈新功能
+description: 通过 github 模板进行新功能反馈。
+title: "[组件名称] 描述问题的标题"
+body:
+ - type: markdown
+ attributes:
+ value: |
+ # 欢迎你的参与
+ tdesign-vue-starter 的 Issue 列表接受 bug 报告或是新功能请求。也可加入官方社区:
+
+ 在发布一个 Issue 前,请确保:
+ - 在 [常见问题](https://tdesign.tencent.com/about/faq)、[更新日志](https://tdesign.tencent.com/about/release) 和 [旧Issue列表](https://github.com/Tencent/tdesign-vue-starter/issues?q=is%3Aissue) 中搜索过你的问题。(你的问题可能已有人提出,也可能已在最新版本中被修正)
+ - 如果你发现一个已经关闭的旧 Issue 在最新版本中仍然存在,不要在旧 Issue 下面留言,请建一个新的 issue。
+
+ - type: textarea
+ id: functionContent
+ attributes:
+ label: 这个功能解决了什么问题
+ description: 请详尽说明这个需求的用例和场景。最重要的是:解释清楚是怎样的用户体验需求催生了这个功能上的需求。我们将考虑添加在现有 API 无法轻松实现的功能。新功能的用例也应当足够常见。
+ placeholder: 请填写
+ validations:
+ required: true
+
+ - type: textarea
+ id: functionalExpectations
+ attributes:
+ label: 你建议的方案是什么
+ placeholder: 请填写
+ validations:
+ required: true
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..a97d15e
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,52 @@
+
+
+### 🤔 这个 PR 的性质是?
+
+- [ ] 日常 bug 修复
+- [ ] 新特性提交
+- [ ] 文档改进
+- [ ] 演示代码改进
+- [ ] 组件样式/交互改进
+- [ ] CI/CD 改进
+- [ ] 重构
+- [ ] 代码风格优化
+- [ ] 测试用例
+- [ ] 分支合并
+- [ ] 其他
+
+### 🔗 相关 Issue
+
+
+
+### 💡 需求背景和解决方案
+
+
+
+### 📝 更新日志
+
+
+
+- fix(组件名称): 处理问题或特性描述 ...
+
+- [ ] 本条 PR 不需要纳入 Changelog
+
+### ☑️ 请求合并前的自查清单
+
+⚠️ 请自检并全部**勾选全部选项**。⚠️
+
+- [ ] 文档已补充或无须补充
+- [ ] 代码演示已提供或无须提供
+- [ ] TypeScript 定义已补充或无须补充
+- [ ] Changelog 已提供或无须提供
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..c37a937
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,20 @@
+# Basic dependabot.yml file with
+# minimum configuration for two package managers
+
+version: 2
+updates:
+ # Enable version updates for npm
+ - package-ecosystem: "npm"
+ # Look for `package.json` and `lock` files in the `root` directory
+ directory: "/"
+ # Check the npm registry for updates every day (weekdays)
+ schedule:
+ interval: "monthly"
+
+ # Enable version updates for Docker
+ - package-ecosystem: "docker"
+ # Look for a `Dockerfile` in the `root` directory
+ directory: "/"
+ # Check for updates once a week
+ schedule:
+ interval: "monthly"
diff --git a/.github/workflows/issue-assignees.temp.yml b/.github/workflows/issue-assignees.temp.yml
new file mode 100644
index 0000000..83d5d6b
--- /dev/null
+++ b/.github/workflows/issue-assignees.temp.yml
@@ -0,0 +1,52 @@
+# force copy from tencent/tdesign
+name: Issue Add Assigness
+
+on:
+ issues:
+ types: [opened, edited]
+
+jobs:
+ mark-duplicate:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: wow-actions/auto-comment@v1
+ with:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ issuesOpened: |
+ 👋 @{{ author }},感谢给 TDesign 提出了 issue。
+ 请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。
+
+ # https://docs.github.com/cn/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#issues
+ - uses: 94dreamer/issue-assignees@main
+ id: assignees
+ with:
+ project_name: ${{github.event.repository.name}}
+ issue_title: ${{github.event.issue.title}}
+
+ - run: echo ${{ steps.assignees.outputs.contributors }}
+ - name: Add assigness
+ if: steps.assignees.outputs.contributors != ''
+ uses: actions-cool/issues-helper@v3
+ with:
+ actions: 'add-assignees'
+ token: ${{ secrets.GITHUB_TOKEN }}
+ issue-number: ${{ github.event.issue.number }}
+ assignees: ${{ steps.assignees.outputs.contributors }}
+
+ - run: |
+ contributors=${{ steps.assignees.outputs.contributors }}
+ contributorstring=${contributors//,/ @}
+ echo "::set-output name=string::@$contributorstring"
+ id: contributors
+
+ - name: 通知贡献者
+ if: steps.assignees.outputs.contributors != ''
+ uses: actions-cool/maintain-one-comment@v2.0.0
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ body: |
+ ♥️ 有劳 ${{ steps.contributors.outputs.string }} 尽快确认问题。
+ 确认有效后将下一步计划和可能需要的时间回复给 @${{ github.event.issue.user.login }} 。
+
+ number: ${{ github.event.issue.number }}
+ body-include: ""
diff --git a/.github/workflows/issue-help-wanted.temp.yml b/.github/workflows/issue-help-wanted.temp.yml
new file mode 100644
index 0000000..94e9bbd
--- /dev/null
+++ b/.github/workflows/issue-help-wanted.temp.yml
@@ -0,0 +1,22 @@
+# force copy from tencent/tdesign
+name: Issue Help wanted
+on:
+ issues:
+ types:
+ - labeled
+jobs:
+ add-comment:
+ if: github.event.label.name == 'help wanted'
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+ steps:
+ - name: Add comment
+ uses: peter-evans/create-or-update-comment@v1
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ 任何人都可以处理此问题。
+ **请务必在您的 `pull request` 中引用此问题。** :sparkles:
+ 感谢你的贡献! :sparkles:
+ reactions: heart
\ No newline at end of file
diff --git a/.github/workflows/issue-mark-duplicate.temp.yml b/.github/workflows/issue-mark-duplicate.temp.yml
new file mode 100644
index 0000000..3017723
--- /dev/null
+++ b/.github/workflows/issue-mark-duplicate.temp.yml
@@ -0,0 +1,19 @@
+# force copy from tencent/tdesign
+# 当在 issue 的 comment 回复类似 `Duplicate of #111` 这样的话,issue 将被自动打上 重复提交标签 并且 cloese
+name: Issue Mark Duplicate
+
+on:
+ issue_comment:
+ types: [created, edited]
+
+jobs:
+ mark-duplicate:
+ runs-on: ubuntu-latest
+ steps:
+ - name: mark-duplicate
+ uses: actions-cool/issues-helper@v2
+ with:
+ actions: "mark-duplicate"
+ token: ${{ secrets.GITHUB_TOKEN }}
+ duplicate-labels: "duplicate"
+ close-issue: true
diff --git a/.github/workflows/issue-reply.temp.yml b/.github/workflows/issue-reply.temp.yml
new file mode 100644
index 0000000..271a94f
--- /dev/null
+++ b/.github/workflows/issue-reply.temp.yml
@@ -0,0 +1,21 @@
+# force copy from tencent/tdesign
+# 当被打上 Need Reproduce 标签时候,自动提示需要重现实例
+
+name: ISSUE_REPLY
+
+on:
+ issues:
+ types: [labeled]
+
+jobs:
+ issue-reply:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Need Reproduce
+ if: github.event.label.name == 'Need Reproduce'
+ uses: actions-cool/issues-helper@v2
+ with:
+ actions: 'create-comment'
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ 你好 @${{ github.event.issue.user.login }}, 我们需要你提供一个在线的重现实例以便于我们帮你排查问题。你可以通过点击 [此处](https://codesandbox.io/) 创建一个 codesandbox 或者提供一个最小化的 GitHub 仓库。请确保选择准确的版本。
diff --git a/.github/workflows/issue-synchronize.temp.yml b/.github/workflows/issue-synchronize.temp.yml
new file mode 100644
index 0000000..4ca7de1
--- /dev/null
+++ b/.github/workflows/issue-synchronize.temp.yml
@@ -0,0 +1,17 @@
+# force copy from tencent/tdesign
+name: Issue Add Assigness
+
+on:
+ issues:
+ types: [opened, reopened]
+
+jobs:
+ mark-duplicate:
+ runs-on: ubuntu-latest
+ steps:
+ # https://docs.github.com/cn/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#issues
+ - uses: 94dreamer/create-report@main
+ with:
+ wxhook: ${{ secrets.WX_HOOK_URL }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+ type: 'issue'
\ No newline at end of file
diff --git a/.github/workflows/pr-spelling.temp.yml b/.github/workflows/pr-spelling.temp.yml
new file mode 100644
index 0000000..93e138e
--- /dev/null
+++ b/.github/workflows/pr-spelling.temp.yml
@@ -0,0 +1,12 @@
+# force copy from tencent/tdesign
+name: pr-spell-check
+on: [pull_request]
+
+jobs:
+ run:
+ name: Spell Check with Typos
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Check spelling
+ uses: crate-ci/typos@master
diff --git a/.github/workflows/preview-publish.yml b/.github/workflows/preview-publish.yml
new file mode 100644
index 0000000..364f99c
--- /dev/null
+++ b/.github/workflows/preview-publish.yml
@@ -0,0 +1,15 @@
+# 文件名建议统一为 preview-publish
+# 应用 preview.yml 的 demo
+name: PREVIEW_PUBLISH
+
+on:
+ workflow_run:
+ workflows: ["MAIN_PULL_REQUEST"]
+ types:
+ - completed
+
+jobs:
+ call-preview:
+ uses: Tencent/tdesign/.github/workflows/preview.yml@main
+ secrets:
+ TDESIGN_SURGE_TOKEN: ${{ secrets.TDESIGN_SURGE_TOKEN }}
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
new file mode 100644
index 0000000..280a82f
--- /dev/null
+++ b/.github/workflows/pull-request.yml
@@ -0,0 +1,14 @@
+# 文件名建议统一为 pull-request.yml
+# 应用 test-build.yml 的 demo
+
+name: MAIN_PULL_REQUEST
+
+on:
+ pull_request:
+ branches: [develop, main, site]
+ types: [opened, synchronize, reopened]
+
+jobs:
+ call-test-build:
+ uses: Tencent/tdesign/.github/workflows/test-build.yml@main
+# install lint
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..2c4cd52
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
+.vscode
+.history
+README.html
+
+.stylelintcache
+.idea
+yarn.lock
+package-lock.json
\ No newline at end of file
diff --git a/.husky/commit-msg b/.husky/commit-msg
new file mode 100644
index 0000000..ccfec39
--- /dev/null
+++ b/.husky/commit-msg
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx --no-install commitlint -e $GIT_PARAMS
\ No newline at end of file
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 0000000..c37466e
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+npx lint-staged
\ No newline at end of file
diff --git a/.husky/prepare-commit-msg b/.husky/prepare-commit-msg
new file mode 100644
index 0000000..71fe5b3
--- /dev/null
+++ b/.husky/prepare-commit-msg
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+exec < /dev/tty && npx git-cz --hook || true
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 0000000..5e92232
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,39 @@
+module.exports = {
+ // 一行最多 120 字符
+ printWidth: 120,
+ // 使用 2 个空格缩进
+ tabWidth: 2,
+ // 不使用缩进符,而使用空格
+ useTabs: false,
+ // 行尾需要有分号
+ semi: true,
+ // 使用单引号
+ singleQuote: true,
+ // 对象的 key 仅在必要时用引号
+ quoteProps: 'as-needed',
+ // jsx 不使用单引号,而使用双引号
+ jsxSingleQuote: false,
+ // 末尾需要有逗号
+ trailingComma: 'all',
+ // 大括号内的首尾需要空格
+ bracketSpacing: true,
+ // jsx 标签的反尖括号需要换行
+ jsxBracketSameLine: false,
+ // 箭头函数,只有一个参数的时候,也需要括号
+ arrowParens: 'always',
+ // 每个文件格式化的范围是文件的全部内容
+ rangeStart: 0,
+ rangeEnd: Infinity,
+ // 不需要写文件开头的 @prettier
+ requirePragma: false,
+ // 不需要自动在文件开头插入 @prettier
+ insertPragma: false,
+ // 使用默认的折行标准
+ proseWrap: 'preserve',
+ // 根据显示样式决定 html 要不要折行
+ htmlWhitespaceSensitivity: 'css',
+ // vue 文件中的 script 和 style 内不用缩进
+ vueIndentScriptAndStyle: false,
+ // 换行符使用 lf
+ endOfLine: 'lf',
+};
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 0000000..1b7da3c
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1,8 @@
+# .stylelintignore
+# 旧的不需打包的样式库
+*.min.css
+
+# 其他类型文件
+*.js
+*.jpg
+*.woff
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..789cbde
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) 2021-present TDesign
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/PROXY.md b/PROXY.md
new file mode 100644
index 0000000..8a56932
--- /dev/null
+++ b/PROXY.md
@@ -0,0 +1,22 @@
+# TDesign starter 本地开发联调
+
+## 工具准备
+
+- 浏览器插件:[SwitchyOmega](https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=zh-CNhttps://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=zh-CN)
+- 调试代理工具:[whistle](https://wproxy.org/whistle/)
+
+## 代理配置
+
+`npm run dev`开启本地服务后,可以配置代理将线上域名的非后台 api 路径(如`/api`)的静态文件请求代理到本地,这样就可以进行本地联调和前端代码热更新了。
+
+举例子:
+
+```
+/tdesign.tencent.com(?!\/api)/ 127.0.0.1:3001
+```
+
+其中:
+
+- tdesign.tencent.com:修改你的线上域名
+- /api:修改成后台请求路径
+- 3001:修改成本地服务端口
diff --git a/README-zh_CN.md b/README-zh_CN.md
new file mode 100644
index 0000000..cb90038
--- /dev/null
+++ b/README-zh_CN.md
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+简体中文 | [English](./README.md)
+
+### 项目简介
+
+TDesign Vue Starter 是一个基于 tdesign-vue,使用 `Vue2`、`Vite`开发,可进行个性化主题配置,旨在提供项目开箱即用的、配置式的中后台项目。
+
+
+ 在线预览
+ ·
+ 使用文档
+
+
+
+
+
+### 特性
+
+- 内置多种常用的中后台页面
+- 完善的目录结构
+- 完善的代码规范配置
+- 支持暗黑模式
+- 自定义主题颜色
+- 多种空间布局
+- 内置 Mock 数据方案
+
+### 使用
+
+> 通过 [tdesign-starter-cli](https://www.npmjs.com/package/tdesign-starter-cli) 初始化项目仓库
+
+```bash
+## 1、安装 tdesign-starter-cli
+npm i tdesign-starter-cli@latest -g
+
+## 2、创建项目
+td-starter init
+```
+
+### 开发
+
+```bash
+## 安装依赖
+npm install
+
+## 启动项目
+npm run dev
+```
+
+### 构建
+
+```bash
+## 构建正式环境
+npm run build
+
+## 构建测试环境
+npm run build:test
+```
+
+### 其他
+
+```bash
+## 预览构建产物
+npm run preview
+
+## 代码格式检查
+npm run lint
+
+## 代码格式检查与自动修复
+npm run lint:fix
+
+## style格式检查
+npm run stylelint
+
+## style格式检查与自动修复
+npm run stylelint:fix
+```
+
+### 如何贡献
+
+非常欢迎您的贡献!提交您的 [Issue](https://github.com/tencent/tdesign-vue-starter/issues/new/choose) 或者提交 [Pull Request](https://github.com/Tencent/tdesign-vue-starter/pulls)。
+
+#### 贡献提交规范
+
+- [Angular Convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)
+- [Vue Style Guide](https://v3.vuejs.org/style-guide/#rule-categories)
+
+### 兼容性
+
+| [ ](http://godban.github.io/browsers-support-badges/) IE / Edge | [ ](http://godban.github.io/browsers-support-badges/)Firefox | [ ](http://godban.github.io/browsers-support-badges/)Chrome | [ ](http://godban.github.io/browsers-support-badges/)Safari |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Edge >=84 | Firefox >=83 | Chrome >=84 | Safari >=14.1 |
+
+### 社区版本
+
+基于 TDesign Vue 的 starter-kit 有多种社区版本,访问 [社区链接](https://tdesign.tencent.com/starter/docs/vue/community-link) 可以访问更多版本。
+如果您也开发了 TDesign Starter 的社区版本,可以提交 Issue 或者直接给我们提Pull Request 😊。
+
+### 开源协议
+
+TDesign 遵循 [MIT 协议](https://github.com/Tencent/tdesign-vue-starter/LICENSE)。
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4ead8fd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+English | [简体中文](./README-zh_CN.md)
+### Introduction
+
+TDesign Vue Starter is a TDesign-based project developed with `Vue2`, `Vite`. It can be customized theme configuration, and aims to provide project out-of-the-box, configuration-style middle and background projects.
+
+
+ Live Preview
+ ·
+ Documentation
+
+
+
+
+### Features
+
+- Various provided pages for develop
+- Complete directory structure for develop
+- Code specification configuration
+- Support dark mode
+- Custom theme colors
+- Various space layouts
+- Mock data scheme
+
+### Usage
+
+> Initialize project with our CLI tool `tdesign-starter-cli`
+
+```bash
+## install tdesign-starter-cli
+npm i tdesign-starter-cli@latest -g
+
+## create project
+td-starter init
+```
+
+### Develop
+
+```bash
+## install dependencies
+npm install
+
+## set up
+npm run dev
+```
+
+### Build
+
+```bash
+## build
+npm run build
+
+## build for test
+npm run build:test
+```
+
+
+### Contributing Guide
+
+We welcome contributions to our project. Create your [Issue](https://github.com/tencent/tdesign-vue-starter/issues/new/choose) or Submit your [Pull Request](https://github.com/Tencent/tdesign-vue-starter/pulls).
+
+#### Commit Specification
+
+- [Angular Convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular)
+- [Vue Style Guide](https://v3.vuejs.org/style-guide/#rule-categories)
+
+### Browser Support
+
+| [ ](http://godban.github.io/browsers-support-badges/) IE / Edge | [ ](http://godban.github.io/browsers-support-badges/)Firefox | [ ](http://godban.github.io/browsers-support-badges/)Chrome | [ ](http://godban.github.io/browsers-support-badges/)Safari |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Edge >=84 | Firefox >=83 | Chrome >=84 | Safari >=14.1 |
+
+### Community Versions
+
+There are kinds of community versions of starter-kit based on TDesign Vue Next, visit [community-link](https://tdesign.tencent.com/starter/docs/vue-next/community-link) for more detail. If you developed a community versions of tdesign starter, please create a issue or submit a pull request to let us know 😊.
+
+### License
+
+The MIT License. Please see [the license file](LICENSE) for more information.
diff --git a/cache.dockerfile b/cache.dockerfile
new file mode 100644
index 0000000..5e0cae1
--- /dev/null
+++ b/cache.dockerfile
@@ -0,0 +1,15 @@
+# 选择一个 Base 镜像
+FROM node:12
+
+# 设置工作目录
+WORKDIR /space
+
+# 将 by 中的文件列表 COPY 过来
+COPY . .
+
+# 根据 COPY 过来的文件进行依赖的安装
+RUN npm i
+
+# 设置好需要的环境变量
+ENV NODE_PATH=/space/node_modules
+
diff --git a/commitlint.config.js b/commitlint.config.js
new file mode 100644
index 0000000..422b194
--- /dev/null
+++ b/commitlint.config.js
@@ -0,0 +1 @@
+module.exports = { extends: ['@commitlint/config-conventional'] };
diff --git a/globals.d.ts b/globals.d.ts
new file mode 100644
index 0000000..09a605d
--- /dev/null
+++ b/globals.d.ts
@@ -0,0 +1,13 @@
+// 通用声明
+declare type ClassName = { [className: string]: any } | ClassName[] | string;
+
+declare interface ImportMeta {
+ env: {
+ MODE: 'mock' | 'development' | 'test' | 'release' | 'site';
+ };
+}
+
+declare module '*.svg' {
+ const content: string;
+ export default content;
+}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..15db5e8
--- /dev/null
+++ b/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jsx.d.ts b/jsx.d.ts
new file mode 100644
index 0000000..84f32e2
--- /dev/null
+++ b/jsx.d.ts
@@ -0,0 +1,13 @@
+import Vue, { VNode } from 'vue';
+
+
+declare global {
+ namespace JSX {
+ type Element = VNode;
+ type ElementClass = Vue;
+ interface IntrinsicElements {
+ [elem: string]: any;
+ }
+ type IntrinsicAttributes = any;
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..03e28e0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,90 @@
+{
+ "name": "yunshangxie",
+ "version": "0.6.2",
+ "scripts": {
+ "dev:mock": "vite --open --mode mock",
+ "dev": "vite --open --mode development",
+ "dev:linux": "vite --mode development",
+ "build:test": "vite build --mode test",
+ "build": "vite build --mode release",
+ "build:site": "vite build --mode site",
+ "site:preview": "npm run build && cp -r dist _site",
+ "preview": "vite preview",
+ "lint": "eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0",
+ "lint:fix": "eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",
+ "stylelint": "stylelint src/**/*.{html,vue,sass,less}",
+ "stylelint:fix": "stylelint --cache --fix src/**/*.{html,vue,vss,sass,less}",
+ "prepare": "node -e \"if(require('fs').existsSync('.git')){process.exit(1)}\" || is-ci || husky install",
+ "test": "echo \"no test specified,work in process\"",
+ "test:coverage": "echo \"no test:coverage specified,work in process\""
+ },
+ "dependencies": {
+ "@wangeditor/editor-for-vue": "^1.0.2",
+ "axios": "^1.1.3",
+ "dayjs": "^1.10.8",
+ "echarts": "5.1.2",
+ "lodash": "^4.17.21",
+ "nprogress": "^0.2.0",
+ "qrcode.vue": "^1.7.0",
+ "tdesign-icons-vue": "^0.1.11",
+ "tdesign-vue": "^1.9.0",
+ "tvision-color": "~1.6.0",
+ "typescript": "^5.1.6",
+ "vue": "~2.6.14",
+ "vue-clipboard2": "^0.3.1",
+ "vue-router": "^3.5.1",
+ "vuex": "^3.6.2",
+ "vuex-router-sync": "^5.0.0"
+ },
+ "devDependencies": {
+ "@commitlint/cli": "^17.0.3",
+ "@commitlint/config-conventional": "^17.1.0",
+ "@types/vue-color": "^2.4.3",
+ "@typescript-eslint/eslint-plugin": "^6.17.0",
+ "@typescript-eslint/parser": "^6.17.0",
+ "commitizen": "^4.2.3",
+ "eslint": "^7.22.0",
+ "eslint-config-airbnb-base": "^14.2.1",
+ "eslint-config-prettier": "^8.5.0",
+ "eslint-import-resolver-alias": "^1.1.2",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-vue": "^7.8.0",
+ "husky": "^8.0.1",
+ "less": "^4.1.0",
+ "lint-staged": "^13.0.3",
+ "mockjs": "^1.1.0",
+ "prettier": "^2.6.0",
+ "stylelint": "~13.13.1",
+ "stylelint-config-prettier": "~9.0.3",
+ "stylelint-less": "1.0.5",
+ "stylelint-order": "~4.1.0",
+ "vite": "^4.1.4",
+ "vite-plugin-mock": "^3.0.0",
+ "vite-plugin-theme": "^0.8.1",
+ "vite-plugin-vue2": "^2.0.1",
+ "vite-plugin-vue2-svg": "~0.4.0",
+ "vue-template-compiler": "~2.6.14"
+ },
+ "config": {
+ "commitizen": {
+ "path": "./node_modules/cz-conventional-changelog"
+ }
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged",
+ "prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
+ "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
+ }
+ },
+ "lint-staged": {
+ "*.{js,jsx,vue,ts,tsx}": [
+ "prettier --write",
+ "npm run lint:fix"
+ ],
+ "*.{html,vue,vss,sass,less}": [
+ "npm run stylelint:fix"
+ ]
+ },
+ "description": "云商协"
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..086ac804a618e9bf16e23e7e5ce1407104c04add
GIT binary patch
literal 16958
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
I)r`RWH$?a1VgLXD
literal 0
HcmV?d00001
diff --git a/shims-vue.d.ts b/shims-vue.d.ts
new file mode 100644
index 0000000..5424484
--- /dev/null
+++ b/shims-vue.d.ts
@@ -0,0 +1,5 @@
+declare module '*.vue' {
+ import Vue from 'vue';
+
+ export default Vue;
+}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..d8b29fb
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/src/assets/assets-login-bg-black.png b/src/assets/assets-login-bg-black.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4dde4b65eb949a4c98105612dda0c02528f2fa3
GIT binary patch
literal 807777
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