feat: adjust

This commit is contained in:
Mrxtyyp 2024-12-19 21:57:03 +08:00
parent f56dc58277
commit 777499854e
34 changed files with 8491 additions and 766 deletions

View File

@ -1,153 +1,158 @@
<!DOCTYPE html>
<html lang="en" id="htmlRoot">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta
name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/>
<title><%= VITE_GLOB_APP_TITLE %></title>
<meta name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" />
<title>
<%= VITE_GLOB_APP_TITLE %>
</title>
<link rel="icon" href="/favicon.ico" />
</head>
<body>
<div id="app">
<style>
html[data-theme='dark'] .app-loading {
background-color: #2c344a;
}
html[data-theme='dark'] .app-loading .app-loading-title {
color: rgb(255 255 255 / 85%);
}
.app-loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
background-color: #f4f7f9;
}
.app-loading .app-loading-wrap {
display: flex;
position: absolute;
top: 50%;
left: 50%;
flex-direction: column;
align-items: center;
justify-content: center;
transform: translate3d(-50%, -50%, 0);
}
.app-loading .dots {
display: flex;
align-items: center;
justify-content: center;
padding: 98px;
}
.app-loading .app-loading-title {
display: flex;
align-items: center;
justify-content: center;
margin-top: 30px;
color: rgb(0 0 0 / 85%);
font-size: 30px;
}
.app-loading .app-loading-logo {
display: block;
width: 90px;
margin: 0 auto;
margin-bottom: 20px;
}
.dot {
display: inline-block;
position: relative;
box-sizing: border-box;
width: 48px;
height: 48px;
margin-top: 30px;
transform: rotate(45deg);
animation: ant-rotate 1.2s infinite linear;
font-size: 32px;
}
.dot i {
display: block;
position: absolute;
width: 20px;
height: 20px;
transform: scale(0.75);
transform-origin: 50% 50%;
animation: ant-spin-move 1s infinite linear alternate;
border-radius: 100%;
opacity: 0.3;
background-color: #0065cc;
}
.dot i:nth-child(1) {
top: 0;
left: 0;
}
.dot i:nth-child(2) {
top: 0;
right: 0;
animation-delay: 0.4s;
}
.dot i:nth-child(3) {
right: 0;
bottom: 0;
animation-delay: 0.8s;
}
.dot i:nth-child(4) {
bottom: 0;
left: 0;
animation-delay: 1.2s;
}
@keyframes ant-rotate {
to {
transform: rotate(405deg);
<div id="app">
<style>
html[data-theme='dark'] .app-loading {
background-color: #2c344a;
}
}
@keyframes ant-rotate {
to {
transform: rotate(405deg);
html[data-theme='dark'] .app-loading .app-loading-title {
color: rgb(255 255 255 / 85%);
}
}
@keyframes ant-spin-move {
to {
opacity: 1;
.app-loading {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
background-color: #f4f7f9;
}
}
@keyframes ant-spin-move {
to {
opacity: 1;
.app-loading .app-loading-wrap {
display: flex;
position: absolute;
top: 50%;
left: 50%;
flex-direction: column;
align-items: center;
justify-content: center;
transform: translate3d(-50%, -50%, 0);
}
}
</style>
<div class="app-loading">
<div class="app-loading-wrap">
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
<div class="app-loading-dots">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
.app-loading .dots {
display: flex;
align-items: center;
justify-content: center;
padding: 98px;
}
.app-loading .app-loading-title {
display: flex;
align-items: center;
justify-content: center;
margin-top: 30px;
color: rgb(0 0 0 / 85%);
font-size: 30px;
}
.app-loading .app-loading-logo {
display: block;
width: 200px;
margin: 0 auto;
margin-bottom: 20px;
}
.dot {
display: inline-block;
position: relative;
box-sizing: border-box;
width: 48px;
height: 48px;
margin-top: 30px;
transform: rotate(45deg);
animation: ant-rotate 1.2s infinite linear;
font-size: 32px;
}
.dot i {
display: block;
position: absolute;
width: 20px;
height: 20px;
transform: scale(0.75);
transform-origin: 50% 50%;
animation: ant-spin-move 1s infinite linear alternate;
border-radius: 100%;
opacity: 0.3;
background-color: #0065cc;
}
.dot i:nth-child(1) {
top: 0;
left: 0;
}
.dot i:nth-child(2) {
top: 0;
right: 0;
animation-delay: 0.4s;
}
.dot i:nth-child(3) {
right: 0;
bottom: 0;
animation-delay: 0.8s;
}
.dot i:nth-child(4) {
bottom: 0;
left: 0;
animation-delay: 1.2s;
}
@keyframes ant-rotate {
to {
transform: rotate(405deg);
}
}
@keyframes ant-rotate {
to {
transform: rotate(405deg);
}
}
@keyframes ant-spin-move {
to {
opacity: 1;
}
}
@keyframes ant-spin-move {
to {
opacity: 1;
}
}
</style>
<div class="app-loading">
<div class="app-loading-wrap">
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
<div class="app-loading-dots">
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
</div>
<!-- <div class="app-loading-title">
<%= VITE_GLOB_APP_TITLE %>
</div> -->
</div>
<div class="app-loading-title"><%= VITE_GLOB_APP_TITLE %></div>
</div>
</div>
</div>
<script type="module" src="/src/main.ts"></script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@ -0,0 +1,539 @@
{
"name": "@vben/stylelint-config",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@vben/stylelint-config",
"version": "1.0.0",
"license": "MIT",
"devDependencies": {
"postcss": "^8.4.38",
"postcss-html": "^1.6.0",
"postcss-less": "^6.0.0",
"postcss-scss": "^4.0.9",
"prettier": "^3.2.5",
"stylelint": "^16.4.0",
"stylelint-config-property-sort-order-smacss": "^10.0.0",
"stylelint-config-recommended-scss": "^14.0.0",
"stylelint-config-recommended-vue": "^1.5.0",
"stylelint-config-standard": "^36.0.0",
"stylelint-config-standard-scss": "^13.1.0",
"stylelint-order": "^6.0.4",
"stylelint-prettier": "^5.0.0"
}
},
"../../node_modules/.pnpm/postcss-html@1.6.0/node_modules/postcss-html": {
"version": "1.6.0",
"dev": true,
"license": "MIT",
"dependencies": {
"htmlparser2": "^8.0.0",
"js-tokens": "^8.0.0",
"postcss": "^8.4.0",
"postcss-safe-parser": "^6.0.0"
},
"devDependencies": {
"@ota-meshi/eslint-plugin": "^0.15.0",
"autoprefixer": "^10.3.7",
"chai": "~4.3.4",
"codecov": "^3.8.3",
"eslint": "^8.0.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-json-schema-validator": "^4.0.0",
"eslint-plugin-jsonc": "^2.0.0",
"eslint-plugin-n": "^16.6.2",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-node-dependencies": "^0.11.0",
"eslint-plugin-prettier": "^5.0.0",
"eslint-plugin-regexp": "^1.4.1",
"eslint-plugin-vue": "^9.0.0",
"eslint-plugin-yml": "^1.0.0",
"mocha": "^10.0.0",
"mocha-chai-jest-snapshot": "^1.1.3",
"nyc": "^15.1.0",
"postcss-less": "^6.0.0",
"postcss-scss": "^4.0.1",
"postcss-styl": "^0.12.0",
"prettier": "^3.0.0",
"stylelint": "^14.4.0",
"stylelint-config-standard": "^28.0.0",
"sugarss": "^4.0.1"
},
"engines": {
"node": "^12 || >=14"
}
},
"../../node_modules/.pnpm/postcss-less@6.0.0_postcss@8.4.38/node_modules/postcss-less": {
"version": "6.0.0",
"dev": true,
"license": "MIT",
"devDependencies": {
"@commitlint/cli": "^12.1.4",
"@commitlint/config-conventional": "^12.1.4",
"ava": "^3.15.0",
"cheerio": "^1.0.0-rc.10",
"eslint-config-shellscape": "^2.0.2",
"eslint-plugin-filenames": "^1.2.0",
"is-absolute-url": "^3.0.0",
"less": "^4.1.1",
"lint-staged": "^11.0.0",
"node-fetch": "^2.6.1",
"nyc": "^15.1.0",
"postcss": "^8.3.5",
"postcss-parser-tests": "^8.3.5",
"pre-commit": "^1.2.2",
"url-join": "^4.0.0"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"postcss": "^8.3.5"
}
},
"../../node_modules/.pnpm/postcss-scss@4.0.9_postcss@8.4.38/node_modules/postcss-scss": {
"version": "4.0.9",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss-scss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"engines": {
"node": ">=12.0"
},
"peerDependencies": {
"postcss": "^8.4.29"
}
},
"../../node_modules/.pnpm/postcss@8.4.38/node_modules/postcss": {
"version": "8.4.38",
"dev": true,
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.2.0"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"../../node_modules/.pnpm/prettier@3.2.5/node_modules/prettier": {
"version": "3.2.5",
"dev": true,
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"../../node_modules/.pnpm/stylelint-config-property-sort-order-smacss@10.0.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-property-sort-order-smacss": {
"version": "10.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
"css-property-sort-order-smacss": "~2.2.0",
"stylelint-order": "^6.0.4"
},
"devDependencies": {
"coveralls": "^3.1.0",
"eslint": "^8.2.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.25.2",
"jest": "^29.0.1",
"jest-light-runner": "^0.6.0",
"prettier": "^3.0.0",
"proxyquire": "^2.0.0",
"stylelint": "^14.0.0 || ^15.0.0 || ^16.0.0"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"stylelint": "^14.0.0 || ^15.0.0 || ^16.0.0"
}
},
"../../node_modules/.pnpm/stylelint-config-recommended-scss@14.0.0_postcss@8.4.38_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-recommended-scss": {
"version": "14.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
"postcss-scss": "^4.0.9",
"stylelint-config-recommended": "^14.0.0",
"stylelint-scss": "^6.0.0"
},
"devDependencies": {
"@stylelint/prettier-config": "^3.0.0",
"@stylelint/remark-preset": "^5.0.0",
"cross-env": "^7.0.3",
"eslint": "^8.55.0",
"eslint-config-stylelint": "^20.0.0",
"eslint-plugin-jest": "^27.6.0",
"jest": "^29.7.0",
"np": "^9.0.0",
"npm-run-all2": "^5.0.2",
"prettier": "^3.1.0",
"remark-cli": "^12.0.0",
"stylelint": "^16.0.2"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"postcss": "^8.3.3",
"stylelint": "^16.0.2"
},
"peerDependenciesMeta": {
"postcss": {
"optional": true
}
}
},
"../../node_modules/.pnpm/stylelint-config-recommended-vue@1.5.0_postcss-html@1.6.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-recommended-vue": {
"version": "1.5.0",
"dev": true,
"license": "MIT",
"dependencies": {
"semver": "^7.3.5",
"stylelint-config-html": ">=1.0.0",
"stylelint-config-recommended": ">=6.0.0"
},
"devDependencies": {
"@ota-meshi/eslint-plugin": "^0.13.0",
"eslint": "^8.0.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-json-schema-validator": "^4.0.0",
"eslint-plugin-jsonc": "^2.0.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-regexp": "^1.5.0",
"eslint-plugin-vue": "^9.0.0",
"eslint-plugin-yml": "^1.0.0",
"mocha": "^10.0.0",
"prettier": "^2.4.1",
"stylelint": "^15.0.0"
},
"engines": {
"node": "^12 || >=14"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
},
"peerDependencies": {
"postcss-html": "^1.0.0",
"stylelint": ">=14.0.0"
}
},
"../../node_modules/.pnpm/stylelint-config-standard-scss@13.1.0_postcss@8.4.38_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-standard-scss": {
"version": "13.1.0",
"dev": true,
"license": "MIT",
"dependencies": {
"stylelint-config-recommended-scss": "^14.0.0",
"stylelint-config-standard": "^36.0.0"
},
"devDependencies": {
"@stylelint/prettier-config": "^3.0.0",
"@stylelint/remark-preset": "^5.0.0",
"eslint": "^8.57.0",
"eslint-config-stylelint": "^21.0.0",
"np": "^10.0.2",
"npm-run-all2": "^5.0.2",
"prettier": "^3.2.5",
"remark-cli": "^12.0.0",
"stylelint": "^16.3.1"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"postcss": "^8.3.3",
"stylelint": "^16.3.1"
},
"peerDependenciesMeta": {
"postcss": {
"optional": true
}
}
},
"../../node_modules/.pnpm/stylelint-config-standard@36.0.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-standard": {
"version": "36.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
"stylelint-config-recommended": "^14.0.0"
},
"devDependencies": {
"@stylelint/prettier-config": "^3.0.0",
"@stylelint/remark-preset": "^5.0.0",
"eslint": "^8.56.0",
"eslint-config-stylelint": "^20.0.0",
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"np": "^9.2.0",
"npm-run-all": "^4.1.5",
"prettier": "^3.1.1",
"remark-cli": "^12.0.0",
"stylelint": "^16.1.0"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"stylelint": "^16.1.0"
}
},
"../../node_modules/.pnpm/stylelint-order@6.0.4_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-order": {
"version": "6.0.4",
"dev": true,
"license": "MIT",
"dependencies": {
"postcss": "^8.4.32",
"postcss-sorting": "^8.0.2"
},
"devDependencies": {
"eslint": "^8.55.0",
"eslint-config-hudochenkov": "^9.0.0",
"eslint-config-prettier": "^9.1.0",
"husky": "^8.0.3",
"jest": "^29.7.0",
"jest-light-runner": "^0.6.0",
"jest-preset-stylelint": "^7.0.0",
"jest-watch-typeahead": "^2.2.2",
"lint-staged": "^15.2.0",
"postcss-html": "^1.5.0",
"postcss-less": "^6.0.0",
"postcss-styled-syntax": "^0.5.0",
"prettier": "~3.1.0",
"prettier-config-hudochenkov": "^0.4.0",
"stylelint": "^16.0.1"
},
"peerDependencies": {
"stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1"
}
},
"../../node_modules/.pnpm/stylelint-prettier@5.0.0_prettier@3.2.5_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-prettier": {
"version": "5.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
"prettier-linter-helpers": "^1.0.0"
},
"devDependencies": {
"eslint": "^8.44.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-n": "^16.3.1",
"eslint-plugin-prettier": "^5.0.0",
"postcss": "^8.4.25",
"postcss-html": "^1.5.0",
"postcss-markdown": "^1.2.0",
"postcss-scss": "^4.0.6",
"postcss-styled-syntax": "^0.5.0",
"postcss-syntax": "^0.36.2",
"prettier": "^3.0.0",
"prettier-plugin-astro": "^0.12.1",
"prettier-plugin-svelte": "^3.0.0",
"strip-ansi": "^7.1.0",
"stylelint": "^16.0.1",
"stylelint-test-rule-node": "^0.2.0",
"svelte": "^4.1.0",
"typescript": "5.3.2"
},
"engines": {
"node": ">=18.12.0"
},
"peerDependencies": {
"prettier": ">=3.0.0",
"stylelint": ">=16.0.0"
}
},
"../../node_modules/.pnpm/stylelint@16.4.0_typescript@5.4.5/node_modules/stylelint": {
"version": "16.4.0",
"dev": true,
"license": "MIT",
"dependencies": {
"@csstools/css-parser-algorithms": "^2.6.1",
"@csstools/css-tokenizer": "^2.2.4",
"@csstools/media-query-list-parser": "^2.1.9",
"@csstools/selector-specificity": "^3.0.3",
"@dual-bundle/import-meta-resolve": "^4.0.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
"cosmiconfig": "^9.0.0",
"css-functions-list": "^3.2.2",
"css-tree": "^2.3.1",
"debug": "^4.3.4",
"fast-glob": "^3.3.2",
"fastest-levenshtein": "^1.0.16",
"file-entry-cache": "^8.0.0",
"global-modules": "^2.0.0",
"globby": "^11.1.0",
"globjoin": "^0.1.4",
"html-tags": "^3.3.1",
"ignore": "^5.3.1",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
"known-css-properties": "^0.30.0",
"mathml-tag-names": "^2.1.3",
"meow": "^13.2.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
"picocolors": "^1.0.0",
"postcss": "^8.4.38",
"postcss-resolve-nested-selector": "^0.1.1",
"postcss-safe-parser": "^7.0.0",
"postcss-selector-parser": "^6.0.16",
"postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^7.1.0",
"supports-hyperlinks": "^3.0.0",
"svg-tags": "^1.0.0",
"table": "^6.8.2",
"write-file-atomic": "^5.0.1"
},
"bin": {
"stylelint": "bin/stylelint.mjs"
},
"devDependencies": {
"@changesets/cli": "^2.27.1",
"@changesets/get-github-info": "^0.6.0",
"@jest/globals": "^29.7.0",
"@stylelint/prettier-config": "^3.0.0",
"@stylelint/remark-preset": "^5.0.0",
"@types/balanced-match": "^1.0.4",
"@types/css-tree": "^2.3.7",
"@types/debug": "^4.1.12",
"@types/file-entry-cache": "^5.0.4",
"@types/global-modules": "^2.0.2",
"@types/globjoin": "^0.1.2",
"@types/imurmurhash": "^0.1.4",
"@types/micromatch": "^4.0.7",
"@types/normalize-path": "^3.0.2",
"@types/postcss-less": "^4.0.6",
"@types/postcss-resolve-nested-selector": "^0.1.3",
"@types/postcss-safe-parser": "^5.0.4",
"@types/svg-tags": "^1.0.2",
"@types/write-file-atomic": "^4.0.3",
"benchmark": "^2.1.4",
"common-tags": "^1.8.2",
"deepmerge": "^4.3.1",
"eslint": "^8.57.0",
"eslint-config-stylelint": "^21.0.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jest": "^28.2.0",
"husky": "^9.0.11",
"jest": "^29.7.0",
"jest-preset-stylelint": "^7.0.0",
"jest-watch-typeahead": "^2.2.2",
"lint-staged": "^15.2.2",
"np": "^10.0.5",
"npm-run-all": "^4.1.5",
"patch-package": "^8.0.0",
"postcss-html": "^1.6.0",
"postcss-import": "^16.1.0",
"postcss-less": "^6.0.0",
"postcss-sass": "^0.5.0",
"postcss-scss": "^4.0.9",
"remark-cli": "^12.0.0",
"rollup": "^4.16.3",
"sugarss": "^4.0.1",
"typescript": "^5.4.5"
},
"engines": {
"node": ">=18.12.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/stylelint"
}
},
"node_modules/postcss": {
"resolved": "../../node_modules/.pnpm/postcss@8.4.38/node_modules/postcss",
"link": true
},
"node_modules/postcss-html": {
"resolved": "../../node_modules/.pnpm/postcss-html@1.6.0/node_modules/postcss-html",
"link": true
},
"node_modules/postcss-less": {
"resolved": "../../node_modules/.pnpm/postcss-less@6.0.0_postcss@8.4.38/node_modules/postcss-less",
"link": true
},
"node_modules/postcss-scss": {
"resolved": "../../node_modules/.pnpm/postcss-scss@4.0.9_postcss@8.4.38/node_modules/postcss-scss",
"link": true
},
"node_modules/prettier": {
"resolved": "../../node_modules/.pnpm/prettier@3.2.5/node_modules/prettier",
"link": true
},
"node_modules/stylelint": {
"resolved": "../../node_modules/.pnpm/stylelint@16.4.0_typescript@5.4.5/node_modules/stylelint",
"link": true
},
"node_modules/stylelint-config-property-sort-order-smacss": {
"resolved": "../../node_modules/.pnpm/stylelint-config-property-sort-order-smacss@10.0.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-property-sort-order-smacss",
"link": true
},
"node_modules/stylelint-config-recommended-scss": {
"resolved": "../../node_modules/.pnpm/stylelint-config-recommended-scss@14.0.0_postcss@8.4.38_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-recommended-scss",
"link": true
},
"node_modules/stylelint-config-recommended-vue": {
"resolved": "../../node_modules/.pnpm/stylelint-config-recommended-vue@1.5.0_postcss-html@1.6.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-recommended-vue",
"link": true
},
"node_modules/stylelint-config-standard": {
"resolved": "../../node_modules/.pnpm/stylelint-config-standard@36.0.0_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-standard",
"link": true
},
"node_modules/stylelint-config-standard-scss": {
"resolved": "../../node_modules/.pnpm/stylelint-config-standard-scss@13.1.0_postcss@8.4.38_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-config-standard-scss",
"link": true
},
"node_modules/stylelint-order": {
"resolved": "../../node_modules/.pnpm/stylelint-order@6.0.4_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-order",
"link": true
},
"node_modules/stylelint-prettier": {
"resolved": "../../node_modules/.pnpm/stylelint-prettier@5.0.0_prettier@3.2.5_stylelint@16.4.0_typescript@5.4.5_/node_modules/stylelint-prettier",
"link": true
}
}
}

148
internal/ts-config/package-lock.json generated Normal file
View File

@ -0,0 +1,148 @@
{
"name": "@vben/ts-config",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@vben/ts-config",
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@types/node": "^20.12.7",
"vite": "^5.2.10"
}
},
"../../node_modules/.pnpm/@types+node@20.12.7/node_modules/@types/node": {
"version": "20.12.7",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"../../node_modules/.pnpm/vite@5.2.10_@types+node@20.12.7_less@4.2.0_sass@1.75.0_terser@5.19.3/node_modules/vite": {
"version": "5.2.10",
"license": "MIT",
"dependencies": {
"esbuild": "^0.20.1",
"postcss": "^8.4.38",
"rollup": "^4.13.0"
},
"bin": {
"vite": "bin/vite.js"
},
"devDependencies": {
"@ampproject/remapping": "^2.3.0",
"@babel/parser": "^7.24.4",
"@jridgewell/trace-mapping": "^0.3.25",
"@polka/compression": "^1.0.0-next.25",
"@rollup/plugin-alias": "^5.1.0",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-dynamic-import-vars": "^2.1.2",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-typescript": "^11.1.6",
"@rollup/pluginutils": "^5.1.0",
"@types/escape-html": "^1.0.4",
"@types/pnpapi": "^0.0.5",
"acorn": "^8.11.3",
"acorn-walk": "^8.3.2",
"artichokie": "^0.2.0",
"cac": "^6.7.14",
"chokidar": "^3.6.0",
"connect": "^3.7.0",
"convert-source-map": "^2.0.0",
"cors": "^2.8.5",
"cross-spawn": "^7.0.3",
"debug": "^4.3.4",
"dep-types": "link:./src/types",
"dotenv": "^16.4.5",
"dotenv-expand": "^11.0.6",
"es-module-lexer": "^1.5.0",
"escape-html": "^1.0.3",
"estree-walker": "^3.0.3",
"etag": "^1.8.1",
"fast-glob": "^3.3.2",
"http-proxy": "^1.18.1",
"launch-editor-middleware": "^2.6.1",
"lightningcss": "^1.24.1",
"magic-string": "^0.30.9",
"micromatch": "^4.0.5",
"mlly": "^1.6.1",
"mrmime": "^2.0.0",
"open": "^8.4.2",
"parse5": "^7.1.2",
"pathe": "^1.1.2",
"periscopic": "^4.0.2",
"picocolors": "^1.0.0",
"picomatch": "^2.3.1",
"postcss-import": "^16.1.0",
"postcss-load-config": "^4.0.2",
"postcss-modules": "^6.0.0",
"resolve.exports": "^2.0.2",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-esbuild": "^6.1.1",
"rollup-plugin-license": "^3.3.1",
"sass": "^1.74.1",
"sirv": "^2.0.4",
"source-map-support": "^0.5.21",
"strip-ansi": "^7.1.0",
"strip-literal": "^2.1.0",
"tsconfck": "^3.0.3",
"tslib": "^2.6.2",
"types": "link:./types",
"ufo": "^1.5.3",
"ws": "^8.16.0"
},
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
},
"peerDependencies": {
"@types/node": "^18.0.0 || >=20.0.0",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
}
}
},
"node_modules/@types/node": {
"resolved": "../../node_modules/.pnpm/@types+node@20.12.7/node_modules/@types/node",
"link": true
},
"node_modules/vite": {
"resolved": "../../node_modules/.pnpm/vite@5.2.10_@types+node@20.12.7_less@4.2.0_sass@1.75.0_terser@5.19.3/node_modules/vite",
"link": true
}
}
}

1050
internal/vite-config/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,223 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.modifierNames = exports.foregroundColorNames = exports.default = exports.colorNames = exports.backgroundColorNames = void 0;const ANSI_BACKGROUND_OFFSET = 10;
const wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`;
const wrapAnsi256 = (offset = 0) => (code) => `\u001B[${38 + offset};5;${code}m`;
const wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`;
const styles = {
modifier: {
reset: [0, 0],
// 21 isn't widely supported and 22 does the same thing
bold: [1, 22],
dim: [2, 22],
italic: [3, 23],
underline: [4, 24],
overline: [53, 55],
inverse: [7, 27],
hidden: [8, 28],
strikethrough: [9, 29]
},
color: {
black: [30, 39],
red: [31, 39],
green: [32, 39],
yellow: [33, 39],
blue: [34, 39],
magenta: [35, 39],
cyan: [36, 39],
white: [37, 39],
// Bright color
blackBright: [90, 39],
gray: [90, 39], // Alias of `blackBright`
grey: [90, 39], // Alias of `blackBright`
redBright: [91, 39],
greenBright: [92, 39],
yellowBright: [93, 39],
blueBright: [94, 39],
magentaBright: [95, 39],
cyanBright: [96, 39],
whiteBright: [97, 39]
},
bgColor: {
bgBlack: [40, 49],
bgRed: [41, 49],
bgGreen: [42, 49],
bgYellow: [43, 49],
bgBlue: [44, 49],
bgMagenta: [45, 49],
bgCyan: [46, 49],
bgWhite: [47, 49],
// Bright color
bgBlackBright: [100, 49],
bgGray: [100, 49], // Alias of `bgBlackBright`
bgGrey: [100, 49], // Alias of `bgBlackBright`
bgRedBright: [101, 49],
bgGreenBright: [102, 49],
bgYellowBright: [103, 49],
bgBlueBright: [104, 49],
bgMagentaBright: [105, 49],
bgCyanBright: [106, 49],
bgWhiteBright: [107, 49]
}
};
const modifierNames = Object.keys(styles.modifier);exports.modifierNames = modifierNames;
const foregroundColorNames = Object.keys(styles.color);exports.foregroundColorNames = foregroundColorNames;
const backgroundColorNames = Object.keys(styles.bgColor);exports.backgroundColorNames = backgroundColorNames;
const colorNames = [...foregroundColorNames, ...backgroundColorNames];exports.colorNames = colorNames;
function assembleStyles() {
const codes = new Map();
for (const [groupName, group] of Object.entries(styles)) {
for (const [styleName, style] of Object.entries(group)) {
styles[styleName] = {
open: `\u001B[${style[0]}m`,
close: `\u001B[${style[1]}m`
};
group[styleName] = styles[styleName];
codes.set(style[0], style[1]);
}
Object.defineProperty(styles, groupName, {
value: group,
enumerable: false
});
}
Object.defineProperty(styles, 'codes', {
value: codes,
enumerable: false
});
styles.color.close = '\u001B[39m';
styles.bgColor.close = '\u001B[49m';
styles.color.ansi = wrapAnsi16();
styles.color.ansi256 = wrapAnsi256();
styles.color.ansi16m = wrapAnsi16m();
styles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
styles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
styles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js
Object.defineProperties(styles, {
rgbToAnsi256: {
value(red, green, blue) {
// We use the extended greyscale palette here, with the exception of
// black and white. normal palette only has 4 greyscale shades.
if (red === green && green === blue) {
if (red < 8) {
return 16;
}
if (red > 248) {
return 231;
}
return Math.round((red - 8) / 247 * 24) + 232;
}
return 16 +
36 * Math.round(red / 255 * 5) +
6 * Math.round(green / 255 * 5) +
Math.round(blue / 255 * 5);
},
enumerable: false
},
hexToRgb: {
value(hex) {
const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
if (!matches) {
return [0, 0, 0];
}
let [colorString] = matches;
if (colorString.length === 3) {
colorString = [...colorString].map((character) => character + character).join('');
}
const integer = Number.parseInt(colorString, 16);
return [
/* eslint-disable no-bitwise */
integer >> 16 & 0xFF,
integer >> 8 & 0xFF,
integer & 0xFF
/* eslint-enable no-bitwise */];
},
enumerable: false
},
hexToAnsi256: {
value: (hex) => styles.rgbToAnsi256(...styles.hexToRgb(hex)),
enumerable: false
},
ansi256ToAnsi: {
value(code) {
if (code < 8) {
return 30 + code;
}
if (code < 16) {
return 90 + (code - 8);
}
let red;
let green;
let blue;
if (code >= 232) {
red = ((code - 232) * 10 + 8) / 255;
green = red;
blue = red;
} else {
code -= 16;
const remainder = code % 36;
red = Math.floor(code / 36) / 5;
green = Math.floor(remainder / 6) / 5;
blue = remainder % 6 / 5;
}
const value = Math.max(red, green, blue) * 2;
if (value === 0) {
return 30;
}
// eslint-disable-next-line no-bitwise
let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
if (value === 2) {
result += 60;
}
return result;
},
enumerable: false
},
rgbToAnsi: {
value: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),
enumerable: false
},
hexToAnsi: {
value: (hex) => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),
enumerable: false
}
});
return styles;
}
const ansiStyles = assembleStyles();var _default =
ansiStyles;exports.default = _default; /* v7-28b0a5febe3644a0 */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,94 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.isIgnoredByIgnoreFilesSync = exports.isIgnoredByIgnoreFiles = exports.isGitIgnoredSync = exports.isGitIgnored = exports.GITIGNORE_FILES_PATTERN = void 0;var _nodeProcess = _interopRequireDefault(require("node:process"));
var _nodeFs = _interopRequireDefault(require("node:fs"));
var _nodePath = _interopRequireDefault(require("node:path"));
var _fastGlob = _interopRequireDefault(require("fast-glob"));
var _ignore = _interopRequireDefault(require("ignore"));
var _slash = _interopRequireDefault(require("slash"));
var _utilities = require("./utilities.js");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
const ignoreFilesGlobOptions = {
ignore: [
'**/node_modules',
'**/flow-typed',
'**/coverage',
'**/.git'],
absolute: true,
dot: true
};
const GITIGNORE_FILES_PATTERN = '**/.gitignore';exports.GITIGNORE_FILES_PATTERN = GITIGNORE_FILES_PATTERN;
const applyBaseToPattern = (pattern, base) => (0, _utilities.isNegativePattern)(pattern) ?
'!' + _nodePath.default.posix.join(base, pattern.slice(1)) :
_nodePath.default.posix.join(base, pattern);
const parseIgnoreFile = (file, cwd) => {
const base = (0, _slash.default)(_nodePath.default.relative(cwd, _nodePath.default.dirname(file.filePath)));
return file.content.
split(/\r?\n/).
filter((line) => line && !line.startsWith('#')).
map((pattern) => applyBaseToPattern(pattern, base));
};
const toRelativePath = (fileOrDirectory, cwd) => {
cwd = (0, _slash.default)(cwd);
if (_nodePath.default.isAbsolute(fileOrDirectory)) {
if ((0, _slash.default)(fileOrDirectory).startsWith(cwd)) {
return _nodePath.default.relative(cwd, fileOrDirectory);
}
throw new Error(`Path ${fileOrDirectory} is not in cwd ${cwd}`);
}
return fileOrDirectory;
};
const getIsIgnoredPredicate = (files, cwd) => {
const patterns = files.flatMap((file) => parseIgnoreFile(file, cwd));
const ignores = (0, _ignore.default)().add(patterns);
return (fileOrDirectory) => {
fileOrDirectory = (0, _utilities.toPath)(fileOrDirectory);
fileOrDirectory = toRelativePath(fileOrDirectory, cwd);
return fileOrDirectory ? ignores.ignores((0, _slash.default)(fileOrDirectory)) : false;
};
};
const normalizeOptions = (options = {}) => ({
cwd: (0, _utilities.toPath)(options.cwd) || _nodeProcess.default.cwd(),
suppressErrors: Boolean(options.suppressErrors),
deep: typeof options.deep === 'number' ? options.deep : Number.POSITIVE_INFINITY
});
const isIgnoredByIgnoreFiles = async (patterns, options) => {
const { cwd, suppressErrors, deep } = normalizeOptions(options);
const paths = await (0, _fastGlob.default)(patterns, { cwd, suppressErrors, deep, ...ignoreFilesGlobOptions });
const files = await Promise.all(
paths.map(async (filePath) => ({
filePath,
content: await _nodeFs.default.promises.readFile(filePath, 'utf8')
}))
);
return getIsIgnoredPredicate(files, cwd);
};exports.isIgnoredByIgnoreFiles = isIgnoredByIgnoreFiles;
const isIgnoredByIgnoreFilesSync = (patterns, options) => {
const { cwd, suppressErrors, deep } = normalizeOptions(options);
const paths = _fastGlob.default.sync(patterns, { cwd, suppressErrors, deep, ...ignoreFilesGlobOptions });
const files = paths.map((filePath) => ({
filePath,
content: _nodeFs.default.readFileSync(filePath, 'utf8')
}));
return getIsIgnoredPredicate(files, cwd);
};exports.isIgnoredByIgnoreFilesSync = isIgnoredByIgnoreFilesSync;
const isGitIgnored = (options) => isIgnoredByIgnoreFiles(GITIGNORE_FILES_PATTERN, options);exports.isGitIgnored = isGitIgnored;
const isGitIgnoredSync = (options) => isIgnoredByIgnoreFilesSync(GITIGNORE_FILES_PATTERN, options);exports.isGitIgnoredSync = isGitIgnoredSync; /* v7-0eff28242bf3ace2 */

View File

@ -0,0 +1,224 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.isDynamicPattern = exports.globbySync = exports.globbyStream = exports.globby = exports.generateGlobTasksSync = exports.generateGlobTasks = void 0;Object.defineProperty(exports, "isGitIgnored", { enumerable: true, get: function () {return _ignore.isGitIgnored;} });Object.defineProperty(exports, "isGitIgnoredSync", { enumerable: true, get: function () {return _ignore.isGitIgnoredSync;} });var _nodeFs = _interopRequireDefault(require("node:fs"));
var _nodePath = _interopRequireDefault(require("node:path"));
var _merge = _interopRequireDefault(require("merge2"));
var _fastGlob = _interopRequireDefault(require("fast-glob"));
var _dirGlob = _interopRequireDefault(require("dir-glob"));
var _ignore = require("./ignore.js");
var _utilities = require("./utilities.js");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
const assertPatternsInput = (patterns) => {
if (patterns.some((pattern) => typeof pattern !== 'string')) {
throw new TypeError('Patterns must be a string or an array of strings');
}
};
const toPatternsArray = (patterns) => {
patterns = [...new Set([patterns].flat())];
assertPatternsInput(patterns);
return patterns;
};
const checkCwdOption = (options) => {
if (!options.cwd) {
return;
}
let stat;
try {
stat = _nodeFs.default.statSync(options.cwd);
} catch {
return;
}
if (!stat.isDirectory()) {
throw new Error('The `cwd` option must be a path to a directory');
}
};
const normalizeOptions = (options = {}) => {
options = {
...options,
ignore: options.ignore || [],
expandDirectories: options.expandDirectories === undefined ?
true :
options.expandDirectories,
cwd: (0, _utilities.toPath)(options.cwd)
};
checkCwdOption(options);
return options;
};
const normalizeArguments = (fn) => async (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
const normalizeArgumentsSync = (fn) => (patterns, options) => fn(toPatternsArray(patterns), normalizeOptions(options));
const getIgnoreFilesPatterns = (options) => {
const { ignoreFiles, gitignore } = options;
const patterns = ignoreFiles ? toPatternsArray(ignoreFiles) : [];
if (gitignore) {
patterns.push(_ignore.GITIGNORE_FILES_PATTERN);
}
return patterns;
};
const getFilter = async (options) => {
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
return createFilterFunction(
ignoreFilesPatterns.length > 0 && (await (0, _ignore.isIgnoredByIgnoreFiles)(ignoreFilesPatterns, options))
);
};
const getFilterSync = (options) => {
const ignoreFilesPatterns = getIgnoreFilesPatterns(options);
return createFilterFunction(
ignoreFilesPatterns.length > 0 && (0, _ignore.isIgnoredByIgnoreFilesSync)(ignoreFilesPatterns, options)
);
};
const createFilterFunction = (isIgnored) => {
const seen = new Set();
return (fastGlobResult) => {
const path = fastGlobResult.path || fastGlobResult;
const pathKey = _nodePath.default.normalize(path);
const seenOrIgnored = seen.has(pathKey) || isIgnored && isIgnored(path);
seen.add(pathKey);
return !seenOrIgnored;
};
};
const unionFastGlobResults = (results, filter) => results.flat().filter((fastGlobResult) => filter(fastGlobResult));
const unionFastGlobStreams = (streams, filter) => (0, _merge.default)(streams).pipe(new _utilities.FilterStream((fastGlobResult) => filter(fastGlobResult)));
const convertNegativePatterns = (patterns, options) => {
const tasks = [];
while (patterns.length > 0) {
const index = patterns.findIndex((pattern) => (0, _utilities.isNegativePattern)(pattern));
if (index === -1) {
tasks.push({ patterns, options });
break;
}
const ignorePattern = patterns[index].slice(1);
for (const task of tasks) {
task.options.ignore.push(ignorePattern);
}
if (index !== 0) {
tasks.push({
patterns: patterns.slice(0, index),
options: {
...options,
ignore: [
...options.ignore,
ignorePattern]
}
});
}
patterns = patterns.slice(index + 1);
}
return tasks;
};
const getDirGlobOptions = (options, cwd) => ({
...(cwd ? { cwd } : {}),
...(Array.isArray(options) ? { files: options } : options)
});
const generateTasks = async (patterns, options) => {
const globTasks = convertNegativePatterns(patterns, options);
const { cwd, expandDirectories } = options;
if (!expandDirectories) {
return globTasks;
}
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? { cwd } : undefined;
return Promise.all(
globTasks.map(async (task) => {
let { patterns, options } = task;
[
patterns,
options.ignore] =
await Promise.all([
(0, _dirGlob.default)(patterns, patternExpandOptions),
(0, _dirGlob.default)(options.ignore, ignoreExpandOptions)]
);
return { patterns, options };
})
);
};
const generateTasksSync = (patterns, options) => {
const globTasks = convertNegativePatterns(patterns, options);
const { cwd, expandDirectories } = options;
if (!expandDirectories) {
return globTasks;
}
const patternExpandOptions = getDirGlobOptions(expandDirectories, cwd);
const ignoreExpandOptions = cwd ? { cwd } : undefined;
return globTasks.map((task) => {
let { patterns, options } = task;
patterns = _dirGlob.default.sync(patterns, patternExpandOptions);
options.ignore = _dirGlob.default.sync(options.ignore, ignoreExpandOptions);
return { patterns, options };
});
};
const globby = normalizeArguments(async (patterns, options) => {
const [
tasks,
filter] =
await Promise.all([
generateTasks(patterns, options),
getFilter(options)]
);
const results = await Promise.all(tasks.map((task) => (0, _fastGlob.default)(task.patterns, task.options)));
return unionFastGlobResults(results, filter);
});exports.globby = globby;
const globbySync = normalizeArgumentsSync((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const results = tasks.map((task) => _fastGlob.default.sync(task.patterns, task.options));
return unionFastGlobResults(results, filter);
});exports.globbySync = globbySync;
const globbyStream = normalizeArgumentsSync((patterns, options) => {
const tasks = generateTasksSync(patterns, options);
const filter = getFilterSync(options);
const streams = tasks.map((task) => _fastGlob.default.stream(task.patterns, task.options));
return unionFastGlobStreams(streams, filter);
});exports.globbyStream = globbyStream;
const isDynamicPattern = normalizeArgumentsSync(
(patterns, options) => patterns.some((pattern) => _fastGlob.default.isDynamicPattern(pattern, options))
);exports.isDynamicPattern = isDynamicPattern;
const generateGlobTasks = normalizeArguments(generateTasks);exports.generateGlobTasks = generateGlobTasks;
const generateGlobTasksSync = normalizeArgumentsSync(generateTasksSync);exports.generateGlobTasksSync = generateGlobTasksSync; /* v7-5fbae7b710226867 */

View File

@ -0,0 +1,17 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.toPath = exports.isNegativePattern = exports.FilterStream = void 0;var _nodeUrl = require("node:url");
var _nodeStream = require("node:stream");
const toPath = (urlOrPath) => urlOrPath instanceof URL ? (0, _nodeUrl.fileURLToPath)(urlOrPath) : urlOrPath;exports.toPath = toPath;
class FilterStream extends _nodeStream.Transform {
constructor(filter) {
super({
objectMode: true,
transform(data, encoding, callback) {
callback(undefined, filter(data) ? data : undefined);
}
});
}
}exports.FilterStream = FilterStream;
const isNegativePattern = (pattern) => pattern[0] === '!';exports.isNegativePattern = isNegativePattern; /* v7-259a918aa3543465 */

View File

@ -0,0 +1,122 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = prettyBytes;const BYTE_UNITS = [
'B',
'kB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB'];
const BIBYTE_UNITS = [
'B',
'KiB',
'MiB',
'GiB',
'TiB',
'PiB',
'EiB',
'ZiB',
'YiB'];
const BIT_UNITS = [
'b',
'kbit',
'Mbit',
'Gbit',
'Tbit',
'Pbit',
'Ebit',
'Zbit',
'Ybit'];
const BIBIT_UNITS = [
'b',
'kibit',
'Mibit',
'Gibit',
'Tibit',
'Pibit',
'Eibit',
'Zibit',
'Yibit'];
/*
Formats the given number using `Number#toLocaleString`.
- If locale is a string, the value is expected to be a locale-key (for example: `de`).
- If locale is true, the system default locale is used for translation.
- If no value for locale is specified, the number is returned unmodified.
*/
const toLocaleString = (number, locale, options) => {
let result = number;
if (typeof locale === 'string' || Array.isArray(locale)) {
result = number.toLocaleString(locale, options);
} else if (locale === true || options !== undefined) {
result = number.toLocaleString(undefined, options);
}
return result;
};
function prettyBytes(number, options) {
if (!Number.isFinite(number)) {
throw new TypeError(`Expected a finite number, got ${typeof number}: ${number}`);
}
options = {
bits: false,
binary: false,
space: true,
...options
};
const UNITS = options.bits ?
options.binary ? BIBIT_UNITS : BIT_UNITS :
options.binary ? BIBYTE_UNITS : BYTE_UNITS;
const separator = options.space ? ' ' : '';
if (options.signed && number === 0) {
return ` 0${separator}${UNITS[0]}`;
}
const isNegative = number < 0;
const prefix = isNegative ? '-' : options.signed ? '+' : '';
if (isNegative) {
number = -number;
}
let localeOptions;
if (options.minimumFractionDigits !== undefined) {
localeOptions = { minimumFractionDigits: options.minimumFractionDigits };
}
if (options.maximumFractionDigits !== undefined) {
localeOptions = { maximumFractionDigits: options.maximumFractionDigits, ...localeOptions };
}
if (number < 1) {
const numberString = toLocaleString(number, options.locale, localeOptions);
return prefix + numberString + separator + UNITS[0];
}
const exponent = Math.min(Math.floor(options.binary ? Math.log(number) / Math.log(1024) : Math.log10(number) / 3), UNITS.length - 1);
number /= (options.binary ? 1024 : 1000) ** exponent;
if (!localeOptions) {
number = number.toPrecision(3);
}
const numberString = toLocaleString(Number(number), options.locale, localeOptions);
const unit = UNITS[exponent];
return prefix + numberString + separator + unit;
} /* v7-a4da9a491bb897bd */

View File

@ -0,0 +1,10 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = slash;function slash(path) {
const isExtendedLengthPath = /^\\\\\?\\/.test(path);
const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex
if (isExtendedLengthPath || hasNonAscii) {
return path;
}
return path.replace(/\\/g, '/');
} /* v7-56da1c6249207534 */

View File

@ -0,0 +1,225 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.Chalk = void 0;Object.defineProperty(exports, "backgroundColorNames", { enumerable: true, get: function () {return _index.backgroundColorNames;} });Object.defineProperty(exports, "backgroundColors", { enumerable: true, get: function () {return _index.backgroundColorNames;} });exports.chalkStderr = void 0;Object.defineProperty(exports, "colorNames", { enumerable: true, get: function () {return _index.colorNames;} });Object.defineProperty(exports, "colors", { enumerable: true, get: function () {return _index.colorNames;} });exports.default = void 0;Object.defineProperty(exports, "foregroundColorNames", { enumerable: true, get: function () {return _index.foregroundColorNames;} });Object.defineProperty(exports, "foregroundColors", { enumerable: true, get: function () {return _index.foregroundColorNames;} });Object.defineProperty(exports, "modifierNames", { enumerable: true, get: function () {return _index.modifierNames;} });Object.defineProperty(exports, "modifiers", { enumerable: true, get: function () {return _index.modifierNames;} });exports.supportsColorStderr = exports.supportsColor = void 0;var _ansiStyles = _interopRequireDefault(require("#ansi-styles"));
var _supportsColor = _interopRequireDefault(require("#supports-color"));
var _utilities = require("./utilities.js");
var _index = require("./vendor/ansi-styles/index.js");function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}const { stdout: stdoutColor, stderr: stderrColor } = _supportsColor.default;exports.supportsColorStderr = stderrColor;exports.supportsColor = stdoutColor;const GENERATOR = Symbol('GENERATOR');const STYLER = Symbol('STYLER');const IS_EMPTY = Symbol('IS_EMPTY'); // `supportsColor.level` → `ansiStyles.color[name]` mapping
const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];const styles = Object.create(null);const applyOptions = (object, options = {}) => {if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {throw new Error('The `level` option should be an integer from 0 to 3');} // Detect level if not set manually
const colorLevel = stdoutColor ? stdoutColor.level : 0;object.level = options.level === undefined ? colorLevel : options.level;};class Chalk {constructor(options) {// eslint-disable-next-line no-constructor-return
return chalkFactory(options);}}exports.Chalk = Chalk;const chalkFactory = (options) => {const chalk = (...strings) => strings.join(' ');applyOptions(chalk, options);Object.setPrototypeOf(chalk, createChalk.prototype);return chalk;};function createChalk(options) {return chalkFactory(options);}Object.setPrototypeOf(createChalk.prototype, Function.prototype);for (const [styleName, style] of Object.entries(_ansiStyles.default)) {styles[styleName] = { get() {const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);Object.defineProperty(this, styleName, { value: builder });return builder;} };}styles.visible = { get() {const builder = createBuilder(this, this[STYLER], true);Object.defineProperty(this, 'visible', { value: builder });return builder;} };const getModelAnsi = (model, level, type, ...arguments_) => {if (model === 'rgb') {if (level === 'ansi16m') {return _ansiStyles.default[type].ansi16m(...arguments_);}if (level === 'ansi256') {return _ansiStyles.default[type].ansi256(_ansiStyles.default.rgbToAnsi256(...arguments_));}return _ansiStyles.default[type].ansi(_ansiStyles.default.rgbToAnsi(...arguments_));}if (model === 'hex') {return getModelAnsi('rgb', level, type, ..._ansiStyles.default.hexToRgb(...arguments_));}return _ansiStyles.default[type][model](...arguments_);};const usedModels = ['rgb', 'hex', 'ansi256'];for (const model of usedModels) {styles[model] = { get() {const { level } = this;return function (...arguments_) {const styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), _ansiStyles.default.color.close, this[STYLER]);return createBuilder(this, styler, this[IS_EMPTY]);};} };const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);styles[bgModel] = { get() {const { level } = this;return function (...arguments_) {const styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), _ansiStyles.default.bgColor.close, this[STYLER]);return createBuilder(this, styler, this[IS_EMPTY]);};} };}const proto = Object.defineProperties(() => {}, { ...styles, level: { enumerable: true, get() {return this[GENERATOR].level;}, set(level) {this[GENERATOR].level = level;} } });const createStyler = (open, close, parent) => {let openAll;let closeAll;if (parent === undefined) {openAll = open;closeAll = close;} else {openAll = parent.openAll + open;closeAll = close + parent.closeAll;}return { open, close, openAll, closeAll, parent };};const createBuilder = (self, _styler, _isEmpty) => {// Single argument is hot path, implicit coercion is faster than anything
// eslint-disable-next-line no-implicit-coercion
const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? '' + arguments_[0] : arguments_.join(' ')); // We alter the prototype because we must return a function, but there is
// no way to create a function with a different prototype
Object.setPrototypeOf(builder, proto);builder[GENERATOR] = self;builder[STYLER] = _styler;builder[IS_EMPTY] = _isEmpty;return builder;};const applyStyle = (self, string) => {if (self.level <= 0 || !string) {return self[IS_EMPTY] ? '' : string;}let styler = self[STYLER];if (styler === undefined) {return string;}const { openAll, closeAll } = styler;if (string.includes('\u001B')) {while (styler !== undefined) {// Replace any instances already present with a re-opening code
// otherwise only the part of the string until said closing code
// will be colored, and the rest will simply be 'plain'.
string = (0, _utilities.stringReplaceAll)(string, styler.close, styler.open);styler = styler.parent;}} // We can move both next actions out of loop, because remaining actions in loop won't have
// any/visible effect on parts we add here. Close the styling before a linebreak and reopen
// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92
const lfIndex = string.indexOf('\n');if (lfIndex !== -1) {string = (0, _utilities.stringEncaseCRLFWithFirstIndex)(string, closeAll, openAll, lfIndex);}return openAll + string + closeAll;};Object.defineProperties(createChalk.prototype, styles);const chalk = createChalk();const chalkStderr = createChalk({ level: stderrColor ? stderrColor.level : 0 });exports.chalkStderr = chalkStderr;var _default =
chalk;exports.default = _default; /* v7-ee09f19624a0936b */

View File

@ -0,0 +1,33 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.stringEncaseCRLFWithFirstIndex = stringEncaseCRLFWithFirstIndex;exports.stringReplaceAll = stringReplaceAll; // TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.
function stringReplaceAll(string, substring, replacer) {
let index = string.indexOf(substring);
if (index === -1) {
return string;
}
const substringLength = substring.length;
let endIndex = 0;
let returnValue = '';
do {
returnValue += string.slice(endIndex, index) + substring + replacer;
endIndex = index + substringLength;
index = string.indexOf(substring, endIndex);
} while (index !== -1);
returnValue += string.slice(endIndex);
return returnValue;
}
function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
let endIndex = 0;
let returnValue = '';
do {
const gotCR = string[index - 1] === '\r';
returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? '\r\n' : '\n') + postfix;
endIndex = index + 1;
index = string.indexOf('\n', endIndex);
} while (index !== -1);
returnValue += string.slice(endIndex);
return returnValue;
} /* v7-255e1aba69efb0ea */

View File

@ -0,0 +1,10 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _unbuild = require("unbuild");var _default =
(0, _unbuild.defineBuildConfig)({
clean: true,
entries: ['src/index'],
declaration: true,
rollup: {
emitCJS: true
}
});exports.default = _default; /* v7-e617738d05bbbbdb */

View File

@ -0,0 +1,182 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.createSupportsColor = createSupportsColor;exports.default = void 0;var _nodeProcess = _interopRequireDefault(require("node:process"));
var _nodeOs = _interopRequireDefault(require("node:os"));
var _nodeTty = _interopRequireDefault(require("node:tty"));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
// From: https://github.com/sindresorhus/has-flag/blob/main/index.js
/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {
function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : _nodeProcess.default.argv) {
const prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
const position = argv.indexOf(prefix + flag);
const terminatorPosition = argv.indexOf('--');
return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
}
const { env } = _nodeProcess.default;
let flagForceColor;
if (
hasFlag('no-color') ||
hasFlag('no-colors') ||
hasFlag('color=false') ||
hasFlag('color=never'))
{
flagForceColor = 0;
} else if (
hasFlag('color') ||
hasFlag('colors') ||
hasFlag('color=true') ||
hasFlag('color=always'))
{
flagForceColor = 1;
}
function envForceColor() {
if ('FORCE_COLOR' in env) {
if (env.FORCE_COLOR === 'true') {
return 1;
}
if (env.FORCE_COLOR === 'false') {
return 0;
}
return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);
}
}
function translateLevel(level) {
if (level === 0) {
return false;
}
return {
level,
hasBasic: true,
has256: level >= 2,
has16m: level >= 3
};
}
function _supportsColor(haveStream, { streamIsTTY, sniffFlags = true } = {}) {
const noFlagForceColor = envForceColor();
if (noFlagForceColor !== undefined) {
flagForceColor = noFlagForceColor;
}
const forceColor = sniffFlags ? flagForceColor : noFlagForceColor;
if (forceColor === 0) {
return 0;
}
if (sniffFlags) {
if (hasFlag('color=16m') ||
hasFlag('color=full') ||
hasFlag('color=truecolor')) {
return 3;
}
if (hasFlag('color=256')) {
return 2;
}
}
// Check for Azure DevOps pipelines.
// Has to be above the `!streamIsTTY` check.
if ('TF_BUILD' in env && 'AGENT_NAME' in env) {
return 1;
}
if (haveStream && !streamIsTTY && forceColor === undefined) {
return 0;
}
const min = forceColor || 0;
if (env.TERM === 'dumb') {
return min;
}
if (_nodeProcess.default.platform === 'win32') {
// Windows 10 build 10586 is the first Windows release that supports 256 colors.
// Windows 10 build 14931 is the first release that supports 16m/TrueColor.
const osRelease = _nodeOs.default.release().split('.');
if (
Number(osRelease[0]) >= 10 &&
Number(osRelease[2]) >= 10_586)
{
return Number(osRelease[2]) >= 14_931 ? 3 : 2;
}
return 1;
}
if ('CI' in env) {
if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) {
return 3;
}
if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some((sign) => sign in env) || env.CI_NAME === 'codeship') {
return 1;
}
return min;
}
if ('TEAMCITY_VERSION' in env) {
return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
}
if (env.COLORTERM === 'truecolor') {
return 3;
}
if (env.TERM === 'xterm-kitty') {
return 3;
}
if ('TERM_PROGRAM' in env) {
const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
switch (env.TERM_PROGRAM) {
case 'iTerm.app':{
return version >= 3 ? 3 : 2;
}
case 'Apple_Terminal':{
return 2;
}
// No default
}
}
if (/-256(color)?$/i.test(env.TERM)) {
return 2;
}
if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
return 1;
}
if ('COLORTERM' in env) {
return 1;
}
return min;
}
function createSupportsColor(stream, options = {}) {
const level = _supportsColor(stream, {
streamIsTTY: stream && stream.isTTY,
...options
});
return translateLevel(level);
}
const supportsColor = {
stdout: createSupportsColor({ isTTY: _nodeTty.default.isatty(1) }),
stderr: createSupportsColor({ isTTY: _nodeTty.default.isatty(2) })
};var _default =
supportsColor;exports.default = _default; /* v7-75cc7f0b87ad9e85 */

View File

@ -0,0 +1,10 @@
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _unbuild = require("unbuild");var _default =
(0, _unbuild.defineBuildConfig)({
clean: true,
entries: ['src/index'],
declaration: true,
rollup: {
emitCJS: true
}
});exports.default = _default; /* v7-e617738d05bbbbdb */

13
packages/types/package-lock.json generated Normal file
View File

@ -0,0 +1,13 @@
{
"name": "@vben/types",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@vben/types",
"version": "1.0.0",
"license": "MIT"
}
}
}

BIN
public/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/resource/img/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/assets/images/logo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -53,7 +53,7 @@
font-size: 14px;
img {
width: @logo-width;
// width: @logo-width;
height: @logo-width;
margin-right: 2px;
}

View File

@ -179,9 +179,11 @@
&-logo {
height: @header-height;
padding: 10px 4px 10px 10px;
// add
justify-content: center;
img {
width: @logo-width;
// width: @logo-width;
height: @logo-width;
}
}

View File

@ -53,7 +53,7 @@
},
]"
>
<span class="text"> {{ title }}</span>
<span class="text">{{ title }}</span>
<Icon
:size="16"
:icon="getMixSideFixed ? 'ri:pushpin-2-fill' : 'ri:pushpin-2-line'"
@ -368,7 +368,7 @@
padding-left: 0 !important;
img {
width: @logo-width;
// width: @logo-width;
height: @logo-width;
}
}

View File

@ -1,181 +1,181 @@
export default {
api: {
operationSuccess: 'Operation Success',
operationFailed: 'Operation failed',
errorTip: 'Error Tip',
successTip: 'Success Tip',
errorMessage: 'The operation failed, the system is abnormal!',
timeoutMessage: 'Login timed out, please log in again!',
apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',
apiRequestFailed: 'The interface request failed, please try again later!',
networkException: 'network anomaly',
networkExceptionMsg:
'Please check if your network connection is normal! The network is abnormal',
refreshBrowser: 'The network is busy now, please press F5 to refresh your browser',
api: {
operationSuccess: 'Operation Success',
operationFailed: 'Operation failed',
errorTip: 'Error Tip',
successTip: 'Success Tip',
errorMessage: 'The operation failed, the system is abnormal!',
timeoutMessage: 'Login timed out, please log in again!',
apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',
apiRequestFailed: 'The interface request failed, please try again later!',
networkException: 'network anomaly',
networkExceptionMsg:
'Please check if your network connection is normal! The network is abnormal',
refreshBrowser: 'The network is busy now, please press F5 to refresh your browser',
errMsg401: 'The user does not have permission (token, user name, password error)!',
errMsg403: 'The user is authorized, but access is forbidden!',
errMsg404: 'Network request error, the resource was not found!',
errMsg405: 'Network request error, request method not allowed!',
errMsg408: 'Network request timed out!',
errMsg500: 'Server error, please contact the administrator!',
errMsg501: 'The network is not implemented!',
errMsg502: 'Network Error!',
errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!',
errMsg504: 'Network timeout!',
errMsg505: 'The http version does not support the request!',
},
app: {
logoutTip: 'Reminder',
logoutMessage: 'Confirm to exit the system?',
menuLoading: 'Menu loading...',
},
errorLog: {
tableTitle: 'Error log list',
tableColumnType: 'Type',
tableColumnDate: 'Time',
tableColumnFile: 'File',
tableColumnMsg: 'Error message',
tableColumnStackMsg: 'Stack info',
errMsg401: 'The user does not have permission (token, user name, password error)!',
errMsg403: 'The user is authorized, but access is forbidden!',
errMsg404: 'Network request error, the resource was not found!',
errMsg405: 'Network request error, request method not allowed!',
errMsg408: 'Network request timed out!',
errMsg500: 'Server error, please contact the administrator!',
errMsg501: 'The network is not implemented!',
errMsg502: 'Network Error!',
errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!',
errMsg504: 'Network timeout!',
errMsg505: 'The http version does not support the request!',
},
app: {
logoutTip: 'Reminder',
logoutMessage: 'Confirm to exit the system?',
menuLoading: 'Menu loading...',
},
errorLog: {
tableTitle: 'Error log list',
tableColumnType: 'Type',
tableColumnDate: 'Time',
tableColumnFile: 'File',
tableColumnMsg: 'Error message',
tableColumnStackMsg: 'Stack info',
tableActionDesc: 'Details',
tableActionDesc: 'Details',
modalTitle: 'Error details',
modalTitle: 'Error details',
fireVueError: 'Fire vue error',
fireResourceError: 'Fire resource error',
fireAjaxError: 'Fire ajax error',
fireVueError: 'Fire vue error',
fireResourceError: 'Fire resource error',
fireAjaxError: 'Fire ajax error',
enableMessage: 'Only effective when useErrorHandle=true in `/src/settings/projectSetting.ts`.',
},
exception: {
backLogin: 'Back Login',
backHome: 'Back Home',
subTitle403: "Sorry, you don't have access to this page.",
subTitle404: 'Sorry, the page you visited does not exist.',
subTitle500: 'Sorry, the server is reporting an error.',
noDataTitle: 'No data on the current page.',
networkErrorTitle: 'Network Error',
networkErrorSubTitle:
'SorryYour network connection has been disconnected, please check your network!',
},
lock: {
unlock: 'Click to unlock',
alert: 'Lock screen password error',
backToLogin: 'Back to login',
entry: 'Enter the system',
placeholder: 'Please enter the lock screen password or user password',
},
login: {
captcha: 'Verification code',
backSignIn: 'Back sign in',
mobileSignInFormTitle: 'Mobile sign in',
qrSignInFormTitle: 'Qr sign in',
emailFormTitle: 'Email sign in',
signInFormTitle: 'Sign in',
signUpFormTitle: 'Sign up',
forgetFormTitle: 'Reset password',
enableMessage: 'Only effective when useErrorHandle=true in `/src/settings/projectSetting.ts`.',
},
exception: {
backLogin: 'Back Login',
backHome: 'Back Home',
subTitle403: "Sorry, you don't have access to this page.",
subTitle404: 'Sorry, the page you visited does not exist.',
subTitle500: 'Sorry, the server is reporting an error.',
noDataTitle: 'No data on the current page.',
networkErrorTitle: 'Network Error',
networkErrorSubTitle:
'SorryYour network connection has been disconnected, please check your network!',
},
lock: {
unlock: 'Click to unlock',
alert: 'Lock screen password error',
backToLogin: 'Back to login',
entry: 'Enter the system',
placeholder: 'Please enter the lock screen password or user password',
},
login: {
captcha: 'Verification code',
backSignIn: 'Back sign in',
mobileSignInFormTitle: 'Mobile sign in',
qrSignInFormTitle: 'Qr sign in',
emailFormTitle: 'Email sign in',
signInFormTitle: 'Sign in',
signUpFormTitle: 'Sign up',
forgetFormTitle: 'Reset password',
signInTitle: 'Provide next-generation intelligent ERP system software for enterprises',
signInDesc: '© 2023-2033 Wan Sen ERP - All Right Reserved',
policy: 'I agree, to the WanSer ERP System Privacy Policy',
scanSign: `scanning the code to complete the login`,
signInTitle: 'Provide next-generation intelligent ERP system software for enterprises',
signInDesc: '© 2023-2033 曲和科技 - All Right Reserved',
policy: 'I agree, to the WanSer ERP System Privacy Policy',
scanSign: `scanning the code to complete the login`,
loginButton: 'Sign in',
registerButton: 'Sign up',
rememberMe: 'Remember me',
forgetPassword: 'Forget Password?',
otherSignIn: 'Sign in with',
loginButton: 'Sign in',
registerButton: 'Sign up',
rememberMe: 'Remember me',
forgetPassword: 'Forget Password?',
otherSignIn: 'Sign in with',
// notify
loginSuccessTitle: 'Login successful',
loginSuccessDesc: 'Welcome back',
// notify
loginSuccessTitle: 'Login successful',
loginSuccessDesc: 'Welcome back',
// placeholder
accountPlaceholder: 'Please input username',
passwordPlaceholder: 'Please input password',
captchaPlaceholder: 'Please input verification code',
correctMobilePlaceholder: 'Please enter the correct phone number',
correctEmailPlaceholder: 'Please enter the correct email address',
smsPlaceholder: 'Please input sms code',
mobilePlaceholder: 'Please input mobile',
emailPlaceholder: 'Please input email',
policyPlaceholder: 'Register after checking',
diffPwd: 'The two passwords are inconsistent',
// placeholder
accountPlaceholder: 'Please input username',
passwordPlaceholder: 'Please input password',
captchaPlaceholder: 'Please input verification code',
correctMobilePlaceholder: 'Please enter the correct phone number',
correctEmailPlaceholder: 'Please enter the correct email address',
smsPlaceholder: 'Please input sms code',
mobilePlaceholder: 'Please input mobile',
emailPlaceholder: 'Please input email',
policyPlaceholder: 'Register after checking',
diffPwd: 'The two passwords are inconsistent',
userName: 'Username',
password: 'Password',
confirmPassword: 'Confirm Password',
newPassword: 'New Password',
updatePassword: 'Change Password',
email: 'Email',
emailCode: 'Email code',
smsCode: 'SMS code',
mobile: 'Mobile',
},
user: {
userList: 'User Table',
name: 'Nick Name',
status: 'Status',
roleName: 'Role Name',
department: 'Department',
remake: 'Remark',
addAccount: 'Add Account',
editAccount: 'Edit Account',
notAllowAddUser: 'The current tenant has reached the maximum number of users that can be added',
// user table list action
viewUserDetails: 'View User Details',
editUserProfile: 'Edit User Profile',
resetUserPassword: 'Reset User Password',
confirmPasswordReset: 'Are you sure to reset the password to 123456',
deleteUserAccount: 'Delete User Account'
},
tenant: {
tenantList: 'Tenant List',
addTenant: 'Add Tenant',
editTenant: 'Edit Tenant',
deleteTenant: 'Delete Tenant',
form: {
name: 'Tenant Name',
status: 'Status',
free: 'Free Tenant',
pay: 'Pay Tenant',
type: 'Type',
remark: 'Remark',
userNumLimit: 'User Number Limit',
expireTime: 'Expire Time',
noticeOne: 'Please default to select the tenant administrator role',
noticeTwo: 'If not filled in, the default password is 123456',
noticeThree: 'Cannot enter a username with admin',
noticeFour: 'After expiration, all users under the tenant are unable to login and use the system',
userName: 'Username',
password: 'Password',
confirmPassword: 'Confirm Password',
newPassword: 'New Password',
updatePassword: 'Change Password',
email: 'Email',
emailCode: 'Email code',
smsCode: 'SMS code',
mobile: 'Mobile',
},
user: {
userList: 'User Table',
name: 'Nick Name',
status: 'Status',
roleName: 'Role Name',
department: 'Department',
remake: 'Remark',
addAccount: 'Add Account',
editAccount: 'Edit Account',
notAllowAddUser: 'The current tenant has reached the maximum number of users that can be added',
// user table list action
viewUserDetails: 'View User Details',
editUserProfile: 'Edit User Profile',
resetUserPassword: 'Reset User Password',
confirmPasswordReset: 'Are you sure to reset the password to 123456',
deleteUserAccount: 'Delete User Account'
},
tenant: {
tenantList: 'Tenant List',
addTenant: 'Add Tenant',
editTenant: 'Edit Tenant',
deleteTenant: 'Delete Tenant',
form: {
name: 'Tenant Name',
status: 'Status',
free: 'Free Tenant',
pay: 'Pay Tenant',
type: 'Type',
remark: 'Remark',
userNumLimit: 'User Number Limit',
expireTime: 'Expire Time',
noticeOne: 'Please default to select the tenant administrator role',
noticeTwo: 'If not filled in, the default password is 123456',
noticeThree: 'Cannot enter a username with admin',
noticeFour: 'After expiration, all users under the tenant are unable to login and use the system',
}
},
table: {
add: 'Add Data',
edit: 'Edit Data',
delete: 'Delete Data',
batchDelete: 'Batch Delete Data',
exportData: 'Export Data',
approve: 'Receipt Approval',
reject: 'Receipt Rejection',
audited: 'Audited',
unaudited: 'Unaudited',
viewReceiptDetails: 'View Receipt Detail',
confirmDelete: 'Are you sure to delete this data?',
confirmExport: 'Confirm Export',
confirmExportTextOne: 'Export',
confirmExportTextTwo: 'Data loading, please be patient',
confirmExportTextThree: 'If you need to export detailed data (which may take a long time), please check the box below.',
confirmExportTextFour: 'Need to export detailed data',
type: 'Type',
subType: 'Sub Type',
},
modal: {
cover: 'Yes',
cancel: 'No',
},
language: {
enUS: 'English',
zhCN: '简体中文',
}
},
table: {
add: 'Add Data',
edit: 'Edit Data',
delete: 'Delete Data',
batchDelete: 'Batch Delete Data',
exportData: 'Export Data',
approve: 'Receipt Approval',
reject: 'Receipt Rejection',
audited: 'Audited',
unaudited: 'Unaudited',
viewReceiptDetails: 'View Receipt Detail',
confirmDelete: 'Are you sure to delete this data?',
confirmExport: 'Confirm Export',
confirmExportTextOne: 'Export',
confirmExportTextTwo: 'Data loading, please be patient',
confirmExportTextThree: 'If you need to export detailed data (which may take a long time), please check the box below.',
confirmExportTextFour: 'Need to export detailed data',
type: 'Type',
subType: 'Sub Type',
},
modal: {
cover: 'Yes',
cancel: 'No',
},
language: {
enUS: 'English',
zhCN: '简体中文',
}
};

View File

@ -1,174 +1,174 @@
export default {
api: {
operationSuccess: '操作成功',
operationFailed: '操作失败',
errorTip: '错误提示',
successTip: '成功提示',
errorMessage: '操作失败,系统异常!',
timeoutMessage: '登录超时,请重新登录!',
apiTimeoutMessage: '接口请求超时,请刷新页面重试!',
apiRequestFailed: '请求出错,请稍候重试',
networkException: '网络异常',
networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!',
refreshBrowser: '网络当前繁忙请按F5刷新浏览器',
api: {
operationSuccess: '操作成功',
operationFailed: '操作失败',
errorTip: '错误提示',
successTip: '成功提示',
errorMessage: '操作失败,系统异常!',
timeoutMessage: '登录超时,请重新登录!',
apiTimeoutMessage: '接口请求超时,请刷新页面重试!',
apiRequestFailed: '请求出错,请稍候重试',
networkException: '网络异常',
networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!',
refreshBrowser: '网络当前繁忙请按F5刷新浏览器',
errMsg401: '用户没有权限(令牌、用户名、密码错误)!',
errMsg403: '用户得到授权,但是访问是被禁止的。!',
errMsg404: '网络请求错误,未找到该资源!',
errMsg405: '网络请求错误,请求方法未允许!',
errMsg408: '网络请求超时!',
errMsg500: '服务器错误,请联系管理员!',
errMsg501: '网络未实现!',
errMsg502: '网络错误!',
errMsg503: '服务不可用,服务器暂时过载或维护!',
errMsg504: '网络超时!',
errMsg505: 'http版本不支持该请求!',
},
app: { logoutTip: '温馨提醒', logoutMessage: '是否确认退出系统?', menuLoading: '菜单加载中...' },
errorLog: {
tableTitle: '错误日志列表',
tableColumnType: '类型',
tableColumnDate: '时间',
tableColumnFile: '文件',
tableColumnMsg: '错误信息',
tableColumnStackMsg: 'stack信息',
errMsg401: '用户没有权限(令牌、用户名、密码错误)!',
errMsg403: '用户得到授权,但是访问是被禁止的。!',
errMsg404: '网络请求错误,未找到该资源!',
errMsg405: '网络请求错误,请求方法未允许!',
errMsg408: '网络请求超时!',
errMsg500: '服务器错误,请联系管理员!',
errMsg501: '网络未实现!',
errMsg502: '网络错误!',
errMsg503: '服务不可用,服务器暂时过载或维护!',
errMsg504: '网络超时!',
errMsg505: 'http版本不支持该请求!',
},
app: { logoutTip: '温馨提醒', logoutMessage: '是否确认退出系统?', menuLoading: '菜单加载中...' },
errorLog: {
tableTitle: '错误日志列表',
tableColumnType: '类型',
tableColumnDate: '时间',
tableColumnFile: '文件',
tableColumnMsg: '错误信息',
tableColumnStackMsg: 'stack信息',
tableActionDesc: '详情',
tableActionDesc: '详情',
modalTitle: '错误详情',
modalTitle: '错误详情',
fireVueError: '点击触发vue错误',
fireResourceError: '点击触发资源加载错误',
fireAjaxError: '点击触发ajax错误',
fireVueError: '点击触发vue错误',
fireResourceError: '点击触发资源加载错误',
fireAjaxError: '点击触发ajax错误',
enableMessage: '只在`/src/settings/projectSetting.ts` 内的useErrorHandle=true时生效.',
},
exception: {
backLogin: '返回登录',
backHome: '返回首页',
subTitle403: '抱歉,您无权访问此页面。',
subTitle404: '抱歉,您访问的页面不存在。',
subTitle500: '抱歉,服务器报告错误。',
noDataTitle: '当前页无数据',
networkErrorTitle: '网络错误',
networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!',
},
lock: {
unlock: '点击解锁',
alert: '锁屏密码错误',
backToLogin: '返回登录',
entry: '进入系统',
placeholder: '请输入锁屏密码或者用户密码',
},
login: {
captcha: '验证码',
backSignIn: '返回',
signInFormTitle: '登录',
mobileSignInFormTitle: '手机登录',
qrSignInFormTitle: '扫码登录',
emailFormTitle: '邮箱登录',
signUpFormTitle: '注册租户',
forgetFormTitle: '重置密码',
enableMessage: '只在`/src/settings/projectSetting.ts` 内的useErrorHandle=true时生效.',
},
exception: {
backLogin: '返回登录',
backHome: '返回首页',
subTitle403: '抱歉,您无权访问此页面。',
subTitle404: '抱歉,您访问的页面不存在。',
subTitle500: '抱歉,服务器报告错误。',
noDataTitle: '当前页无数据',
networkErrorTitle: '网络错误',
networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!',
},
lock: {
unlock: '点击解锁',
alert: '锁屏密码错误',
backToLogin: '返回登录',
entry: '进入系统',
placeholder: '请输入锁屏密码或者用户密码',
},
login: {
captcha: '验证码',
backSignIn: '返回',
signInFormTitle: '登录',
mobileSignInFormTitle: '手机登录',
qrSignInFormTitle: '扫码登录',
emailFormTitle: '邮箱登录',
signUpFormTitle: '注册租户',
forgetFormTitle: '重置密码',
signInTitle: '为企业提供下一代智能ERP系统软件',
signInDesc: '© 2023-2033 Wan Sen ERP - All Right Reserved 版权所有',
policy: '我同意《万森ERP系统》隐私政策',
scanSign: `扫码后点击"确认",即可完成登录`,
signInTitle: '为企业提供下一代智能ERP系统软件',
signInDesc: '© 2023-2033 曲和科技 - All Right Reserved 版权所有',
policy: '我同意《万森ERP系统》隐私政策',
scanSign: `扫码后点击"确认",即可完成登录`,
loginButton: '登录',
registerButton: '注册租户',
rememberMe: '记住我',
forgetPassword: '忘记密码?',
otherSignIn: '其他登录方式',
loginButton: '登录',
registerButton: '注册租户',
rememberMe: '记住我',
forgetPassword: '忘记密码?',
otherSignIn: '其他登录方式',
// notify
loginSuccessTitle: '登录成功',
loginSuccessDesc: '欢迎回来',
// notify
loginSuccessTitle: '登录成功',
loginSuccessDesc: '欢迎回来',
// placeholder
accountPlaceholder: '请输入账号',
passwordPlaceholder: '请输入密码',
captchaPlaceholder: '请输入验证码',
smsPlaceholder: '请输入验证码',
mobilePlaceholder: '请输入手机号码',
emailPlaceholder: '请输入邮箱地址',
policyPlaceholder: '勾选后才能注册',
diffPwd: '两次输入密码不一致',
correctMobilePlaceholder: '请输入正确的手机号码',
correctEmailPlaceholder: '请输入正确的邮箱地址',
userName: '账号',
password: '密码',
confirmPassword: '确认密码',
newPassword: '新密码',
updatePassword: '修改密码',
email: '邮箱',
emailCode: '邮箱验证码',
smsCode: '短信验证码',
mobile: '手机号码',
},
user: {
userList: '用户列表',
name: '昵称',
status: '用户状态',
roleName: '角色',
department: '所属部门',
remake: '备注',
addAccount: '新增账户',
editAccount: '编辑账户',
notAllowAddUser: '当前租户可添加的用户数量已达上限',
// 用户数据表格操作
viewUserDetails: '查看用户详情',
editUserProfile: '编辑用户资料',
resetUserPassword: '重置密码',
confirmPasswordReset: '确定重置密码为123456吗',
deleteUserAccount: '删除账号'
},
tenant: {
tenantList: '租户列表',
addTenant: '新增租户',
editTenant: '编辑租户',
deleteTenant: '删除租户',
form: {
name: '租户名称',
status: '租户状态',
free: '免费租户',
pay: '付费租户',
type: '租户类型',
remark: '备注',
userNumLimit: '用户数量限制',
expireTime: '到期时间',
noticeOne: '请默认选择租户管理员角色',
noticeTwo: '如果不填写则默认密码为123456',
noticeThree: '不能输入带有admin的用户名',
noticeFour: '到期后租户下的所有用户无法登录使用系统',
// placeholder
accountPlaceholder: '请输入账号',
passwordPlaceholder: '请输入密码',
captchaPlaceholder: '请输入验证码',
smsPlaceholder: '请输入验证码',
mobilePlaceholder: '请输入手机号码',
emailPlaceholder: '请输入邮箱地址',
policyPlaceholder: '勾选后才能注册',
diffPwd: '两次输入密码不一致',
correctMobilePlaceholder: '请输入正确的手机号码',
correctEmailPlaceholder: '请输入正确的邮箱地址',
userName: '账号',
password: '密码',
confirmPassword: '确认密码',
newPassword: '新密码',
updatePassword: '修改密码',
email: '邮箱',
emailCode: '邮箱验证码',
smsCode: '短信验证码',
mobile: '手机号码',
},
user: {
userList: '用户列表',
name: '昵称',
status: '用户状态',
roleName: '角色',
department: '所属部门',
remake: '备注',
addAccount: '新增账户',
editAccount: '编辑账户',
notAllowAddUser: '当前租户可添加的用户数量已达上限',
// 用户数据表格操作
viewUserDetails: '查看用户详情',
editUserProfile: '编辑用户资料',
resetUserPassword: '重置密码',
confirmPasswordReset: '确定重置密码为123456吗',
deleteUserAccount: '删除账号'
},
tenant: {
tenantList: '租户列表',
addTenant: '新增租户',
editTenant: '编辑租户',
deleteTenant: '删除租户',
form: {
name: '租户名称',
status: '租户状态',
free: '免费租户',
pay: '付费租户',
type: '租户类型',
remark: '备注',
userNumLimit: '用户数量限制',
expireTime: '到期时间',
noticeOne: '请默认选择租户管理员角色',
noticeTwo: '如果不填写则默认密码为123456',
noticeThree: '不能输入带有admin的用户名',
noticeFour: '到期后租户下的所有用户无法登录使用系统',
}
},
table: {
add: '新增',
edit: '编辑',
delete: '删除',
batchDelete: '批量删除',
exportData: '导出数据',
approve: '审核',
reject: '驳回',
audited: '已审核',
unaudited: '未审核',
viewReceiptDetails: '查看单据详情',
confirmDelete: '是否确认删除数据?',
confirmExport: '确认导出',
confirmExportTextOne: '导出',
confirmExportTextTwo: '数据加载中,请耐心等待。',
confirmExportTextThree: '如果您需要导出详细数据(可能需要很长时间),请勾选下面的框。',
confirmExportTextFour: '需要导出详细数据',
type: '类型',
subType: '子类型',
},
modal: {
cover: '确认',
cancel: '取消',
},
language: {
enUS: 'English',
zhCN: '简体中文',
}
},
table: {
add: '新增',
edit: '编辑',
delete: '删除',
batchDelete: '批量删除',
exportData: '导出数据',
approve: '审核',
reject: '驳回',
audited: '已审核',
unaudited: '未审核',
viewReceiptDetails: '查看单据详情',
confirmDelete: '是否确认删除数据?',
confirmExport: '确认导出',
confirmExportTextOne: '导出',
confirmExportTextTwo: '数据加载中,请耐心等待。',
confirmExportTextThree: '如果您需要导出详细数据(可能需要很长时间),请勾选下面的框。',
confirmExportTextFour: '需要导出详细数据',
type: '类型',
subType: '子类型',
},
modal: {
cover: '确认',
cancel: '取消',
},
language: {
enUS: 'English',
zhCN: '简体中文',
}
};

View File

@ -1,144 +1,144 @@
interface GroupItem {
title: string;
icon: string;
color: string;
desc: string;
date: string;
group: string;
title: string;
icon: string;
color: string;
desc: string;
date: string;
group: string;
}
interface NavItem {
title: string;
icon: string;
color: string;
title: string;
icon: string;
color: string;
}
interface DynamicInfoItem {
avatar: string;
name: string;
date: string;
desc: string;
avatar: string;
name: string;
date: string;
desc: string;
}
export const navItems: NavItem[] = [
{
title: '首页',
icon: 'ion:home-outline',
color: '#1fdaca',
},
{
title: '仪表盘',
icon: 'ion:grid-outline',
color: '#bf0c2c',
},
{
title: 'OA内部办公系统',
icon: 'ion:layers-outline',
color: '#e18525',
},
{
title: '系统管理',
icon: 'ion:settings-outline',
color: '#3fb27f',
},
{
title: '权限管理',
icon: 'ion:key-outline',
color: '#4daf1bc9',
},
{
title: '报表查询',
icon: 'ion:bar-chart-outline',
color: '#00d8ff',
},
{
title: '首页',
icon: 'ion:home-outline',
color: '#1fdaca',
},
{
title: '仪表盘',
icon: 'ion:grid-outline',
color: '#bf0c2c',
},
{
title: 'OA办公系统',
icon: 'ion:layers-outline',
color: '#e18525',
},
{
title: '系统管理',
icon: 'ion:settings-outline',
color: '#3fb27f',
},
{
title: '权限管理',
icon: 'ion:key-outline',
color: '#4daf1bc9',
},
{
title: '报表查询',
icon: 'ion:bar-chart-outline',
color: '#00d8ff',
},
];
export const dynamicInfoItems: DynamicInfoItem[] = [
{
avatar: 'dynamic-avatar-1|svg',
name: '小李',
date: '刚刚',
desc: `在 <a>A仓库</a> 采购了100个零件 <a>H3C</a>`,
},
{
avatar: 'dynamic-avatar-2|svg',
name: '艾文',
date: '1个小时前',
desc: `关注了 <a>小李</a> `,
},
{
avatar: 'dynamic-avatar-3|svg',
name: '克里斯',
date: '1天前',
desc: `发布了 <a>本月采购物料表</a> `,
},
{
avatar: 'dynamic-avatar-4|svg',
name: '赵伟',
date: '2天前',
desc: `发表文章 <a>企业如何集成GPT微调模型配合ERP使用</a> `,
},
{
avatar: 'dynamic-avatar-5|svg',
name: '皮特',
date: '3天前',
desc: `回复了 <a>赵伟</a> 的问题 <a>如何让用户能直接微调模型?</a>`,
},
{
avatar: 'dynamic-avatar-6|svg',
name: '杰克',
date: '1周前',
desc: `添加了会员 <a>检测公司的会员</a> `,
},
{
avatar: 'dynamic-avatar-1|svg',
name: '小李',
date: '刚刚',
desc: `在 <a>A仓库</a> 采购了100个零件 <a>H3C</a>`,
},
{
avatar: 'dynamic-avatar-2|svg',
name: '艾文',
date: '1个小时前',
desc: `关注了 <a>小李</a> `,
},
{
avatar: 'dynamic-avatar-3|svg',
name: '克里斯',
date: '1天前',
desc: `发布了 <a>本月采购物料表</a> `,
},
{
avatar: 'dynamic-avatar-4|svg',
name: '赵伟',
date: '2天前',
desc: `发表文章 <a>企业如何集成GPT微调模型配合ERP使用</a> `,
},
{
avatar: 'dynamic-avatar-5|svg',
name: '皮特',
date: '3天前',
desc: `回复了 <a>赵伟</a> 的问题 <a>如何让用户能直接微调模型?</a>`,
},
{
avatar: 'dynamic-avatar-6|svg',
name: '杰克',
date: '1周前',
desc: `添加了会员 <a>检测公司的会员</a> `,
},
];
export const groupItems: GroupItem[] = [
{
title: 'WanSen ERP Core',
icon: 'carbon:logo-github',
color: '',
desc: 'ERP系统的API',
group: '万森智能开源组',
date: '2023-09-28',
},
{
title: 'WanSen ERP',
icon: 'ion:logo-vue',
color: '#3fb27f',
desc: '该项目使用了Vue3+Vite+Ant-Design',
group: '前端开发小组',
date: '2023-09-28',
},
{
title: 'Html 5',
icon: 'ion:logo-html5',
color: '#e18525',
desc: '该项目也使用了HTML5',
group: '前端开发小组',
date: '2023-10-01',
},
{
title: 'Angular',
icon: 'ion:logo-angular',
color: '#bf0c2c',
desc: '设计新的页面交互',
group: 'UI组',
date: '2023-10-01',
},
{
title: 'React',
icon: 'bx:bxl-react',
color: '#00d8ff',
desc: '下一步计划支持React重构',
group: '前端开发小组',
date: '2023-10-02',
},
{
title: 'JavaScript',
icon: 'ion:logo-javascript',
color: '#EBD94E',
desc: '我们也可使用javascript进行重写',
group: '前端开发小组',
date: '2023-10-03',
},
{
title: 'WanSen ERP Core',
icon: 'carbon:logo-github',
color: '',
desc: 'ERP系统的API',
group: '万森智能开源组',
date: '2023-09-28',
},
{
title: 'WanSen ERP',
icon: 'ion:logo-vue',
color: '#3fb27f',
desc: '该项目使用了Vue3+Vite+Ant-Design',
group: '前端开发小组',
date: '2023-09-28',
},
{
title: 'Html 5',
icon: 'ion:logo-html5',
color: '#e18525',
desc: '该项目也使用了HTML5',
group: '前端开发小组',
date: '2023-10-01',
},
{
title: 'Angular',
icon: 'ion:logo-angular',
color: '#bf0c2c',
desc: '设计新的页面交互',
group: 'UI组',
date: '2023-10-01',
},
{
title: 'React',
icon: 'bx:bxl-react',
color: '#00d8ff',
desc: '下一步计划支持React重构',
group: '前端开发小组',
date: '2023-10-02',
},
{
title: 'JavaScript',
icon: 'ion:logo-javascript',
color: '#EBD94E',
desc: '我们也可使用javascript进行重写',
group: '前端开发小组',
date: '2023-10-03',
},
];

View File

@ -1,9 +1,9 @@
<template>
<PageWrapper>
<template #headerContent> <WorkbenchHeader /> </template>
<template #headerContent><WorkbenchHeader /></template>
<div class="lg:flex">
<div class="lg:w-7/10 w-full !mr-4 enter-y">
<ProjectCard :loading="loading" class="enter-y" />
<!-- <ProjectCard :loading="loading" class="enter-y" /> -->
<DynamicInfo :loading="loading" class="!my-4 enter-y" />
</div>
<div class="lg:w-3/10 w-full enter-y">

View File

@ -3,9 +3,9 @@
<div class="flex items-center absolute right-4 top-4">
<AppDarkModeToggle class="enter-x mr-2" v-if="!sessionTimeout" />
<AppLocalePicker
class="text-white enter-x xl:text-gray-600"
:show-text="false"
v-if="!sessionTimeout && showLocale"
class="text-white enter-x xl:text-gray-600"
:show-text="false"
v-if="!sessionTimeout && showLocale"
/>
</div>
@ -19,12 +19,12 @@
<AppLogo class="-enter-x" />
<div class="my-auto">
<img
:alt="title"
src="../../../assets/svg/login-box-bg.svg"
class="w-1/2 -mt-16 -enter-x"
:alt="title"
src="../../../assets/svg/login-box-bg.svg"
class="w-1/2 -mt-16 -enter-x"
/>
<div class="mt-10 font-medium text-white -enter-x">
<span class="inline-block mt-4 text-3xl"> {{ t('sys.login.signInTitle') }}</span>
<span class="inline-block mt-4 text-3xl">{{ t('sys.login.signInTitle') }}</span>
</div>
<div class="mt-5 font-normal text-white dark:text-gray-500 -enter-x">
{{ t('sys.login.signInDesc') }}
@ -33,8 +33,8 @@
</div>
<div class="flex w-full h-full py-5 xl:h-auto xl:py-0 xl:my-0 xl:w-6/12">
<div
:class="`${prefixCls}-form`"
class="relative w-full px-5 py-8 mx-auto my-auto rounded-md shadow-md xl:ml-16 xl:bg-transparent sm:px-8 xl:p-4 xl:shadow-none sm:w-3/4 lg:w-2/4 xl:w-auto enter-x"
:class="`${prefixCls}-form`"
class="relative w-full px-5 py-8 mx-auto my-auto rounded-md shadow-md xl:ml-16 xl:bg-transparent sm:px-8 xl:p-4 xl:shadow-none sm:w-3/4 lg:w-2/4 xl:w-auto enter-x"
>
<LoginForm />
<ForgetPasswordForm />
@ -49,175 +49,175 @@
</div>
</template>
<script lang="ts" setup>
import { computed } from 'vue';
import { AppLogo, AppLocalePicker, AppDarkModeToggle } from '/@/components/Application';
import LoginForm from './LoginForm.vue';
import ForgetPasswordForm from './ForgetPasswordForm.vue';
import RegisterForm from './RegisterForm.vue';
import MobileForm from './MobileForm.vue';
import QrCodeForm from './QrCodeForm.vue';
import { useGlobSetting } from '/@/hooks/setting';
import { useI18n } from '/@/hooks/web/useI18n';
import { useDesign } from '/@/hooks/web/useDesign';
import { useLocaleStore } from '/@/store/modules/locale';
import EmailForm from "@/views/sys/login/EmailForm.vue";
import { computed } from 'vue';
import { AppLogo, AppLocalePicker, AppDarkModeToggle } from '/@/components/Application';
import LoginForm from './LoginForm.vue';
import ForgetPasswordForm from './ForgetPasswordForm.vue';
import RegisterForm from './RegisterForm.vue';
import MobileForm from './MobileForm.vue';
import QrCodeForm from './QrCodeForm.vue';
import { useGlobSetting } from '/@/hooks/setting';
import { useI18n } from '/@/hooks/web/useI18n';
import { useDesign } from '/@/hooks/web/useDesign';
import { useLocaleStore } from '/@/store/modules/locale';
import EmailForm from '@/views/sys/login/EmailForm.vue';
defineProps({
sessionTimeout: {
type: Boolean,
},
});
defineProps({
sessionTimeout: {
type: Boolean,
},
});
const globSetting = useGlobSetting();
const { prefixCls } = useDesign('login');
const { t } = useI18n();
const localeStore = useLocaleStore();
const showLocale = localeStore.getShowPicker;
const title = computed(() => globSetting?.title ?? '');
const globSetting = useGlobSetting();
const { prefixCls } = useDesign('login');
const { t } = useI18n();
const localeStore = useLocaleStore();
const showLocale = localeStore.getShowPicker;
const title = computed(() => globSetting?.title ?? '');
</script>
<style lang="less">
@prefix-cls: ~'@{namespace}-login';
@logo-prefix-cls: ~'@{namespace}-app-logo';
@countdown-prefix-cls: ~'@{namespace}-countdown-input';
@dark-bg: #293146;
@prefix-cls: ~'@{namespace}-login';
@logo-prefix-cls: ~'@{namespace}-app-logo';
@countdown-prefix-cls: ~'@{namespace}-countdown-input';
@dark-bg: #293146;
html[data-theme='dark'] {
.@{prefix-cls} {
background-color: @dark-bg;
&::before {
background-image: url('/@/assets/svg/login-bg-dark.svg');
}
.ant-input,
.ant-input-password {
background-color: #232a3b;
}
.ant-btn:not(.ant-btn-link):not(.ant-btn-primary) {
border: 1px solid #4a5569;
}
&-form {
background: transparent !important;
}
.app-iconify {
color: #fff;
}
}
input.fix-auto-fill,
.fix-auto-fill input {
-webkit-text-fill-color: #c9d1d9 !important;
box-shadow: inherit !important;
}
}
html[data-theme='dark'] {
.@{prefix-cls} {
background-color: @dark-bg;
&::before {
background-image: url('/@/assets/svg/login-bg-dark.svg');
}
.ant-input,
.ant-input-password {
background-color: #232a3b;
}
.ant-btn:not(.ant-btn-link):not(.ant-btn-primary) {
border: 1px solid #4a5569;
}
&-form {
background: transparent !important;
}
.app-iconify {
color: #fff;
}
}
input.fix-auto-fill,
.fix-auto-fill input {
-webkit-text-fill-color: #c9d1d9 !important;
box-shadow: inherit !important;
}
}
.@{prefix-cls} {
min-height: 100%;
overflow: hidden;
background-color: #fff;
color: @text-color;
@media (max-width: @screen-xl) {
background-color: #293146;
.@{prefix-cls}-form {
background-color: #fff;
color: @text-color;
}
}
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin-left: -48%;
background-image: url('/@/assets/svg/login-bg.svg');
background-repeat: no-repeat;
background-position: 100%;
background-size: auto 100%;
min-height: 100%;
overflow: hidden;
background-color: #fff;
color: @text-color;
@media (max-width: @screen-xl) {
display: none;
}
}
background-color: #293146;
.@{logo-prefix-cls} {
position: absolute;
top: 12px;
height: 30px;
&__title {
color: #fff;
font-size: 16px;
.@{prefix-cls}-form {
background-color: #fff;
color: @text-color;
}
}
img {
width: 32px;
}
}
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin-left: -48%;
background-image: url('/@/assets/svg/login-bg.svg');
background-repeat: no-repeat;
background-position: 100%;
background-size: auto 100%;
@media (max-width: @screen-xl) {
display: none;
}
}
.container {
.@{logo-prefix-cls} {
display: flex;
width: 60%;
height: 80px;
position: absolute;
top: 25px;
height: 30px;
&__title {
color: #fff;
font-size: 24px;
font-size: 16px;
}
img {
width: 48px;
width: 65px;
}
}
}
&-sign-in-way {
.anticon {
color: #888;
font-size: 22px;
cursor: pointer;
.container {
.@{logo-prefix-cls} {
display: flex;
width: 60%;
height: 80px;
&:hover {
color: @primary-color;
&__title {
color: #fff;
font-size: 24px;
}
img {
width: 65px;
}
}
}
}
input:not([type='checkbox']) {
min-width: 360px;
&-sign-in-way {
.anticon {
color: #888;
font-size: 22px;
cursor: pointer;
@media (max-width: @screen-xl) {
min-width: 320px;
&:hover {
color: @primary-color;
}
}
}
@media (max-width: @screen-lg) {
min-width: 260px;
input:not([type='checkbox']) {
min-width: 360px;
@media (max-width: @screen-xl) {
min-width: 320px;
}
@media (max-width: @screen-lg) {
min-width: 260px;
}
@media (max-width: @screen-md) {
min-width: 240px;
}
@media (max-width: @screen-sm) {
min-width: 160px;
}
}
@media (max-width: @screen-md) {
min-width: 240px;
.@{countdown-prefix-cls} input {
min-width: unset;
}
@media (max-width: @screen-sm) {
min-width: 160px;
.ant-divider-inner-text {
color: @text-color-secondary;
font-size: 12px;
}
}
.@{countdown-prefix-cls} input {
min-width: unset;
}
.ant-divider-inner-text {
color: @text-color-secondary;
font-size: 12px;
}
}
</style>
</style>

View File

@ -1,31 +1,33 @@
import { defineApplicationConfig } from '@vben/vite-config';
export default defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
'echarts/core',
'echarts/charts',
'echarts/components',
'echarts/renderers',
'qrcode',
'@iconify/iconify',
'ant-design-vue/es/locale/zh_CN',
'ant-design-vue/es/locale/en_US',
],
},
server: {
port: 3000,
proxy: {
'/erp-api': {
target: 'http://localhost:8088',
changeOrigin: true,
ws: true,
// rewrite: (path) => path.replace(/^\/api/, ''),
// only https
overrides: {
optimizeDeps: {
include: [
'echarts/core',
'echarts/charts',
'echarts/components',
'echarts/renderers',
'qrcode',
'@iconify/iconify',
'ant-design-vue/es/locale/zh_CN',
'ant-design-vue/es/locale/en_US',
],
},
server: {
port: 3000,
proxy: {
'/erp-api': {
target: 'http://58.49.150.163:8088',
// target: 'https://eairp.cn',
}
},
changeOrigin: true,
ws: true,
// rewrite: (path) => path.replace(/^\/api/, ''),
// only https
}
},
},
},
},
});