vue commit
2
.browserslistrc
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
> 1%
|
||||||
|
last 2 versions
|
||||||
35
.editorconfig
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# http://editorconfig.org
|
||||||
|
|
||||||
|
# top-most EditorConfig file
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# Unix-style newlines with a newline ending every file
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
# Indentation override for js(x), ts(x) and vue files
|
||||||
|
[*.{js,jsx,ts,tsx,vue}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
# Indentation override for css related files
|
||||||
|
[*.{css,styl,scss,less,sass}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
# Indentation override for html files
|
||||||
|
[*.html]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
# Trailing space override for markdown file
|
||||||
|
[*.md]
|
||||||
|
trim_trailing_whitespace = false
|
||||||
|
|
||||||
|
# Indentation override for config files
|
||||||
|
[*.{json,yml}]
|
||||||
|
indent_size = 2
|
||||||
|
indent_style = space
|
||||||
23
.env.development
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Base api
|
||||||
|
VUE_APP_BASE_API = '/api'
|
||||||
|
|
||||||
|
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
|
||||||
|
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
|
||||||
|
# It only does one thing by converting all import() to require().
|
||||||
|
# This configuration can significantly increase the speed of hot updates,
|
||||||
|
# when you have a large number of pages.
|
||||||
|
# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
|
||||||
|
|
||||||
|
NODE_ENV = 'development'
|
||||||
|
VUE_APP_NODE_ENV = 'dev'
|
||||||
|
|
||||||
|
//后端服务的地址
|
||||||
|
VUE_APP_URL = 'http://localhost:8080/admin'
|
||||||
|
|
||||||
|
VUE_APP_SOCKET_URL = 'ws://localhost:8080/ws/'
|
||||||
|
//VUE_APP_SOCKET_URL = 'ws://http://23ce4dbd.cpolar.cn/ws/'
|
||||||
|
|
||||||
|
|
||||||
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
# 删除权限 true/有
|
||||||
|
VUE_APP_DELETE_PERMISSIONS = true
|
||||||
12
.env.production
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Base api
|
||||||
|
# Remeber to change this to your production server address
|
||||||
|
# Here I used my mock server for this project
|
||||||
|
# VUE_APP_BASE_API = 'https://vue-typescript-admin-mock-server.armour.now.sh/mock-api/v1/'
|
||||||
|
|
||||||
|
NODE_ENV = 'production'
|
||||||
|
VUE_APP_NODE_ENV = 'prod'
|
||||||
|
VUE_APP_BASE_API = '/api'
|
||||||
|
VUE_APP_URL=''
|
||||||
|
VUE_APP_SOCKET_URL = ''
|
||||||
|
# 删除权限 true/有
|
||||||
|
VUE_APP_DELETE_PERMISSIONS = false
|
||||||
10
.env.production.uat
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Base api
|
||||||
|
# Remeber to change this to your production server address
|
||||||
|
# Here I used my mock server for this project
|
||||||
|
# VUE_APP_BASE_API = 'https://vue-typescript-admin-mock-server.armour.now.sh/mock-api/v1/'
|
||||||
|
|
||||||
|
NODE_ENV = 'production'
|
||||||
|
VUE_APP_NODE_ENV = 'prod:uat'
|
||||||
|
VUE_APP_BASE_API = '/api'
|
||||||
|
# 删除权限 true/有
|
||||||
|
VUE_APP_DELETE_PERMISSIONS = true
|
||||||
6
.env.staging
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Set to production for building optimization
|
||||||
|
NODE_ENV = production
|
||||||
|
|
||||||
|
# Base api
|
||||||
|
# VUE_APP_BASE_API = '/stage-api'
|
||||||
|
|
||||||
3
.eslintignore
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
dist/*.js
|
||||||
|
src/assets
|
||||||
|
tests/unit/coverage
|
||||||
60
.eslintrc.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
es6: true
|
||||||
|
},
|
||||||
|
'extends': [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:vue/recommended',
|
||||||
|
'@vue/standard',
|
||||||
|
'@vue/typescript'
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
'space-before-function-paren': 0,
|
||||||
|
'vue/array-bracket-spacing': 0,
|
||||||
|
'vue/arrow-spacing': 0,
|
||||||
|
'vue/block-spacing': 0,
|
||||||
|
'vue/brace-style': 'error',
|
||||||
|
'vue/camelcase': 'error',
|
||||||
|
'vue/comma-dangle': 'error',
|
||||||
|
'vue/component-name-in-template-casing': 'error',
|
||||||
|
'vue/eqeqeq': 'error',
|
||||||
|
'vue/key-spacing': 0,
|
||||||
|
'vue/match-component-file-name': 'error',
|
||||||
|
'vue/object-curly-spacing': 0,
|
||||||
|
'vue/max-attributes-per-line': 0,
|
||||||
|
'padded-blocks': 0,
|
||||||
|
'semi': 0,
|
||||||
|
'indent': 0,
|
||||||
|
'space-infix-ops': 0,
|
||||||
|
'space-before-blocks': 0,
|
||||||
|
'eqeqeq': 0,
|
||||||
|
'vue/eqeqeq': 0,
|
||||||
|
'object-curly-spacing': 0,
|
||||||
|
'keyword-spacing': 0,
|
||||||
|
'spaced-comment': 0,
|
||||||
|
'key-spacing': 0,
|
||||||
|
'comma-spacing': 0,
|
||||||
|
'comma-dangle': 0,
|
||||||
|
'space-in-parens': 0,
|
||||||
|
'standard/object-curly-even-spacing': 0,
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
parser: '@typescript-eslint/parser'
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: [
|
||||||
|
'**/__tests__/*.{j,t}s?(x)',
|
||||||
|
'**/tests/unit/**/*.spec.{j,t}s?(x)'
|
||||||
|
],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
26
.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
/tests/e2e/videos/
|
||||||
|
/tests/e2e/screenshots/
|
||||||
|
/tests/**/coverage/
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
.history
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw*
|
||||||
45
.gitlab-ci.yml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
####提示
|
||||||
|
#1.以下脚本设置的是master分支被合并时执行(设置为平常用来发版本的分支即可)
|
||||||
|
#2.版本自动化部署到nginx下
|
||||||
|
#3.执行yml脚本的runner名字设置的vue-runner1,即对应tags
|
||||||
|
|
||||||
|
stages: # Stages 表示构建阶段,这里有两个阶段 install, deploy
|
||||||
|
- install
|
||||||
|
- deploy
|
||||||
|
|
||||||
|
cache:
|
||||||
|
key: ${CI_BUILD_REF_NAME}
|
||||||
|
paths:
|
||||||
|
- node_modules/
|
||||||
|
|
||||||
|
install-staging:dep: # Jobs 表示构建工作,表示某个 Stage 里面执行的工作。
|
||||||
|
stage: install
|
||||||
|
tags:
|
||||||
|
- reggie-vue-runner #与注册runner时填写的tags保持一致
|
||||||
|
only: # 定义了只有在被merge到了master分支上 才会执行部署脚本。
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- echo "=====start install======"
|
||||||
|
- npm install --registry=https://registry.npm.taobao.org #安装依赖
|
||||||
|
- echo "=====end install======"
|
||||||
|
artifacts: # 将这个job生成的依赖传递给下一个job。需要设置dependencies
|
||||||
|
expire_in: 60 mins # artifacets 的过期时间,因为这些数据都是直接保存在 Gitlab 机器上的,过于久远的资源就可以删除掉了
|
||||||
|
paths: # 需要被传递给下一个job的目录。
|
||||||
|
- node_modules/
|
||||||
|
|
||||||
|
deploy-staging:dep:
|
||||||
|
stage: deploy
|
||||||
|
tags:
|
||||||
|
- reggie-vue-runner
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
script:
|
||||||
|
- echo "=====start build======"
|
||||||
|
- npm run build:uat # 将项目打包 测试环境用npm run build:uat ---有删除权限 线上还是用npm run build ---没有删除权限
|
||||||
|
- echo "=====start deploy======"
|
||||||
|
- sudo cp -rf ./dist/ /usr/share/nginx/html/reggie
|
||||||
|
- echo "=====end deploy!!!!!!======"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
5
.prettierrc.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": false
|
||||||
|
}
|
||||||
6
Dockerfile
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
FROM nginx
|
||||||
|
|
||||||
|
COPY ./dist /usr/share/nginx/html
|
||||||
|
RUN chmod -R 777 /usr/share/nginx/html
|
||||||
|
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018 Chong Guo
|
||||||
|
|
||||||
|
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.
|
||||||
5
babel.config.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
'presets': [
|
||||||
|
'@vue/app'
|
||||||
|
]
|
||||||
|
};
|
||||||
3
cypress.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"pluginsFile": "tests/e2e/plugins/index.js"
|
||||||
|
}
|
||||||
49
jest.config.js
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
module.exports = {
|
||||||
|
'moduleFileExtensions': [
|
||||||
|
'js',
|
||||||
|
'jsx',
|
||||||
|
'json',
|
||||||
|
'vue',
|
||||||
|
'ts',
|
||||||
|
'tsx'
|
||||||
|
],
|
||||||
|
'transform': {
|
||||||
|
'^.+\\.vue$': 'vue-jest',
|
||||||
|
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
|
||||||
|
'^.+\\.tsx?$': 'ts-jest'
|
||||||
|
},
|
||||||
|
'transformIgnorePatterns': [
|
||||||
|
'/node_modules/'
|
||||||
|
],
|
||||||
|
'moduleNameMapper': {
|
||||||
|
'^@/(.*)$': '<rootDir>/src/$1'
|
||||||
|
},
|
||||||
|
'snapshotSerializers': [
|
||||||
|
'jest-serializer-vue'
|
||||||
|
],
|
||||||
|
'testMatch': [
|
||||||
|
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
|
||||||
|
],
|
||||||
|
'collectCoverage': true,
|
||||||
|
'collectCoverageFrom': [
|
||||||
|
'src/utils/**/*.{ts,vue}',
|
||||||
|
'!src/utils/auth.ts',
|
||||||
|
'!src/utils/request.ts',
|
||||||
|
'src/components/**/*.{ts,vue}'
|
||||||
|
],
|
||||||
|
'coverageDirectory': '<rootDir>/tests/unit/coverage',
|
||||||
|
'coverageReporters': [
|
||||||
|
'lcov',
|
||||||
|
'text-summary'
|
||||||
|
],
|
||||||
|
'testURL': 'http://localhost/',
|
||||||
|
'watchPlugins': [
|
||||||
|
'jest-watch-typeahead/filename',
|
||||||
|
'jest-watch-typeahead/testname'
|
||||||
|
],
|
||||||
|
'globals': {
|
||||||
|
'ts-jest': {
|
||||||
|
'babelConfig': true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
20726
package-lock.json
generated
Normal file
71
package.json
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
"name": "vue-typescript-admin-template",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"author": "Chong Guo <armourcy@gmail.com>",
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"build:uat": "vue-cli-service build --mode production.uat",
|
||||||
|
"lint": "vue-cli-service lint",
|
||||||
|
"svg": "vsvg -s ./src/icons/svg -t ./src/icons/components --ext ts --es6",
|
||||||
|
"test:e2e": "vue-cli-service test:e2e",
|
||||||
|
"test:unit": "vue-cli-service test:unit"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/echarts": "^4.4.6",
|
||||||
|
"@types/webpack": "^4.41.12",
|
||||||
|
"area-data": "^5.0.6",
|
||||||
|
"axios": "^0.19.0",
|
||||||
|
"echarts": "^5.3.2",
|
||||||
|
"element-ui": "^2.12.0",
|
||||||
|
"js-cookie": "^2.2.1",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"moment": "^2.24.0",
|
||||||
|
"normalize.css": "^8.0.1",
|
||||||
|
"nprogress": "^0.2.0",
|
||||||
|
"path-to-regexp": "^3.0.0",
|
||||||
|
"register-service-worker": "^1.6.2",
|
||||||
|
"vue": "^2.6.10",
|
||||||
|
"vue-area-linkage": "^5.1.0",
|
||||||
|
"vue-class-component": "^7.1.0",
|
||||||
|
"vue-property-decorator": "^8.2.2",
|
||||||
|
"vue-router": "^3.1.2",
|
||||||
|
"vue-svgicon": "^3.2.6",
|
||||||
|
"vuex": "^3.1.1",
|
||||||
|
"vuex-class": "^0.3.2",
|
||||||
|
"vuex-module-decorators": "^0.10.1",
|
||||||
|
"vuex-persistedstate": "^2.7.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/jest": "^24.0.18",
|
||||||
|
"@types/js-cookie": "^2.2.2",
|
||||||
|
"@types/nprogress": "^0.2.0",
|
||||||
|
"@types/webpack-env": "^1.14.0",
|
||||||
|
"@vue/cli-plugin-babel": "^3.11.0",
|
||||||
|
"@vue/cli-plugin-e2e-cypress": "^3.11.0",
|
||||||
|
"@vue/cli-plugin-eslint": "^3.11.0",
|
||||||
|
"@vue/cli-plugin-pwa": "^3.11.0",
|
||||||
|
"@vue/cli-plugin-typescript": "^3.11.0",
|
||||||
|
"@vue/cli-plugin-unit-jest": "^3.11.0",
|
||||||
|
"@vue/cli-service": "^3.11.0",
|
||||||
|
"@vue/eslint-config-standard": "^4.0.0",
|
||||||
|
"@vue/eslint-config-typescript": "^4.0.0",
|
||||||
|
"@vue/test-utils": "^1.0.0-beta.29",
|
||||||
|
"babel-core": "^7.0.0-bridge.0",
|
||||||
|
"babel-eslint": "^10.0.3",
|
||||||
|
"eslint": "^6.2.2",
|
||||||
|
"eslint-plugin-vue": "^5.2.3",
|
||||||
|
"fibers": "^4.0.2",
|
||||||
|
"jest": "^24.9.0",
|
||||||
|
"sass": "^1.22.10",
|
||||||
|
"sass-loader": "^7.3.1",
|
||||||
|
"style-resources-loader": "^1.2.1",
|
||||||
|
"ts-jest": "^24.0.2",
|
||||||
|
"typescript": "3.6.2",
|
||||||
|
"vue-cli-plugin-element": "^1.0.1",
|
||||||
|
"vue-cli-plugin-style-resources-loader": "^0.1.3",
|
||||||
|
"vue-template-compiler": "^2.6.10",
|
||||||
|
"webpack": "^4.39.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
5
postcss.config.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
'plugins': {
|
||||||
|
'autoprefixer': {}
|
||||||
|
}
|
||||||
|
};
|
||||||
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/icons/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
public/img/icons/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 7.0 KiB |
BIN
public/img/icons/apple-touch-icon-120x120.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
public/img/icons/apple-touch-icon-152x152.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/img/icons/apple-touch-icon-180x180.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/img/icons/apple-touch-icon-60x60.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
public/img/icons/apple-touch-icon-76x76.png
Normal file
|
After Width: | Height: | Size: 964 B |
BIN
public/img/icons/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/img/icons/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/icons/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/icons/msapplication-icon-144x144.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/img/icons/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
112
public/img/icons/safari-pinned-tab.svg
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="520.000000pt" height="520.000000pt" viewBox="0 0 520.000000 520.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
<metadata>
|
||||||
|
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||||
|
</metadata>
|
||||||
|
<g transform="translate(0.000000,520.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M1897 4883 c-3 -3 -39 -7 -79 -9 -66 -4 -125 -10 -138 -14 -3 -1 -13
|
||||||
|
-2 -22 -1 -10 1 -18 -3 -18 -10 0 -9 -3 -9 -14 0 -11 9 -18 8 -30 -5 -10 -9
|
||||||
|
-20 -14 -23 -11 -3 4 -15 1 -27 -5 -11 -7 -24 -13 -28 -14 -5 -1 -9 -2 -10 -4
|
||||||
|
-2 -1 -10 -3 -19 -5 -10 -1 -40 -14 -67 -28 -28 -14 -53 -23 -56 -20 -3 3 -8
|
||||||
|
-2 -12 -11 -3 -9 -10 -14 -14 -11 -4 3 -13 -2 -20 -10 -7 -8 -16 -12 -21 -9
|
||||||
|
-5 3 -9 0 -9 -6 0 -6 -4 -8 -10 -5 -5 3 -10 2 -10 -3 0 -5 -16 -17 -35 -28
|
||||||
|
-19 -10 -35 -23 -35 -28 0 -5 -3 -7 -6 -3 -6 6 -36 -16 -62 -45 -9 -9 -19 -15
|
||||||
|
-24 -12 -4 3 -8 1 -8 -5 0 -5 -9 -13 -20 -16 -11 -4 -18 -10 -15 -15 3 -4 -10
|
||||||
|
-17 -28 -29 -17 -11 -27 -21 -22 -21 6 0 -3 -9 -20 -20 -16 -11 -25 -20 -20
|
||||||
|
-20 6 -1 -1 -7 -15 -15 -14 -8 -21 -14 -16 -15 5 0 -3 -11 -18 -25 -14 -13
|
||||||
|
-26 -29 -26 -35 0 -6 -4 -8 -10 -5 -5 3 -10 3 -10 -2 0 -4 -13 -22 -28 -39
|
||||||
|
-60 -70 -72 -84 -72 -90 0 -4 -11 -17 -26 -30 -14 -13 -21 -24 -17 -24 4 0 3
|
||||||
|
-4 -2 -8 -18 -12 -66 -82 -58 -82 4 0 0 -5 -9 -11 -10 -5 -18 -14 -18 -20 0
|
||||||
|
-9 -8 -21 -38 -54 -7 -8 -10 -15 -6 -15 3 0 1 -6 -5 -13 -6 -8 -7 -18 -3 -23
|
||||||
|
4 -5 3 -6 -2 -2 -10 9 -46 -44 -46 -67 0 -8 -6 -18 -13 -22 -7 -4 -19 -23 -26
|
||||||
|
-40 -8 -18 -18 -33 -23 -33 -5 0 -7 -4 -3 -9 3 -5 -2 -17 -11 -25 -8 -9 -12
|
||||||
|
-16 -9 -16 4 0 0 -11 -9 -25 -9 -14 -13 -25 -9 -25 5 0 3 -4 -2 -8 -6 -4 -25
|
||||||
|
-41 -44 -82 -18 -41 -37 -84 -41 -95 -33 -73 -59 -136 -60 -143 -3 -28 -14
|
||||||
|
-52 -23 -52 -6 0 -8 -3 -4 -6 3 -3 -4 -31 -15 -62 -11 -32 -21 -61 -22 -67 -1
|
||||||
|
-5 -4 -14 -8 -20 -3 -5 -9 -26 -14 -45 -11 -49 -11 -49 -14 -55 -1 -3 -4 -9
|
||||||
|
-5 -15 -1 -5 -4 -12 -5 -15 -1 -3 -4 -9 -5 -15 -1 -5 -3 -11 -5 -12 -1 -2 -3
|
||||||
|
-12 -5 -23 -4 -23 -10 -46 -24 -93 -5 -18 -10 -35 -10 -37 -1 -3 -1 -6 -2 -7
|
||||||
|
0 -2 -2 -19 -5 -37 -2 -19 -10 -39 -17 -43 -7 -4 -8 -8 -1 -8 7 0 5 -23 -7
|
||||||
|
-67 -9 -38 -19 -90 -23 -118 -3 -27 -8 -68 -11 -90 -3 -22 -7 -53 -10 -70 -27
|
||||||
|
-163 -27 -652 0 -813 3 -17 7 -46 10 -62 11 -66 17 -93 29 -134 7 -23 12 -50
|
||||||
|
10 -59 -1 -9 3 -17 9 -17 5 0 7 -3 4 -7 -4 -3 -2 -12 3 -19 6 -6 10 -16 9 -20
|
||||||
|
-1 -5 1 -18 5 -29 31 -81 36 -98 32 -103 -3 -2 3 -17 14 -32 11 -15 17 -30 13
|
||||||
|
-34 -3 -3 0 -6 7 -6 7 0 10 -3 7 -6 -3 -4 -1 -16 5 -28 7 -11 13 -23 13 -26 0
|
||||||
|
-3 7 -16 15 -30 8 -14 15 -27 15 -30 4 -18 30 -60 37 -60 4 0 7 -3 6 -7 -3 -9
|
||||||
|
62 -106 74 -111 4 -2 8 -9 8 -16 0 -6 9 -18 20 -26 11 -8 20 -20 20 -27 0 -7
|
||||||
|
7 -13 15 -13 8 0 15 -4 15 -9 0 -13 58 -70 64 -63 3 3 6 -2 6 -11 0 -10 7 -17
|
||||||
|
15 -17 8 0 15 -4 15 -10 0 -5 4 -10 10 -10 5 0 23 -14 40 -31 16 -18 30 -28
|
||||||
|
30 -23 0 5 5 1 11 -8 5 -10 17 -18 24 -18 8 0 15 -4 15 -8 0 -5 16 -14 35 -22
|
||||||
|
19 -8 35 -17 35 -22 0 -4 6 -8 13 -9 6 0 34 -11 62 -24 27 -13 53 -21 57 -19
|
||||||
|
5 3 8 1 8 -3 0 -8 77 -35 105 -38 6 0 15 -4 22 -8 6 -4 23 -8 37 -9 14 -1 26
|
||||||
|
-5 26 -8 0 -6 33 -11 78 -13 12 -1 22 -3 22 -6 0 -4 19 -7 43 -9 55 -3 69 -6
|
||||||
|
85 -15 6 -5 12 -5 12 0 0 4 14 8 30 8 17 0 30 -2 30 -5 0 -7 96 -3 109 4 5 3
|
||||||
|
12 0 14 -6 4 -10 6 -9 6 1 1 11 4 11 16 1 8 -7 15 -8 15 -4 0 5 19 10 43 12
|
||||||
|
57 3 91 7 102 13 6 3 20 4 33 3 12 0 22 2 22 7 0 4 12 6 28 5 15 -2 31 -1 37
|
||||||
|
2 5 4 28 8 50 9 21 2 42 7 45 11 3 4 19 8 35 10 55 4 82 9 92 15 5 3 23 9 39
|
||||||
|
12 38 8 58 13 62 15 2 3 6 4 52 14 19 4 44 11 55 16 21 9 73 22 77 18 2 -1 14
|
||||||
|
5 28 12 14 8 30 15 35 16 6 2 20 5 32 8 11 2 35 12 52 20 17 9 33 16 36 16 19
|
||||||
|
1 199 74 207 85 4 5 8 6 8 2 0 -5 15 1 33 12 19 11 37 18 40 14 4 -3 7 -1 7 5
|
||||||
|
0 7 3 11 8 10 4 -2 73 30 153 70 80 39 149 72 153 72 4 0 14 7 23 15 8 8 19
|
||||||
|
13 24 10 5 -4 9 -1 9 5 0 7 6 10 12 8 7 -3 18 0 25 6 25 22 38 31 48 32 25 2
|
||||||
|
74 27 69 35 -3 5 -2 8 3 7 11 -3 56 12 72 25 7 6 20 12 29 13 8 2 18 6 21 11
|
||||||
|
11 15 45 38 37 26 -4 -7 -3 -13 2 -13 6 0 12 7 16 15 3 8 12 15 20 15 8 0 17
|
||||||
|
6 19 13 8 18 8 2 10 -373 l2 -345 88 -1 87 -1 0 126 c1 69 1 255 1 413 l-1
|
||||||
|
287 40 17 c21 10 37 21 34 26 -5 8 10 12 35 9 7 -2 10 2 6 8 -5 10 7 15 28 12
|
||||||
|
4 0 7 3 7 9 0 5 16 17 35 26 19 9 35 21 35 26 0 5 4 7 9 4 5 -4 11 -3 13 1 1
|
||||||
|
5 35 28 73 53 39 25 72 48 73 53 2 4 8 5 13 1 5 -3 12 2 15 10 3 9 10 14 14
|
||||||
|
11 4 -3 11 2 14 11 3 8 10 12 16 9 5 -3 10 1 10 10 0 9 4 14 9 11 5 -3 20 5
|
||||||
|
34 18 14 13 28 21 31 19 3 -3 8 2 12 11 3 9 15 16 26 16 10 0 16 5 13 10 -3 6
|
||||||
|
2 13 11 17 18 7 50 31 86 65 10 10 21 18 24 18 6 0 47 36 106 92 15 14 28 24
|
||||||
|
28 22 0 -3 48 43 108 103 108 109 252 281 252 302 0 6 4 11 9 11 9 0 32 37 78
|
||||||
|
130 16 30 31 57 35 58 5 2 8 12 8 21 0 10 3 21 7 24 13 13 45 113 67 208 40
|
||||||
|
176 22 407 -48 593 -32 85 -91 204 -113 228 -9 10 -13 18 -9 18 4 0 -4 15 -18
|
||||||
|
33 -15 19 -26 37 -26 40 0 11 -119 168 -179 236 -81 93 -142 151 -216 205 -22
|
||||||
|
17 -42 33 -45 36 -3 4 -21 15 -40 26 -19 10 -37 22 -40 25 -3 3 -20 14 -37 23
|
||||||
|
-18 9 -33 21 -33 26 0 6 -6 10 -14 10 -8 0 -21 6 -28 13 -7 7 -28 20 -45 28
|
||||||
|
-18 7 -33 17 -33 20 0 4 -11 10 -24 13 -14 3 -31 12 -38 19 -16 15 -70 41 -80
|
||||||
|
39 -5 -1 -8 2 -8 6 0 5 -16 14 -35 22 -19 8 -35 18 -35 24 0 5 -3 6 -7 3 -3
|
||||||
|
-4 -12 -2 -20 4 -7 6 -13 8 -13 3 0 -5 -4 -4 -8 3 -4 6 -14 13 -22 15 -8 2
|
||||||
|
-21 9 -28 16 -8 7 -17 10 -22 7 -5 -3 -10 -2 -12 2 -4 10 -80 47 -90 45 -5 -1
|
||||||
|
-8 3 -8 9 0 6 -7 9 -15 5 -8 -3 -15 -1 -15 4 0 6 -7 10 -15 10 -8 0 -15 5 -15
|
||||||
|
11 0 5 -5 7 -10 4 -6 -3 -10 -1 -10 6 0 7 -3 9 -7 6 -3 -4 -12 -2 -20 4 -7 6
|
||||||
|
-13 8 -13 3 0 -5 -4 -3 -9 4 -4 7 -18 14 -29 15 -12 1 -22 5 -22 10 0 4 -4 5
|
||||||
|
-10 2 -5 -3 -10 -1 -10 4 0 6 -7 11 -15 11 -15 0 -23 3 -81 33 -17 9 -34 14
|
||||||
|
-38 10 -3 -3 -6 -1 -6 6 0 7 -4 9 -10 6 -5 -3 -10 -2 -10 4 0 6 -7 7 -17 4
|
||||||
|
-10 -4 -14 -2 -9 5 4 7 -1 10 -14 7 -11 -2 -20 1 -20 6 0 6 -4 7 -10 4 -5 -3
|
||||||
|
-10 -1 -10 6 0 7 -3 9 -7 6 -3 -4 -12 -2 -20 4 -7 6 -13 8 -13 4 0 -4 -6 -2
|
||||||
|
-14 4 -8 7 -27 14 -42 17 -16 3 -33 9 -40 15 -6 5 -14 6 -17 2 -4 -3 -7 -2 -7
|
||||||
|
4 0 5 -7 10 -15 11 -8 1 -22 3 -30 4 -8 1 -15 5 -15 10 0 4 -8 8 -18 8 -10 0
|
||||||
|
-24 6 -31 13 -11 10 -12 9 -6 -3 7 -12 6 -13 -6 -4 -8 5 -48 21 -89 33 -41 13
|
||||||
|
-86 28 -100 34 -14 6 -29 9 -34 8 -5 -1 -21 2 -35 8 -14 5 -35 12 -46 17 -11
|
||||||
|
4 -31 9 -45 11 -14 2 -32 7 -40 10 -8 4 -19 8 -25 9 -5 1 -12 3 -15 4 -3 1
|
||||||
|
-12 3 -20 5 -8 1 -71 15 -139 30 -68 15 -137 28 -155 30 -17 2 -31 4 -31 5 0
|
||||||
|
1 -11 3 -25 5 -14 1 -43 5 -65 9 -22 4 -71 9 -110 12 -130 10 -154 12 -163 18
|
||||||
|
-5 3 -12 3 -15 -1z"/>
|
||||||
|
<path d="M4526 1543 c-2 -2 -12 -5 -23 -7 -37 -8 -111 -47 -151 -81 -43 -37
|
||||||
|
-92 -113 -95 -145 -1 -11 -4 -20 -8 -20 -13 0 -1 -156 16 -195 18 -42 108
|
||||||
|
-135 131 -135 8 0 14 -3 14 -8 0 -8 103 -58 160 -77 3 -1 18 -7 33 -13 16 -7
|
||||||
|
32 -12 36 -12 5 0 14 -7 21 -15 7 -8 16 -12 21 -9 5 3 9 2 9 -3 0 -4 12 -14
|
||||||
|
28 -21 32 -14 90 -67 113 -102 18 -28 24 -150 8 -150 -6 0 -8 -4 -5 -8 7 -11
|
||||||
|
-31 -72 -44 -72 -6 0 -9 -4 -6 -9 3 -5 -17 -18 -46 -30 -54 -23 -191 -30 -203
|
||||||
|
-11 -3 6 -15 10 -26 10 -10 0 -19 5 -19 10 0 6 -4 10 -10 10 -20 0 -63 56 -80
|
||||||
|
102 -9 26 -16 66 -15 88 1 22 -1 40 -4 41 -3 0 -43 1 -89 2 -66 2 -82 -1 -83
|
||||||
|
-13 -1 -8 -2 -22 -3 -30 -1 -8 2 -23 7 -32 5 -12 4 -18 -5 -18 -9 0 -9 -3 0
|
||||||
|
-12 7 -7 12 -21 12 -33 0 -36 48 -124 88 -162 52 -49 72 -65 72 -57 0 4 8 0
|
||||||
|
18 -9 10 -10 22 -14 25 -10 4 3 7 2 7 -4 0 -5 6 -10 13 -11 6 -1 28 -5 47 -9
|
||||||
|
31 -6 200 -9 248 -3 19 2 34 8 103 39 64 30 143 110 155 158 4 13 9 23 13 23
|
||||||
|
12 0 21 188 10 210 -4 8 -13 30 -19 48 -7 17 -17 32 -23 32 -6 0 -8 2 -5 6 7
|
||||||
|
7 -72 89 -94 97 -10 3 -18 11 -18 17 0 6 -4 8 -10 5 -5 -3 -10 -3 -10 2 0 4
|
||||||
|
-15 14 -32 22 -18 8 -36 18 -39 23 -3 5 -16 10 -27 11 -12 1 -22 4 -22 8 0 4
|
||||||
|
-10 10 -22 14 -31 10 -37 12 -43 15 -3 1 -8 3 -12 5 -47 12 -136 59 -168 87
|
||||||
|
-32 27 -58 75 -50 88 3 6 3 10 -2 10 -4 0 -8 14 -8 30 -1 17 3 30 8 30 4 0 5
|
||||||
|
4 2 10 -18 28 60 110 120 125 39 11 125 12 125 3 0 -5 9 -8 20 -8 26 0 86 -54
|
||||||
|
105 -94 9 -18 16 -48 17 -67 l1 -36 89 0 88 1 0 38 c0 21 -4 38 -8 38 -4 0 -9
|
||||||
|
11 -10 25 -7 93 -141 235 -221 235 -12 0 -21 4 -21 8 0 7 -197 12 -204 5z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.7 KiB |
24
public/index.html
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||||
|
<link rel="icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
||||||
|
<title>苍穹外卖</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>
|
||||||
|
<strong
|
||||||
|
>We're sorry but <%= webpackConfig.name %> doesn't work properly without
|
||||||
|
JavaScript enabled. Please enable it to continue.</strong
|
||||||
|
>
|
||||||
|
</noscript>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
<!-- <% if (process.env.VUE_APP_NODE_ENV === 'prod' ) { %>
|
||||||
|
<script type="text/javascript" src="https://pip-data-rollback.itheima.net/init.min.js" async="async" id="data-rollback" exchange="maintainExchange"></script>
|
||||||
|
<% } %> -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
20
public/manifest.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "苍穹外卖",
|
||||||
|
"short_name": "Vue Ts Admin",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "./img/icons/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "./img/icons/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"start_url": "./index.html",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#fff",
|
||||||
|
"theme_color": "#4DBA87"
|
||||||
|
}
|
||||||
2
public/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
563
report.20210610.155436.5628.0.001.json
Normal file
@@ -0,0 +1,563 @@
|
|||||||
|
|
||||||
|
{
|
||||||
|
"header": {
|
||||||
|
"reportVersion": 2,
|
||||||
|
"event": "Allocation failed - JavaScript heap out of memory",
|
||||||
|
"trigger": "FatalError",
|
||||||
|
"filename": "report.20210610.155436.5628.0.001.json",
|
||||||
|
"dumpEventTime": "2021-06-10T15:54:36Z",
|
||||||
|
"dumpEventTimeStamp": "1623311676251",
|
||||||
|
"processId": 5628,
|
||||||
|
"threadId": null,
|
||||||
|
"cwd": "E:\\workSpace\\vue\\project-rjwm-admin-vue-ts",
|
||||||
|
"commandLine": [
|
||||||
|
"D:\\tools\\languageEnv\\node\\node.exe",
|
||||||
|
"E:\\workSpace\\vue\\project-rjwm-admin-vue-ts\\node_modules\\.bin\\\\..\\@vue\\cli-service\\bin\\vue-cli-service.js",
|
||||||
|
"serve"
|
||||||
|
],
|
||||||
|
"nodejsVersion": "v12.16.3",
|
||||||
|
"wordSize": 64,
|
||||||
|
"arch": "x64",
|
||||||
|
"platform": "win32",
|
||||||
|
"componentVersions": {
|
||||||
|
"node": "12.16.3",
|
||||||
|
"v8": "7.8.279.23-node.35",
|
||||||
|
"uv": "1.34.2",
|
||||||
|
"zlib": "1.2.11",
|
||||||
|
"brotli": "1.0.7",
|
||||||
|
"ares": "1.16.0",
|
||||||
|
"modules": "72",
|
||||||
|
"nghttp2": "1.40.0",
|
||||||
|
"napi": "5",
|
||||||
|
"llhttp": "2.0.4",
|
||||||
|
"http_parser": "2.9.3",
|
||||||
|
"openssl": "1.1.1g",
|
||||||
|
"cldr": "36.0",
|
||||||
|
"icu": "65.1",
|
||||||
|
"tz": "2019c",
|
||||||
|
"unicode": "12.1"
|
||||||
|
},
|
||||||
|
"release": {
|
||||||
|
"name": "node",
|
||||||
|
"lts": "Erbium",
|
||||||
|
"headersUrl": "https://nodejs.org/download/release/v12.16.3/node-v12.16.3-headers.tar.gz",
|
||||||
|
"sourceUrl": "https://nodejs.org/download/release/v12.16.3/node-v12.16.3.tar.gz",
|
||||||
|
"libUrl": "https://nodejs.org/download/release/v12.16.3/win-x64/node.lib"
|
||||||
|
},
|
||||||
|
"osName": "Windows_NT",
|
||||||
|
"osRelease": "6.1.7601",
|
||||||
|
"osVersion": "Windows 7 Ultimate Service Pack 1",
|
||||||
|
"osMachine": "x86_64",
|
||||||
|
"cpus": [
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 3591486,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1681331,
|
||||||
|
"idle": 108769263,
|
||||||
|
"irq": 46238
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 338896,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 93975,
|
||||||
|
"idle": 113608882,
|
||||||
|
"irq": 405
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 3468385,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1302514,
|
||||||
|
"idle": 109270744,
|
||||||
|
"irq": 200055
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 176905,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 38235,
|
||||||
|
"idle": 113826348,
|
||||||
|
"irq": 421
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 4137349,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1150803,
|
||||||
|
"idle": 108753226,
|
||||||
|
"irq": 9438
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 888410,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 944632,
|
||||||
|
"idle": 112208212,
|
||||||
|
"irq": 72150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 6490156,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1070510,
|
||||||
|
"idle": 106480463,
|
||||||
|
"irq": 8564
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 292845,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 51558,
|
||||||
|
"idle": 113696602,
|
||||||
|
"irq": 546
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 4281728,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1129150,
|
||||||
|
"idle": 108630001,
|
||||||
|
"irq": 10467
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 293453,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 272814,
|
||||||
|
"idle": 113474472,
|
||||||
|
"irq": 186935
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 5714737,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 1403431,
|
||||||
|
"idle": 106922461,
|
||||||
|
"irq": 11216
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model": "Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz",
|
||||||
|
"speed": 3300,
|
||||||
|
"user": 211599,
|
||||||
|
"nice": 0,
|
||||||
|
"sys": 78187,
|
||||||
|
"idle": 113750703,
|
||||||
|
"irq": 514
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"networkInterfaces": [
|
||||||
|
{
|
||||||
|
"name": "本地连接",
|
||||||
|
"internal": false,
|
||||||
|
"mac": "1c:1b:0d:06:51:e4",
|
||||||
|
"address": "fe80::24eb:8f76:cede:ceab",
|
||||||
|
"netmask": "ffff:ffff:ffff:ffff::",
|
||||||
|
"family": "IPv6",
|
||||||
|
"scopeid": 11
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "本地连接",
|
||||||
|
"internal": false,
|
||||||
|
"mac": "1c:1b:0d:06:51:e4",
|
||||||
|
"address": "172.16.43.194",
|
||||||
|
"netmask": "255.255.192.0",
|
||||||
|
"family": "IPv4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Loopback Pseudo-Interface 1",
|
||||||
|
"internal": true,
|
||||||
|
"mac": "00:00:00:00:00:00",
|
||||||
|
"address": "::1",
|
||||||
|
"netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
|
||||||
|
"family": "IPv6",
|
||||||
|
"scopeid": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Loopback Pseudo-Interface 1",
|
||||||
|
"internal": true,
|
||||||
|
"mac": "00:00:00:00:00:00",
|
||||||
|
"address": "127.0.0.1",
|
||||||
|
"netmask": "255.0.0.0",
|
||||||
|
"family": "IPv4"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"host": "CZBK-20200409KQ"
|
||||||
|
},
|
||||||
|
"javascriptStack": {
|
||||||
|
"message": "No stack.",
|
||||||
|
"stack": [
|
||||||
|
"Unavailable."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"nativeStack": [
|
||||||
|
{
|
||||||
|
"pc": "0x000000013f652449",
|
||||||
|
"symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+11577"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013f6569a9",
|
||||||
|
"symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+29337"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013f655828",
|
||||||
|
"symbol": "std::basic_ostream<char,std::char_traits<char> >::operator<<+24856"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013f78d8c2",
|
||||||
|
"symbol": "v8::base::CPU::has_sse+68658"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013ffa9bbe",
|
||||||
|
"symbol": "v8::Isolate::ReportExternalAllocationLimitReached+94"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013ff91c91",
|
||||||
|
"symbol": "v8::SharedArrayBuffer::Externalize+833"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe5e1ec",
|
||||||
|
"symbol": "v8::internal::Heap::EphemeronKeyWriteBarrierFromCode+1436"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe69420",
|
||||||
|
"symbol": "v8::internal::Heap::ProtectUnprotectedMemoryChunks+1312"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe65f44",
|
||||||
|
"symbol": "v8::internal::Heap::PageFlagsAreConsistent+3204"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe5b743",
|
||||||
|
"symbol": "v8::internal::Heap::CollectGarbage+1283"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe59db4",
|
||||||
|
"symbol": "v8::internal::Heap::AddRetainedMap+2452"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fe7afbd",
|
||||||
|
"symbol": "v8::internal::Factory::NewFillerObject+61"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x000000013fbe1871",
|
||||||
|
"symbol": "v8::internal::interpreter::JumpTableTargetOffsets::iterator::operator=+1665"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x00000001403f6c4d",
|
||||||
|
"symbol": "v8::internal::SetupIsolateDelegate::SetupHeap+546637"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x00000001403f7d43",
|
||||||
|
"symbol": "v8::internal::SetupIsolateDelegate::SetupHeap+550979"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pc": "0x00000079aa1ccd2b",
|
||||||
|
"symbol": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"javascriptHeap": {
|
||||||
|
"totalMemory": 2163404800,
|
||||||
|
"totalCommittedMemory": 2163404800,
|
||||||
|
"usedMemory": 2120118744,
|
||||||
|
"availableMemory": 57120176,
|
||||||
|
"memoryLimit": 2197815296,
|
||||||
|
"heapSpaces": {
|
||||||
|
"read_only_space": {
|
||||||
|
"memorySize": 262144,
|
||||||
|
"committedMemory": 262144,
|
||||||
|
"capacity": 32808,
|
||||||
|
"used": 32808,
|
||||||
|
"available": 0
|
||||||
|
},
|
||||||
|
"new_space": {
|
||||||
|
"memorySize": 23068672,
|
||||||
|
"committedMemory": 23068672,
|
||||||
|
"capacity": 11522016,
|
||||||
|
"used": 1072552,
|
||||||
|
"available": 10449464
|
||||||
|
},
|
||||||
|
"old_space": {
|
||||||
|
"memorySize": 1236938752,
|
||||||
|
"committedMemory": 1236938752,
|
||||||
|
"capacity": 1229757864,
|
||||||
|
"used": 1229019664,
|
||||||
|
"available": 738200
|
||||||
|
},
|
||||||
|
"code_space": {
|
||||||
|
"memorySize": 4362240,
|
||||||
|
"committedMemory": 4362240,
|
||||||
|
"capacity": 3741600,
|
||||||
|
"used": 3741600,
|
||||||
|
"available": 0
|
||||||
|
},
|
||||||
|
"map_space": {
|
||||||
|
"memorySize": 18616320,
|
||||||
|
"committedMemory": 18616320,
|
||||||
|
"capacity": 6707520,
|
||||||
|
"used": 6707520,
|
||||||
|
"available": 0
|
||||||
|
},
|
||||||
|
"large_object_space": {
|
||||||
|
"memorySize": 879239168,
|
||||||
|
"committedMemory": 879239168,
|
||||||
|
"capacity": 878721496,
|
||||||
|
"used": 878721496,
|
||||||
|
"available": 0
|
||||||
|
},
|
||||||
|
"code_large_object_space": {
|
||||||
|
"memorySize": 917504,
|
||||||
|
"committedMemory": 917504,
|
||||||
|
"capacity": 823104,
|
||||||
|
"used": 823104,
|
||||||
|
"available": 0
|
||||||
|
},
|
||||||
|
"new_large_object_space": {
|
||||||
|
"memorySize": 0,
|
||||||
|
"committedMemory": 0,
|
||||||
|
"capacity": 11522016,
|
||||||
|
"used": 0,
|
||||||
|
"available": 11522016
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourceUsage": {
|
||||||
|
"userCpuSeconds": 1001.07,
|
||||||
|
"kernelCpuSeconds": 47.767,
|
||||||
|
"cpuConsumptionPercent": 15.9084,
|
||||||
|
"maxRss": 3146252288,
|
||||||
|
"pageFaults": {
|
||||||
|
"IORequired": 7262522,
|
||||||
|
"IONotRequired": 0
|
||||||
|
},
|
||||||
|
"fsActivity": {
|
||||||
|
"reads": 57874,
|
||||||
|
"writes": 276
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"libuv": [
|
||||||
|
],
|
||||||
|
"workers": [
|
||||||
|
],
|
||||||
|
"environmentVariables": {
|
||||||
|
"=E:": "E:\\workSpace\\vue\\project-rjwm-admin-vue-ts",
|
||||||
|
"ALLUSERSPROFILE": "C:\\ProgramData",
|
||||||
|
"ANDROID_HOME": "D:\\tools\\languageEnv\\androidSdk",
|
||||||
|
"ANDROID_SDK_HOME": "D:\\tools\\languageEnv\\androidSdk",
|
||||||
|
"APPDATA": "C:\\Users\\itcast\\AppData\\Roaming",
|
||||||
|
"BABEL_ENV": "development",
|
||||||
|
"CHROME_CRASHPAD_PIPE_NAME": "\\\\.\\pipe\\crashpad_2628_OSFCTUHMTXXCSAUA",
|
||||||
|
"CLASSPATH": ".;D:\\tools\\languageEnv\\java\\lib;D:\\tools\\languageEnv\\java\\lib\\tools.jar;",
|
||||||
|
"COLORTERM": "truecolor",
|
||||||
|
"CommonProgramFiles": "C:\\Program Files\\Common Files",
|
||||||
|
"CommonProgramFiles(x86)": "C:\\Program Files (x86)\\Common Files",
|
||||||
|
"CommonProgramW6432": "C:\\Program Files\\Common Files",
|
||||||
|
"COMPUTERNAME": "CZBK-20200409KQ",
|
||||||
|
"ComSpec": "C:\\Windows\\system32\\cmd.exe",
|
||||||
|
"FLUTTER_STORAGE_BASE_URL": "https://storage.flutter-io.cn",
|
||||||
|
"FP_NO_HOST_CHECK": "NO",
|
||||||
|
"GIT_ASKPASS": "d:\\tools\\codeTools\\vscode\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass.sh",
|
||||||
|
"GRADLE_HOME": "D:\\tools\\languageEnv\\gradle\\gradle-6.6",
|
||||||
|
"HOMEDRIVE": "C:",
|
||||||
|
"HOMEPATH": "\\Users\\itcast",
|
||||||
|
"INIT_CWD": "E:\\workSpace\\vue\\project-rjwm-admin-vue-ts",
|
||||||
|
"JAVA_HOME": "D:\\tools\\languageEnv\\java",
|
||||||
|
"LANG": "zh_CN.UTF-8",
|
||||||
|
"LOCALAPPDATA": "C:\\Users\\itcast\\AppData\\Local",
|
||||||
|
"LOGONSERVER": "\\\\CZBK-20200409KQ",
|
||||||
|
"MAVEN_HOME": "D:\\tools\\languageEnv\\maven\\apache-maven-3.8.1",
|
||||||
|
"NODE": "D:\\tools\\languageEnv\\node\\node.exe",
|
||||||
|
"NODE_ENV": "development",
|
||||||
|
"NODE_PATH": "D:\\tools\\languageEnv\\node_global\\node_modules",
|
||||||
|
"npm_config_argv": "{\"remain\":[],\"cooked\":[\"run\",\"serve\"],\"original\":[\"serve\"]}",
|
||||||
|
"npm_config_bin_links": "true",
|
||||||
|
"npm_config_cache": "D:\\tools\\languageEnv\\node\\node_cache",
|
||||||
|
"npm_config_disturl": "https://npm.taobao.org/dist",
|
||||||
|
"npm_config_ignore_optional": "",
|
||||||
|
"npm_config_ignore_scripts": "",
|
||||||
|
"npm_config_init_license": "MIT",
|
||||||
|
"npm_config_init_version": "1.0.0",
|
||||||
|
"npm_config_msvs_version": "2017",
|
||||||
|
"npm_config_prefix": "D:\\tools\\languageEnv\\node\\node_global",
|
||||||
|
"npm_config_registry": "https://registry.npm.taobao.org",
|
||||||
|
"npm_config_save_prefix": "^",
|
||||||
|
"npm_config_strict_ssl": "true",
|
||||||
|
"npm_config_user_agent": "yarn/1.22.4 npm/? node/v12.16.3 win32 x64",
|
||||||
|
"npm_config_version_commit_hooks": "true",
|
||||||
|
"npm_config_version_git_message": "v%s",
|
||||||
|
"npm_config_version_git_sign": "",
|
||||||
|
"npm_config_version_git_tag": "true",
|
||||||
|
"npm_config_version_tag_prefix": "v",
|
||||||
|
"npm_execpath": "D:\\tools\\languageEnv\\yarn\\bin\\yarn.js",
|
||||||
|
"npm_lifecycle_event": "serve",
|
||||||
|
"npm_lifecycle_script": "vue-cli-service serve",
|
||||||
|
"npm_node_execpath": "D:\\tools\\languageEnv\\node\\node.exe",
|
||||||
|
"npm_package_author_email": "armourcy@gmail.com",
|
||||||
|
"npm_package_author_name": "Chong Guo",
|
||||||
|
"npm_package_dependencies_area_data": "^5.0.6",
|
||||||
|
"npm_package_dependencies_axios": "^0.19.0",
|
||||||
|
"npm_package_dependencies_echarts": "^4.6.0",
|
||||||
|
"npm_package_dependencies_element_ui": "^2.12.0",
|
||||||
|
"npm_package_dependencies_js_cookie": "^2.2.1",
|
||||||
|
"npm_package_dependencies_moment": "^2.24.0",
|
||||||
|
"npm_package_dependencies_normalize_css": "^8.0.1",
|
||||||
|
"npm_package_dependencies_nprogress": "^0.2.0",
|
||||||
|
"npm_package_dependencies_path_to_regexp": "^3.0.0",
|
||||||
|
"npm_package_dependencies_register_service_worker": "^1.6.2",
|
||||||
|
"npm_package_dependencies_vue": "^2.6.10",
|
||||||
|
"npm_package_dependencies_vuex": "^3.1.1",
|
||||||
|
"npm_package_dependencies_vuex_class": "^0.3.2",
|
||||||
|
"npm_package_dependencies_vuex_module_decorators": "^0.10.1",
|
||||||
|
"npm_package_dependencies_vuex_persistedstate": "^2.7.0",
|
||||||
|
"npm_package_dependencies_vue_area_linkage": "^5.1.0",
|
||||||
|
"npm_package_dependencies_vue_class_component": "^7.1.0",
|
||||||
|
"npm_package_dependencies_vue_property_decorator": "^8.2.2",
|
||||||
|
"npm_package_dependencies_vue_router": "^3.1.2",
|
||||||
|
"npm_package_dependencies_vue_svgicon": "^3.2.6",
|
||||||
|
"npm_package_dependencies__types_echarts": "^4.4.6",
|
||||||
|
"npm_package_dependencies__types_webpack": "^4.41.12",
|
||||||
|
"npm_package_description": "## 1 pc端需求概述",
|
||||||
|
"npm_package_devDependencies_babel_core": "^7.0.0-bridge.0",
|
||||||
|
"npm_package_devDependencies_babel_eslint": "^10.0.3",
|
||||||
|
"npm_package_devDependencies_eslint": "^6.2.2",
|
||||||
|
"npm_package_devDependencies_eslint_plugin_vue": "^5.2.3",
|
||||||
|
"npm_package_devDependencies_fibers": "^4.0.1",
|
||||||
|
"npm_package_devDependencies_jest": "^24.9.0",
|
||||||
|
"npm_package_devDependencies_sass": "^1.22.10",
|
||||||
|
"npm_package_devDependencies_sass_loader": "^7.3.1",
|
||||||
|
"npm_package_devDependencies_style_resources_loader": "^1.2.1",
|
||||||
|
"npm_package_devDependencies_ts_jest": "^24.0.2",
|
||||||
|
"npm_package_devDependencies_typescript": "3.6.2",
|
||||||
|
"npm_package_devDependencies_vue_cli_plugin_element": "^1.0.1",
|
||||||
|
"npm_package_devDependencies_vue_cli_plugin_style_resources_loader": "^0.1.3",
|
||||||
|
"npm_package_devDependencies_vue_template_compiler": "^2.6.10",
|
||||||
|
"npm_package_devDependencies_webpack": "^4.39.3",
|
||||||
|
"npm_package_devDependencies__types_jest": "^24.0.18",
|
||||||
|
"npm_package_devDependencies__types_js_cookie": "^2.2.2",
|
||||||
|
"npm_package_devDependencies__types_nprogress": "^0.2.0",
|
||||||
|
"npm_package_devDependencies__types_webpack_env": "^1.14.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_babel": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_e2e_cypress": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_eslint": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_pwa": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_typescript": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_plugin_unit_jest": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_cli_service": "^3.11.0",
|
||||||
|
"npm_package_devDependencies__vue_eslint_config_standard": "^4.0.0",
|
||||||
|
"npm_package_devDependencies__vue_eslint_config_typescript": "^4.0.0",
|
||||||
|
"npm_package_devDependencies__vue_test_utils": "^1.0.0-beta.29",
|
||||||
|
"npm_package_license": "MIT",
|
||||||
|
"npm_package_name": "vue-typescript-admin-template",
|
||||||
|
"npm_package_private": "true",
|
||||||
|
"npm_package_readmeFilename": "README.md",
|
||||||
|
"npm_package_scripts_build": "vue-cli-service build",
|
||||||
|
"npm_package_scripts_lint": "vue-cli-service lint",
|
||||||
|
"npm_package_scripts_serve": "vue-cli-service serve",
|
||||||
|
"npm_package_scripts_svg": "vsvg -s ./src/icons/svg -t ./src/icons/components --ext ts --es6",
|
||||||
|
"npm_package_scripts_test_e2e": "vue-cli-service test:e2e",
|
||||||
|
"npm_package_scripts_test_unit": "vue-cli-service test:unit",
|
||||||
|
"npm_package_version": "0.1.0",
|
||||||
|
"NUMBER_OF_PROCESSORS": "12",
|
||||||
|
"ORIGINAL_XDG_CURRENT_DESKTOP": "undefined",
|
||||||
|
"OS": "Windows_NT",
|
||||||
|
"Path": "C:\\Users\\itcast\\AppData\\Local\\Temp\\yarn--1623305083040-0.16842799735602587;E:\\workSpace\\vue\\project-rjwm-admin-vue-ts\\node_modules\\.bin;C:\\Users\\itcast\\AppData\\Local\\Yarn\\Data\\link\\node_modules\\.bin;D:\\tools\\languageEnv\\node\\node_global\\bin;D:\\tools\\languageEnv\\libexec\\lib\\node_modules\\npm\\bin\\node-gyp-bin;D:\\tools\\languageEnv\\lib\\node_modules\\npm\\bin\\node-gyp-bin;D:\\tools\\languageEnv\\node\\node_modules\\npm\\bin\\node-gyp-bin;C:\\Program Files\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;D:\\tools\\languageEnv\\node;D:\\tools\\editTools\\ue\\;D:\\tools\\codeTools\\vscode\\Microsoft VS Code\\bin;D:\\tools\\languageEnv\\yarn\\bin\\;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0;D:\\tools\\languageEnv\\androidSdk\\platform-tools;D:\\tools\\languageEnv\\androidSdk\\tools;D:\\tools\\languageEnv\\gradle\\gradle-6.6\\bin;D:\\tools\\languageEnv\\node\\node_global;D:\\tools\\managementTools\\Git\\cmd;D:\\tools\\languageEnv\\python;D:\\tools\\languageEnv\\node\\;D:\\tools\\languageEnv\\maven\\apache-maven-3.8.1\\bin;C:\\Windows\\System32;D:\\tools\\languageEnv\\java\\bin;D:\\tools\\languageEnv\\java\\jre\\bin;D:\\tools\\languageEnv\\flutter\\bin;C:\\Users\\itcast\\AppData\\Roaming\\npm",
|
||||||
|
"PATHEXT": ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JSE;.WSF;.WSH;.MSC",
|
||||||
|
"PROCESSOR_ARCHITECTURE": "AMD64",
|
||||||
|
"PROCESSOR_IDENTIFIER": "Intel64 Family 6 Model 63 Stepping 2, GenuineIntel",
|
||||||
|
"PROCESSOR_LEVEL": "6",
|
||||||
|
"PROCESSOR_REVISION": "3f02",
|
||||||
|
"ProgramData": "C:\\ProgramData",
|
||||||
|
"ProgramFiles": "C:\\Program Files",
|
||||||
|
"ProgramFiles(x86)": "C:\\Program Files (x86)",
|
||||||
|
"ProgramW6432": "C:\\Program Files",
|
||||||
|
"PROMPT": "$P$G",
|
||||||
|
"PSModulePath": "C:\\Users\\itcast\\Documents\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\",
|
||||||
|
"PUBLIC": "C:\\Users\\Public",
|
||||||
|
"PUB_HOSTED_URL": "https://pub.flutter-io.cn",
|
||||||
|
"SystemDrive": "C:",
|
||||||
|
"SystemRoot": "C:\\Windows",
|
||||||
|
"TEMP": "C:\\Users\\itcast\\AppData\\Local\\Temp",
|
||||||
|
"TERM_PROGRAM": "vscode",
|
||||||
|
"TERM_PROGRAM_VERSION": "1.56.2",
|
||||||
|
"TMP": "C:\\Users\\itcast\\AppData\\Local\\Temp",
|
||||||
|
"USERDOMAIN": "CZBK-20200409KQ",
|
||||||
|
"USERNAME": "itcast",
|
||||||
|
"USERPROFILE": "C:\\Users\\itcast",
|
||||||
|
"VSCODE_GIT_ASKPASS_MAIN": "d:\\tools\\codeTools\\vscode\\Microsoft VS Code\\resources\\app\\extensions\\git\\dist\\askpass-main.js",
|
||||||
|
"VSCODE_GIT_ASKPASS_NODE": "D:\\tools\\codeTools\\vscode\\Microsoft VS Code\\Code.exe",
|
||||||
|
"VSCODE_GIT_IPC_HANDLE": "\\\\.\\pipe\\vscode-git-136ec50daa-sock",
|
||||||
|
"Vue": "D:\\tools\\languageEnv\\node\\node_global\\bin",
|
||||||
|
"VUE_APP_BASE_API": "/api",
|
||||||
|
"VUE_CLI_BABEL_TRANSPILE_MODULES": "true",
|
||||||
|
"VUE_CLI_ENTRY_FILES": "[\"E:\\\\workSpace\\\\vue\\\\project-rjwm-admin-vue-ts\\\\src\\\\main.ts\"]",
|
||||||
|
"WEBPACK_DEV_SERVER": "true",
|
||||||
|
"windir": "C:\\Windows",
|
||||||
|
"windows_tracing_flags": "3",
|
||||||
|
"windows_tracing_logfile": "C:\\BVTBin\\Tests\\installpackage\\csilogfile.log",
|
||||||
|
"WXDRIVE_START_ARGS": "--wxdrive-setting=0 --disable-gpu --disable-software-rasterizer --enable-features=NetworkServiceInProcess",
|
||||||
|
"YARN_WRAP_OUTPUT": "false"
|
||||||
|
},
|
||||||
|
"sharedObjects": [
|
||||||
|
"D:\\tools\\languageEnv\\node\\node.exe",
|
||||||
|
"C:\\Windows\\SYSTEM32\\ntdll.dll",
|
||||||
|
"C:\\Windows\\system32\\kernel32.dll",
|
||||||
|
"C:\\Windows\\system32\\KERNELBASE.dll",
|
||||||
|
"C:\\Windows\\system32\\ADVAPI32.DLL",
|
||||||
|
"C:\\Windows\\system32\\msvcrt.dll",
|
||||||
|
"C:\\Windows\\SYSTEM32\\sechost.dll",
|
||||||
|
"C:\\Windows\\system32\\RPCRT4.dll",
|
||||||
|
"C:\\Windows\\system32\\dbghelp.dll",
|
||||||
|
"C:\\Windows\\system32\\WS2_32.dll",
|
||||||
|
"C:\\Windows\\system32\\NSI.dll",
|
||||||
|
"C:\\Windows\\system32\\IPHLPAPI.DLL",
|
||||||
|
"C:\\Windows\\system32\\WINNSI.DLL",
|
||||||
|
"C:\\Windows\\system32\\PSAPI.DLL",
|
||||||
|
"C:\\Windows\\system32\\USERENV.dll",
|
||||||
|
"C:\\Windows\\system32\\profapi.dll",
|
||||||
|
"C:\\Windows\\system32\\USER32.dll",
|
||||||
|
"C:\\Windows\\system32\\GDI32.dll",
|
||||||
|
"C:\\Windows\\system32\\LPK.dll",
|
||||||
|
"C:\\Windows\\system32\\USP10.dll",
|
||||||
|
"C:\\Windows\\system32\\CRYPT32.dll",
|
||||||
|
"C:\\Windows\\system32\\MSASN1.dll",
|
||||||
|
"C:\\Windows\\system32\\bcrypt.dll",
|
||||||
|
"C:\\Windows\\system32\\WINMM.dll",
|
||||||
|
"C:\\Windows\\system32\\IMM32.DLL",
|
||||||
|
"C:\\Windows\\system32\\MSCTF.dll",
|
||||||
|
"C:\\Windows\\system32\\api-ms-win-core-synch-l1-2-0.DLL",
|
||||||
|
"C:\\Windows\\system32\\powrprof.dll",
|
||||||
|
"C:\\Windows\\system32\\SETUPAPI.dll",
|
||||||
|
"C:\\Windows\\system32\\CFGMGR32.dll",
|
||||||
|
"C:\\Windows\\system32\\OLEAUT32.dll",
|
||||||
|
"C:\\Windows\\system32\\ole32.dll",
|
||||||
|
"C:\\Windows\\system32\\DEVOBJ.dll",
|
||||||
|
"C:\\Windows\\system32\\uxtheme.dll",
|
||||||
|
"C:\\Windows\\system32\\mswsock.dll",
|
||||||
|
"C:\\Windows\\System32\\wshtcpip.dll",
|
||||||
|
"C:\\Windows\\System32\\wship6.dll",
|
||||||
|
"C:\\Windows\\system32\\bcryptprimitives.dll",
|
||||||
|
"C:\\Windows\\system32\\NLAapi.dll",
|
||||||
|
"C:\\Windows\\system32\\napinsp.dll",
|
||||||
|
"C:\\Windows\\system32\\pnrpnsp.dll",
|
||||||
|
"C:\\Windows\\system32\\DNSAPI.dll",
|
||||||
|
"C:\\Windows\\System32\\winrnr.dll",
|
||||||
|
"C:\\Windows\\system32\\wshbth.dll",
|
||||||
|
"C:\\Windows\\system32\\dhcpcsvc6.DLL",
|
||||||
|
"C:\\Windows\\system32\\dhcpcsvc.DLL",
|
||||||
|
"\\\\?\\E:\\workSpace\\vue\\project-rjwm-admin-vue-ts\\node_modules\\fibers\\bin\\win32-x64-72\\fibers.node",
|
||||||
|
"C:\\Windows\\system32\\cryptbase.dll",
|
||||||
|
"C:\\Windows\\system32\\apphelp.dll"
|
||||||
|
]
|
||||||
|
}
|
||||||
14
src/App.vue
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<router-view />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Vue } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'App',
|
||||||
|
})
|
||||||
|
export default class extends Vue {}
|
||||||
|
</script>
|
||||||
51
src/api/category.ts
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 分类管理
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
// 查询分类列表接口
|
||||||
|
export const getCategoryPage = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/category/page',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 删除当前列的接口
|
||||||
|
export const deleCategory = (ids: string) => {
|
||||||
|
return request({
|
||||||
|
url: '/category',
|
||||||
|
method: 'delete',
|
||||||
|
params: { id:ids }
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 修改接口
|
||||||
|
export const editCategory = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/category',
|
||||||
|
method: 'put',
|
||||||
|
data: { ...params }
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 新增接口
|
||||||
|
export const addCategory = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/category',
|
||||||
|
method: 'post',
|
||||||
|
data: { ...params }
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 修改---启用禁用接口
|
||||||
|
export const enableOrDisableEmployee = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/category/status/${params.status}`,
|
||||||
|
method: 'post',
|
||||||
|
params: { id:params.id }
|
||||||
|
})
|
||||||
|
}
|
||||||
89
src/api/charts.ts
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 报表数据
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
// 获取当日销售数据 -> 顶部数据
|
||||||
|
export const getDataes = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/amountCollect/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取当日销售数据 -> 顶部数据 - 营收概况
|
||||||
|
export const getChartsDataes = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/dayCollect/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取当日销售趋势数据(24小时)-> 销售趋势
|
||||||
|
export const getDayDataes= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/hourCollect/${params.type}/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 支付类型数据汇总 -> 店内收款构成 - 当日
|
||||||
|
export const getDayPayType = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/payTypeCollect/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
// 获取当日各种优惠类型数据汇总 -> 优惠指标
|
||||||
|
export const getprivilege = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/privilegeCollect/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取菜品分类销售排行 - 菜品分类占比 -当日
|
||||||
|
export const getSalesRanking = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/categoryCollect/${params.type}/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取当日菜品销售排行
|
||||||
|
export const getDayRanking = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/currentDishRank/${params.date}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取一定日期之内的销售趋势 - 销售趋势 图
|
||||||
|
export const getTimeQuantumDataes = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/dayAmountCollect/${params.type}/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取时间范围之内的各种支付类型数据汇总 - 店内收款构成 - 时间段
|
||||||
|
export const getTimeQuantumReceivables = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/datePayTypeCollect/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取时间范围之内的菜品类别销售汇总 - 菜品分类占比 - 时间段
|
||||||
|
export const getTimeQuantumType = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/dateCategoryCollect/${params.type}/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取时间范围之内的菜品销售排行 - 菜品销售排行
|
||||||
|
export const getTimeQuantumDishes = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/dishRankForDate/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 获取时间范围之内的优惠指标汇总数据 - 顶部信息
|
||||||
|
export const getTimeQuantumDiscount = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/privilegeByDate/${params.start}/${params.end}`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
97
src/api/dish.ts
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 菜品管理
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
// 查询列表接口
|
||||||
|
export const getDishPage = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/dish/page',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除接口
|
||||||
|
export const deleteDish = (ids: string) => {
|
||||||
|
return request({
|
||||||
|
url: '/dish',
|
||||||
|
method: 'delete',
|
||||||
|
params: { ids }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改接口
|
||||||
|
export const editDish = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/dish',
|
||||||
|
method: 'put',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增接口
|
||||||
|
export const addDish = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/dish',
|
||||||
|
method: 'post',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询详情
|
||||||
|
export const queryDishById = (id: string | (string | null)[]) => {
|
||||||
|
return request({
|
||||||
|
url: `/dish/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取菜品分类列表
|
||||||
|
export const getCategoryList = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/category/list',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查菜品列表的接口
|
||||||
|
export const queryDishList = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/dish/list',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 文件down预览
|
||||||
|
export const commonDownload = (params: any) => {
|
||||||
|
return request({
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||||||
|
},
|
||||||
|
url: '/common/download',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 起售停售---批量起售停售接口
|
||||||
|
export const dishStatusByStatus = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/dish/status/${params.status}`,
|
||||||
|
method: 'post',
|
||||||
|
params: { id: params.id }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//菜品分类数据查询
|
||||||
|
export const dishCategoryList = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/category/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
63
src/api/employee.ts
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 员工管理
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
// 登录、
|
||||||
|
export const login = (data: any) =>
|
||||||
|
request({
|
||||||
|
'url': '/employee/login',
|
||||||
|
'method': 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
// 退出
|
||||||
|
export const userLogout = (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/employee/logout`, // 授课老师接口
|
||||||
|
'method': 'post',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
|
||||||
|
export const getEmployeeList = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/employee/page',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改---启用禁用接口
|
||||||
|
export const enableOrDisableEmployee = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/employee/status/${params.status}`,
|
||||||
|
method: 'post',
|
||||||
|
params: { id:params.id }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增---添加员工
|
||||||
|
export const addEmployee = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/employee',
|
||||||
|
method: 'post',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改---添加员工
|
||||||
|
export const editEmployee = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/employee',
|
||||||
|
method: 'put',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改页面反查详情接口
|
||||||
|
export const queryEmployeeById = (id: string | (string | null)[]) => {
|
||||||
|
return request({
|
||||||
|
url: `/employee/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
97
src/api/index.ts
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
// 营业额数据
|
||||||
|
// export const getTurnoverDataes = (data) =>
|
||||||
|
// request({
|
||||||
|
// 'url': `/report/turnoverStatistics`,
|
||||||
|
// 'method': 'get',
|
||||||
|
// data
|
||||||
|
// })
|
||||||
|
// 首页数据
|
||||||
|
// // 今日数据
|
||||||
|
// export const getTodayDataes = () =>
|
||||||
|
// request({
|
||||||
|
// 'url': `/workspace/todaydate`,
|
||||||
|
// 'method': 'get'
|
||||||
|
// })
|
||||||
|
// 订单管理
|
||||||
|
export const getOrderData = () =>
|
||||||
|
request({
|
||||||
|
'url': `/workspace/overviewOrders`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
// 菜品总览
|
||||||
|
export const getOverviewDishes = () =>
|
||||||
|
request({
|
||||||
|
'url': `/workspace/overviewDishes`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
// 套餐总览
|
||||||
|
export const getSetMealStatistics = () =>
|
||||||
|
request({
|
||||||
|
'url': `/workspace/overviewSetmeals`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
// 营业数据
|
||||||
|
export const getBusinessData= () =>
|
||||||
|
request({
|
||||||
|
'url': `/workspace/businessData`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 报表数据
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
// 统计
|
||||||
|
// 获取当日销售数据 -> 顶部数据
|
||||||
|
// export const getDataes = (params: any) =>
|
||||||
|
// request({
|
||||||
|
// 'url': `/report/amountCollect/${params.date}`,
|
||||||
|
// 'method': 'get'
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
// 营业额统计
|
||||||
|
export const getTurnoverStatistics= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/turnoverStatistics`,
|
||||||
|
'method': 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
|
||||||
|
// 用户统计
|
||||||
|
export const getUserStatistics= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/userStatistics`,
|
||||||
|
'method': 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
// 订单统计
|
||||||
|
export const getOrderStatistics= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/ordersStatistics`,
|
||||||
|
'method': 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
// 销量排名TOP10
|
||||||
|
export const getTop= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/top10`,
|
||||||
|
'method': 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
// 数据概览
|
||||||
|
export const getDataOverView= (params: any) =>
|
||||||
|
request({
|
||||||
|
'url': `/report/dataOverView`,
|
||||||
|
'method': 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
// 导出
|
||||||
|
export function exportInfor() {
|
||||||
|
return request({
|
||||||
|
url: '/report/export',
|
||||||
|
method: 'get',
|
||||||
|
responseType: "blob"
|
||||||
|
})
|
||||||
|
}
|
||||||
31
src/api/inform.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
// 获取列表数据
|
||||||
|
export const getInformData = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/messages/page',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
},)
|
||||||
|
}
|
||||||
|
// 获取未读
|
||||||
|
export const getCountUnread = () => {
|
||||||
|
return request({
|
||||||
|
url: '/messages/countUnread',
|
||||||
|
method: 'get'
|
||||||
|
},)
|
||||||
|
}
|
||||||
|
// 全部已读
|
||||||
|
export const batchMsg = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/messages/batch',
|
||||||
|
method: 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 标记已读
|
||||||
|
export const setStatus = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/messages/${params}`,
|
||||||
|
method: 'PUT'
|
||||||
|
})
|
||||||
|
}
|
||||||
68
src/api/order.ts
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询列表页接口
|
||||||
|
export const getOrderDetailPage = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/order/conditionSearch',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查看接口
|
||||||
|
export const queryOrderDetailById = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/order/details/${params.orderId}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 派送接口
|
||||||
|
export const deliveryOrder = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/order/delivery/${params.id}`,
|
||||||
|
method: 'put' /* */
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//完成接口
|
||||||
|
export const completeOrder = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/order/complete/${params.id}`,
|
||||||
|
method: 'put' /* */
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//订单取消
|
||||||
|
export const orderCancel = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/order/cancel',
|
||||||
|
method: 'put' /* */,
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//接单
|
||||||
|
export const orderAccept = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/order/confirm',
|
||||||
|
method: 'put' /* */,
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//拒单
|
||||||
|
export const orderReject = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/order/rejection',
|
||||||
|
method: 'put' /* */,
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取待处理,待派送,派送中数量
|
||||||
|
export const getOrderListBy = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/order/statistics',
|
||||||
|
method: 'get' /* */
|
||||||
|
})
|
||||||
|
}
|
||||||
68
src/api/setMeal.ts
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 套餐管理
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
|
||||||
|
// 查询列表数据
|
||||||
|
export const getSetmealPage = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/setmeal/page',
|
||||||
|
method: 'get',
|
||||||
|
params,
|
||||||
|
},)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除数据接口
|
||||||
|
export const deleteSetmeal = (ids: string) => {
|
||||||
|
return request({
|
||||||
|
url: '/setmeal',
|
||||||
|
method: 'delete',
|
||||||
|
params: { ids }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改数据接口
|
||||||
|
export const editSetmeal = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/setmeal',
|
||||||
|
method: 'put',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增数据接口
|
||||||
|
export const addSetmeal = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/setmeal',
|
||||||
|
method: 'post',
|
||||||
|
data: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询详情接口
|
||||||
|
export const querySetmealById = (id: string | (string | null)[]) => {
|
||||||
|
return request({
|
||||||
|
url: `/setmeal/${id}`,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量起售禁售
|
||||||
|
export const setmealStatusByStatus = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/setmeal/status/${params.status}`,
|
||||||
|
method: 'post',
|
||||||
|
params: { id: params.ids }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//菜品分类数据查询
|
||||||
|
export const dishCategoryList = (params: any) => {
|
||||||
|
return request({
|
||||||
|
url: `/category/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: { ...params }
|
||||||
|
})
|
||||||
|
}
|
||||||
21
src/api/users.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
// 修改密码
|
||||||
|
export const editPassword = (data: any) =>
|
||||||
|
request({
|
||||||
|
'url': '/employee/editPassword',
|
||||||
|
'method': 'put',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
// 获取营业状态
|
||||||
|
export const getStatus = () =>
|
||||||
|
request({
|
||||||
|
'url': `/shop/status`,
|
||||||
|
'method': 'get'
|
||||||
|
})
|
||||||
|
// 设置营业状态
|
||||||
|
export const setStatus = (data:any) =>
|
||||||
|
request({
|
||||||
|
'url': `/shop/`+data,
|
||||||
|
'method': 'put',
|
||||||
|
'data':data
|
||||||
|
})
|
||||||
BIN
src/assets/404-images/404-cloud.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
src/assets/404-images/404.png
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
src/assets/icons/addicon.png
Normal file
|
After Width: | Height: | Size: 931 B |
BIN
src/assets/icons/btn_add@2x.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/icons/btn_back@2x.png
Normal file
|
After Width: | Height: | Size: 425 B |
BIN
src/assets/icons/btn_clean@2x.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/icons/btn_close@2x.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/icons/btn_close@2x1.png
Normal file
|
After Width: | Height: | Size: 917 B |
BIN
src/assets/icons/btn_gaimi@2x.png
Normal file
|
After Width: | Height: | Size: 885 B |
BIN
src/assets/icons/fall.png
Normal file
|
After Width: | Height: | Size: 976 B |
BIN
src/assets/icons/gzt_daijiedan.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
src/assets/icons/gzt_daipaisong.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
src/assets/icons/gzt_quanbu.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
src/assets/icons/gzt_quxiao.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/icons/gzt_wancheng.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/icons/gzt_yiqishou@2x.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
src/assets/icons/gzt_yitingshou@2x.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
src/assets/icons/icon_index.png
Normal file
|
After Width: | Height: | Size: 837 B |
BIN
src/assets/icons/icon_more@2x.png
Normal file
|
After Width: | Height: | Size: 416 B |
BIN
src/assets/icons/icon_upload@2x.png
Normal file
|
After Width: | Height: | Size: 938 B |
BIN
src/assets/icons/jine_m-2@2x.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
src/assets/icons/msg.png
Normal file
|
After Width: | Height: | Size: 806 B |
BIN
src/assets/icons/renshu@2x.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
src/assets/icons/time.png
Normal file
|
After Width: | Height: | Size: 940 B |
BIN
src/assets/icons/up.png
Normal file
|
After Width: | Height: | Size: 498 B |
BIN
src/assets/icons/xiangmujine@2x.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
src/assets/img_denglu_bj.jpg
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
BIN
src/assets/login/1.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
src/assets/login/chef-logo.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
src/assets/login/icon_logo.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/login/login-l.png
Normal file
|
After Width: | Height: | Size: 880 KiB |
BIN
src/assets/login/mini-logo.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
src/assets/login/white_logo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/logo.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
src/assets/noImg.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
src/assets/preview.mp3
Normal file
BIN
src/assets/reminder.mp3
Normal file
BIN
src/assets/search_table_empty.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
src/assets/table_empty.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
104
src/components/Breadcrumb/index.vue
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<template>
|
||||||
|
<el-breadcrumb
|
||||||
|
class="app-breadcrumb"
|
||||||
|
separator="/"
|
||||||
|
>
|
||||||
|
<transition-group name="breadcrumb">
|
||||||
|
<el-breadcrumb-item
|
||||||
|
v-for="(item, index) in breadcrumbs"
|
||||||
|
:key="item.path"
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
v-if="item.redirect === 'noredirect' || index === breadcrumbs.length-1"
|
||||||
|
class="no-redirect"
|
||||||
|
>{{ item.meta.title }}</span>
|
||||||
|
<a
|
||||||
|
v-else
|
||||||
|
@click.prevent="handleLink(item)"
|
||||||
|
>{{ item.meta.title }}</a>
|
||||||
|
</el-breadcrumb-item>
|
||||||
|
</transition-group>
|
||||||
|
</el-breadcrumb>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import pathToRegexp from 'path-to-regexp'
|
||||||
|
import { Component, Vue, Watch } from 'vue-property-decorator'
|
||||||
|
import { RouteRecord, Route } from 'vue-router'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'Breadcrumb'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class extends Vue {
|
||||||
|
private breadcrumbs: RouteRecord[] = []
|
||||||
|
@Watch('$route')
|
||||||
|
private onRouteChange(route: Route) {
|
||||||
|
// if you go to the redirect page, do not update the breadcrumbs
|
||||||
|
if (route.path.startsWith('/redirect/')) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getBreadcrumb()
|
||||||
|
}
|
||||||
|
|
||||||
|
created () {
|
||||||
|
this.getBreadcrumb()
|
||||||
|
}
|
||||||
|
|
||||||
|
private getBreadcrumb () {
|
||||||
|
let matched = this.$route.matched.filter(
|
||||||
|
item => item.meta && item.meta.title
|
||||||
|
)
|
||||||
|
const first = matched[0]
|
||||||
|
// if (!this.isDashboard(first)) {
|
||||||
|
// matched = [
|
||||||
|
// { path: '/', meta: { title: '集团管理' } } as RouteRecord
|
||||||
|
// ].concat(matched)
|
||||||
|
// }
|
||||||
|
this.breadcrumbs = matched.filter(item => {
|
||||||
|
return item.meta && item.meta.title && item.meta.breadcrumb !== false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
private isDashboard (route: RouteRecord) {
|
||||||
|
const name = route && route.meta && route.meta.title
|
||||||
|
return name === '集团管理'
|
||||||
|
}
|
||||||
|
|
||||||
|
private pathCompile (path: string) {
|
||||||
|
// To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
|
||||||
|
const { params } = this.$route
|
||||||
|
const toPath = pathToRegexp.compile(path)
|
||||||
|
return toPath(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
private handleLink (item: any) {
|
||||||
|
const { redirect, path } = item
|
||||||
|
if (redirect) {
|
||||||
|
this.$router.push(redirect)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.$router.push(this.pathCompile(path))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-breadcrumb__inner,
|
||||||
|
.el-breadcrumb__inner a {
|
||||||
|
font-weight: 400 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-breadcrumb.el-breadcrumb {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 50px;
|
||||||
|
margin-left: 8px;
|
||||||
|
|
||||||
|
.no-redirect {
|
||||||
|
color: #97a8be;
|
||||||
|
cursor: text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
94
src/components/Charts/BarChart.vue
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
:id="id"
|
||||||
|
:class="className"
|
||||||
|
:style="{height: height, width: width}"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import echarts, { EChartOption } from 'echarts';
|
||||||
|
import {Component, Prop, Watch} from 'vue-property-decorator';
|
||||||
|
import { mixins } from 'vue-class-component';
|
||||||
|
import ResizeMixin from './mixins/resize';
|
||||||
|
@Component({
|
||||||
|
'name': 'BarChart'
|
||||||
|
})
|
||||||
|
export default class extends mixins(ResizeMixin) {
|
||||||
|
@Prop({ 'default': 'chart' }) private className!: string
|
||||||
|
@Prop({ 'default': 'BarChart' }) private id!: string
|
||||||
|
@Prop({ 'default': '100%' }) private width!: string
|
||||||
|
@Prop({ 'default': '250px' }) private height!: string
|
||||||
|
@Prop({ 'default': 'Requests' }) private title!: string
|
||||||
|
@Prop({ 'default': {} }) private chartData!: any
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
@Watch('chartData')
|
||||||
|
private changeData(newVal:string ,oldVal:string){
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
private init(){
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!this.chart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.chart.dispose();
|
||||||
|
this.chart = null;
|
||||||
|
}
|
||||||
|
private initChart() {
|
||||||
|
this.chart = echarts.init(document.getElementById(this.id) as HTMLDivElement);
|
||||||
|
|
||||||
|
const data = this.chartData;
|
||||||
|
|
||||||
|
this.chart.setOption({'title': {
|
||||||
|
'text': this.title,
|
||||||
|
'left': 'left'
|
||||||
|
},
|
||||||
|
'tooltip': {
|
||||||
|
'trigger': 'item',
|
||||||
|
'formatter': '{a} <br/>{b} : {c} ({d}%)'
|
||||||
|
},
|
||||||
|
'legend': {
|
||||||
|
'type': 'scroll',
|
||||||
|
'orient': 'vertical',
|
||||||
|
'left': 0,
|
||||||
|
'top': 50,
|
||||||
|
'bottom': 20,
|
||||||
|
'data': data.legendData,
|
||||||
|
'selected': data.selected
|
||||||
|
},
|
||||||
|
'series': [
|
||||||
|
{
|
||||||
|
'name': '占比',
|
||||||
|
'type': 'pie',
|
||||||
|
'radius': '65%',
|
||||||
|
'left':80,
|
||||||
|
'center': ['40%', '50%'],
|
||||||
|
'data': data.seriesData,
|
||||||
|
'emphasis': {
|
||||||
|
'itemStyle': {
|
||||||
|
'shadowBlur': 10,
|
||||||
|
'shadowOffsetX': 0,
|
||||||
|
'shadowColor': 'rgba(0, 0, 0, 0.5)'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'itemStyle': {
|
||||||
|
'normal': {
|
||||||
|
'color': function (params:any) {
|
||||||
|
var colorList = ['#389BFF', '#F26461', '#52C41A', '#08979C', '#597EF7', '#B37FEB','#FF7875', '#5CDBD3', '#FFC53D'];
|
||||||
|
return colorList[params.dataIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]} as any);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
154
src/components/Charts/Basic.vue
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
:id="id"
|
||||||
|
:class="className"
|
||||||
|
:style="{height: height, width: width}"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import echarts, { EChartOption } from 'echarts';
|
||||||
|
import { Component, Prop, Watch } from 'vue-property-decorator';
|
||||||
|
import { mixins } from 'vue-class-component';
|
||||||
|
import ResizeMixin from './mixins/resize';
|
||||||
|
import { WatchOptions } from 'vue';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'MixedChart'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class extends mixins(ResizeMixin) {
|
||||||
|
@Prop({ 'default': 'chart' }) private className!: string
|
||||||
|
@Prop({ 'default': 'mixedChart' }) private id!: string
|
||||||
|
@Prop({ 'default': '100%' }) private width!: string
|
||||||
|
@Prop({ 'default': '250px' }) private height!: string
|
||||||
|
@Prop({ 'default': 'Requests' }) private title!: string
|
||||||
|
@Prop({ 'default': {} }) private chartData!: any
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Watch('chartData')
|
||||||
|
private changeData(newVal:string ,oldVal:string){
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
init(){
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!this.chart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.chart.dispose();
|
||||||
|
this.chart = null;
|
||||||
|
}
|
||||||
|
private initChart() {
|
||||||
|
this.chart = echarts.init(document.getElementById(this.id) as HTMLDivElement);
|
||||||
|
this.chart.setOption({
|
||||||
|
'backgroundColor': '#fff',
|
||||||
|
'title': {
|
||||||
|
'text': this.title,
|
||||||
|
'top': '0',
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#000',
|
||||||
|
'fontSize': 18
|
||||||
|
},
|
||||||
|
'subtextStyle': {
|
||||||
|
'color': '#90979c',
|
||||||
|
'fontSize': 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'tooltip': {
|
||||||
|
'trigger': 'axis'
|
||||||
|
},
|
||||||
|
'grid': {
|
||||||
|
'left': '50',
|
||||||
|
'right': '5%',
|
||||||
|
'borderWidth': 0,
|
||||||
|
'top': 60,
|
||||||
|
'bottom': 34,
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'xAxis': [{
|
||||||
|
'type': 'category',
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#90979c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'splitLine': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisTick': {
|
||||||
|
'show': true
|
||||||
|
},
|
||||||
|
'splitArea': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'interval': 0,
|
||||||
|
'rotate':this.chartData.xData.length > 10 ? -25 : 0
|
||||||
|
},
|
||||||
|
'data': this.chartData.xData
|
||||||
|
}],
|
||||||
|
'yAxis': [{
|
||||||
|
'type': 'value',
|
||||||
|
'splitLine': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#90979c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'axisTick': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'interval': 0
|
||||||
|
},
|
||||||
|
'splitArea': {
|
||||||
|
'show': false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
'series': [{
|
||||||
|
'name': '店内',
|
||||||
|
'type': 'bar',
|
||||||
|
'stack': 'total',
|
||||||
|
'barMaxWidth': 15,
|
||||||
|
'barGap': '10%',
|
||||||
|
'itemStyle': {
|
||||||
|
'normal': {
|
||||||
|
'barBorderRadius':[10, 10, 0, 0],
|
||||||
|
'color': new echarts.graphic.LinearGradient(
|
||||||
|
0, 0, 0, 1,
|
||||||
|
[
|
||||||
|
{'offset': 0, 'color': '#FFA868'},
|
||||||
|
{'offset': 1, 'color': '#FF9240'}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
},
|
||||||
|
'label': {
|
||||||
|
'show': true,
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#fff'
|
||||||
|
},
|
||||||
|
'position': 'insideTop',
|
||||||
|
formatter(p: any) {
|
||||||
|
return p.value > 0 ? p.value : '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'data': this.chartData.yData
|
||||||
|
}]
|
||||||
|
} as EChartOption<EChartOption.SeriesLine | EChartOption.SeriesBar>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
139
src/components/Charts/Line.vue
Normal file
@@ -0,0 +1,139 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
:id="id"
|
||||||
|
:class="className"
|
||||||
|
:style="{height: height, width: width}"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Prop, Vue } from 'vue-property-decorator';
|
||||||
|
import echarts from 'echarts';
|
||||||
|
|
||||||
|
import { mixins } from 'vue-class-component';
|
||||||
|
import ResizeMixin from './mixins/resize';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'LineChart'
|
||||||
|
})
|
||||||
|
export default class extends mixins(ResizeMixin) {
|
||||||
|
@Prop({ 'default': 'chart' }) private className!: string
|
||||||
|
@Prop({ 'default': 'chart' }) private id!: string
|
||||||
|
@Prop({ 'default': '100%' }) private width!: string
|
||||||
|
@Prop({ 'default': '300px' }) private height!: string
|
||||||
|
@Prop({ 'default': 'Requests' }) private title!: string
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private initChart() {
|
||||||
|
this.chart = echarts.init(document.getElementById(this.id) as HTMLDivElement);
|
||||||
|
this.chart.setOption({
|
||||||
|
'backgroundColor': '#fff',
|
||||||
|
'title': {
|
||||||
|
'top': 20,
|
||||||
|
'text': this.title,
|
||||||
|
'textStyle': {
|
||||||
|
'fontWeight': 'normal',
|
||||||
|
'fontSize': 16,
|
||||||
|
'color': '#000'
|
||||||
|
},
|
||||||
|
'left': '1%'
|
||||||
|
},
|
||||||
|
'tooltip': {
|
||||||
|
'trigger': 'axis'
|
||||||
|
},
|
||||||
|
'legend': {
|
||||||
|
'top': 20,
|
||||||
|
'icon': 'rect',
|
||||||
|
'itemWidth': 14,
|
||||||
|
'itemHeight': 5,
|
||||||
|
'itemGap': 13,
|
||||||
|
'data': ['CMCC', 'CTCC'],
|
||||||
|
'right': '4%',
|
||||||
|
'textStyle': {
|
||||||
|
'fontSize': 12,
|
||||||
|
'color': '#000'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'grid': {
|
||||||
|
'top': 100,
|
||||||
|
'left': '2%',
|
||||||
|
'right': '2%',
|
||||||
|
'bottom': '2%',
|
||||||
|
'containLabel': true
|
||||||
|
},
|
||||||
|
'xAxis': [{
|
||||||
|
'type': 'category',
|
||||||
|
'boundaryGap': false,
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#57617B'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'interval': 0,
|
||||||
|
'rotate':-20
|
||||||
|
},
|
||||||
|
'data': ['13:00', '13:05', '13:10', '13:15', '13:20', '13:25', '13:30', '13:35', '13:40', '13:45', '13:50', '13:55']
|
||||||
|
}],
|
||||||
|
'yAxis': [{
|
||||||
|
'type': 'value',
|
||||||
|
'name': '(%)',
|
||||||
|
'axisTick': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#57617B'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'margin': 10,
|
||||||
|
'fontSize': 14
|
||||||
|
},
|
||||||
|
'splitLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#EEF3F8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
'series': [{
|
||||||
|
'name': 'CMCC',
|
||||||
|
'type': 'line',
|
||||||
|
'smooth': true,
|
||||||
|
'symbol': 'circle',
|
||||||
|
'symbolSize': 5,
|
||||||
|
'showSymbol': false,
|
||||||
|
'lineStyle': {
|
||||||
|
'width': 2
|
||||||
|
},
|
||||||
|
'areaStyle': {
|
||||||
|
'color': new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
'offset': 0,
|
||||||
|
'color': 'rgba(255, 140, 54, 0.3)'
|
||||||
|
}, {
|
||||||
|
'offset': 0.8,
|
||||||
|
'color': 'rgba(255, 140, 54, 0)'
|
||||||
|
}], false),
|
||||||
|
'shadowColor': 'rgba(0, 0, 0, 0.1)',
|
||||||
|
'shadowBlur': 10
|
||||||
|
},
|
||||||
|
'itemStyle': {
|
||||||
|
'color': '#FF783D',
|
||||||
|
'borderColor': '#FF783D',
|
||||||
|
'borderWidth': 12
|
||||||
|
},
|
||||||
|
'data': [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122]
|
||||||
|
}]
|
||||||
|
} as any);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
152
src/components/Charts/MixedChart.vue
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<template>
|
||||||
|
<div
|
||||||
|
:id="id"
|
||||||
|
:class="className"
|
||||||
|
:style="{height: height, width: width}"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import echarts, { EChartOption } from 'echarts';
|
||||||
|
import {Component, Prop, Watch} from 'vue-property-decorator';
|
||||||
|
import { mixins } from 'vue-class-component';
|
||||||
|
import ResizeMixin from './mixins/resize';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'MixedChart'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class extends mixins(ResizeMixin) {
|
||||||
|
@Prop({ 'default': 'chart' }) private className!: string
|
||||||
|
@Prop({ 'default': 'mixedChart' }) private id!: string
|
||||||
|
@Prop({ 'default': '100%' }) private width!: string
|
||||||
|
@Prop({ 'default': '250px' }) private height!: string
|
||||||
|
@Prop({ 'default': 'Requests' }) private title!: string
|
||||||
|
@Prop({ 'default': {} }) private chartData!: any
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
@Watch('chartData')
|
||||||
|
private changeData(newVal:string ,oldVal:string){
|
||||||
|
this.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
init(){
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.initChart();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
beforeDestroy() {
|
||||||
|
if (!this.chart) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.chart.dispose();
|
||||||
|
this.chart = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private initChart() {
|
||||||
|
this.chart = echarts.init(document.getElementById(this.id) as HTMLDivElement);
|
||||||
|
this.chart.setOption({
|
||||||
|
'backgroundColor': '#fff',
|
||||||
|
'title': {
|
||||||
|
'text': this.title,
|
||||||
|
'top': '0',
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#000',
|
||||||
|
'fontSize': 18
|
||||||
|
},
|
||||||
|
'subtextStyle': {
|
||||||
|
'color': '#90979c',
|
||||||
|
'fontSize': 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'tooltip': {
|
||||||
|
'trigger': 'axis'
|
||||||
|
},
|
||||||
|
'grid': {
|
||||||
|
'left': '50',
|
||||||
|
'right': '5%',
|
||||||
|
'borderWidth': 0,
|
||||||
|
'top': 60,
|
||||||
|
'bottom': 35,
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#fff'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'xAxis': [{
|
||||||
|
'type': 'category',
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#90979c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'splitLine': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisTick': {
|
||||||
|
'show': true
|
||||||
|
},
|
||||||
|
'splitArea': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'interval': 0,
|
||||||
|
'rotate':-20
|
||||||
|
},
|
||||||
|
'data': this.chartData.xData
|
||||||
|
}],
|
||||||
|
'yAxis': [{
|
||||||
|
'type': 'value',
|
||||||
|
'splitLine': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLine': {
|
||||||
|
'lineStyle': {
|
||||||
|
'color': '#90979c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'axisTick': {
|
||||||
|
'show': false
|
||||||
|
},
|
||||||
|
'axisLabel': {
|
||||||
|
'interval': 0
|
||||||
|
},
|
||||||
|
'splitArea': {
|
||||||
|
'show': false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
'series': [{
|
||||||
|
'name': '店内',
|
||||||
|
'type': 'bar',
|
||||||
|
'stack': 'total',
|
||||||
|
'barMaxWidth': 15,
|
||||||
|
'barGap': '10%',
|
||||||
|
'itemStyle': {
|
||||||
|
'normal': {
|
||||||
|
'barBorderRadius':[10, 10, 0, 0],
|
||||||
|
'color': new echarts.graphic.LinearGradient(
|
||||||
|
0, 0, 0, 1,
|
||||||
|
[
|
||||||
|
{'offset': 0, 'color': '#55A9FF'},
|
||||||
|
{'offset': 1, 'color': '#379AFF'}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
},
|
||||||
|
'label': {
|
||||||
|
'show': true,
|
||||||
|
'textStyle': {
|
||||||
|
'color': '#fff'
|
||||||
|
},
|
||||||
|
'position': 'insideTop',
|
||||||
|
formatter(p: any) {
|
||||||
|
return p.value > 0 ? p.value : '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'data': this.chartData.yData
|
||||||
|
}]
|
||||||
|
} as EChartOption<EChartOption.SeriesLine | EChartOption.SeriesBar>);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
67
src/components/Charts/mixins/resize.ts
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
import { ECharts } from 'echarts';
|
||||||
|
import { Component, Vue } from 'vue-property-decorator';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'ResizeMixin'
|
||||||
|
})
|
||||||
|
export default class extends Vue {
|
||||||
|
protected chart!: ECharts | null
|
||||||
|
private sidebarElm?: Element
|
||||||
|
|
||||||
|
mounted() {
|
||||||
|
this.initResizeEvent();
|
||||||
|
this.initSidebarResizeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
beforeDestroy() {
|
||||||
|
this.destroyResizeEvent();
|
||||||
|
this.destroySidebarResizeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
activated() {
|
||||||
|
this.initResizeEvent();
|
||||||
|
this.initSidebarResizeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
deactivated() {
|
||||||
|
this.destroyResizeEvent();
|
||||||
|
this.destroySidebarResizeEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private chartResizeHandler() {
|
||||||
|
if (this.chart) {
|
||||||
|
this.chart.resize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private sidebarResizeHandler(e: TransitionEvent) {
|
||||||
|
if (e.propertyName === 'width') {
|
||||||
|
this.chartResizeHandler();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private initResizeEvent() {
|
||||||
|
if (this.chartResizeHandler) {
|
||||||
|
window.addEventListener('resize', this.chartResizeHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private destroyResizeEvent() {
|
||||||
|
if (this.chartResizeHandler) {
|
||||||
|
window.removeEventListener('resize', this.chartResizeHandler);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private initSidebarResizeEvent() {
|
||||||
|
this.sidebarElm = document.getElementsByClassName('sidebar-container')[0];
|
||||||
|
if (this.sidebarElm) {
|
||||||
|
this.sidebarElm.addEventListener('transitionend', this.sidebarResizeHandler as EventListener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private destroySidebarResizeEvent() {
|
||||||
|
if (this.sidebarElm) {
|
||||||
|
this.sidebarElm.removeEventListener('transitionend', this.sidebarResizeHandler as EventListener);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
40
src/components/Empty/index.vue
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<!-- -->
|
||||||
|
<template>
|
||||||
|
<div class="empty-box">
|
||||||
|
<div class="img-box">
|
||||||
|
<img v-if="!isSearch"
|
||||||
|
src="../../assets/table_empty.png"
|
||||||
|
alt="">
|
||||||
|
<img v-else
|
||||||
|
src="../../assets/search_table_empty.png">
|
||||||
|
<p>{{ !isSearch ? '这里空空如也~' : 'Sorry,木有找到您搜索的内容哦~' }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang='ts'>
|
||||||
|
import { Vue, Component, Prop } from 'vue-property-decorator'
|
||||||
|
@Component({
|
||||||
|
name: 'Empty'
|
||||||
|
})
|
||||||
|
export default class extends Vue {
|
||||||
|
@Prop({ default: false }) isSearch: boolean //用来区分是搜索还是默认无数据
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.empty-box {
|
||||||
|
text-align: center;
|
||||||
|
margin: 120px 0;
|
||||||
|
img {
|
||||||
|
margin: 0 atuo;
|
||||||
|
width: 238px;
|
||||||
|
height: 184px;
|
||||||
|
margin-top: 156px;
|
||||||
|
margin-bottom: 26px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
color: #818693;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* @import url(); 引入css类 */
|
||||||
|
</style>
|
||||||
31
src/components/Hamburger/index.vue
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<template>
|
||||||
|
<div :class="[{'is-active': isActive}]" @click="toggleClick">
|
||||||
|
<svg-icon name="hamburger" width="20" height="20" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Prop, Vue } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'Hamburger'
|
||||||
|
})
|
||||||
|
|
||||||
|
export default class extends Vue {
|
||||||
|
@Prop({ 'default': false }) private isActive!: boolean
|
||||||
|
|
||||||
|
private toggleClick() {
|
||||||
|
this.$emit('toggleClick');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.svg-icon {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-active {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
83
src/components/HeadLable/index.vue
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<template>
|
||||||
|
<div class="HeadLable">
|
||||||
|
<span
|
||||||
|
v-if="goback"
|
||||||
|
class="goBack"
|
||||||
|
@click="goBack()"
|
||||||
|
><img
|
||||||
|
src="@/assets/icons/btn_back@2x.png"
|
||||||
|
alt=""
|
||||||
|
> 返回</span>
|
||||||
|
<span v-if="!butList">{{ title }}</span>
|
||||||
|
<div v-if="butList">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Prop, Vue } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
'name': 'Hamburger'
|
||||||
|
})
|
||||||
|
export default class extends Vue {
|
||||||
|
@Prop({ 'default': false }) private goback!: boolean
|
||||||
|
@Prop({ 'default': false }) private butList!: boolean
|
||||||
|
@Prop({ 'default': '集团管理' }) private title!: string
|
||||||
|
|
||||||
|
private toggleClick() {
|
||||||
|
this.$emit('toggleClick')
|
||||||
|
}
|
||||||
|
|
||||||
|
private goBack() {
|
||||||
|
this.$router.go(-1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.HeadLable{
|
||||||
|
// position: absolute;
|
||||||
|
background: #fff;
|
||||||
|
color: #333333;
|
||||||
|
height: 64px;
|
||||||
|
font-size: 16px;
|
||||||
|
// width: 300px;
|
||||||
|
padding-left: 22px;
|
||||||
|
line-height: 64px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
top:0px;
|
||||||
|
left: 0px;
|
||||||
|
opacity: 0;
|
||||||
|
animation: opacity 500ms ease-out 800ms forwards;
|
||||||
|
.goBack{
|
||||||
|
border-right: solid 1px #d8dde3;
|
||||||
|
padding-right: 14px;
|
||||||
|
margin-right: 14px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333333;
|
||||||
|
cursor: pointer;
|
||||||
|
font-weight: 400;
|
||||||
|
img{
|
||||||
|
position: relative;
|
||||||
|
top:24px;
|
||||||
|
margin-right: 5px;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes opacity {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
left: 80px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
199
src/components/ImgUpload/index.vue
Normal file
@@ -0,0 +1,199 @@
|
|||||||
|
<!-- -->
|
||||||
|
<template>
|
||||||
|
<div class="upload-item">
|
||||||
|
<el-upload ref="uploadfiles"
|
||||||
|
:accept="type"
|
||||||
|
:class="{ borderNone: imageUrl }"
|
||||||
|
class="avatar-uploader"
|
||||||
|
action="/api/common/upload"
|
||||||
|
:show-file-list="false"
|
||||||
|
:on-success="handleAvatarSuccess"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:on-error="handleError"
|
||||||
|
:before-upload="beforeAvatarUpload"
|
||||||
|
:headers="headers">
|
||||||
|
<img v-if="imageUrl"
|
||||||
|
:src="imageUrl"
|
||||||
|
class="avatar">
|
||||||
|
|
||||||
|
<i v-else
|
||||||
|
class="el-icon-plus avatar-uploader-icon" />
|
||||||
|
<span v-if="imageUrl"
|
||||||
|
class="el-upload-list__item-actions">
|
||||||
|
<span class="el-upload-span"
|
||||||
|
@click.stop="oploadImgDel">
|
||||||
|
删除图片
|
||||||
|
</span>
|
||||||
|
<span class="el-upload-span"> 重新上传 </span>
|
||||||
|
</span>
|
||||||
|
</el-upload>
|
||||||
|
<p class="upload-tips">
|
||||||
|
<slot />
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { Vue, Component, Prop, Watch } from 'vue-property-decorator'
|
||||||
|
import { baseUrl } from '@/config.json'
|
||||||
|
import { getToken } from '@/utils/cookies'
|
||||||
|
@Component({
|
||||||
|
name: 'UploadImage'
|
||||||
|
})
|
||||||
|
export default class extends Vue {
|
||||||
|
@Prop({ default: '.jpg,.jpeg,.png' }) type: string
|
||||||
|
@Prop({ default: 2 }) size: number
|
||||||
|
@Prop({ default: '' }) propImageUrl: string
|
||||||
|
|
||||||
|
private headers = {
|
||||||
|
token: getToken()
|
||||||
|
}
|
||||||
|
private imageUrl = ''
|
||||||
|
handleRemove() {}
|
||||||
|
|
||||||
|
@Watch('propImageUrl')
|
||||||
|
private onChange(val) {
|
||||||
|
this.imageUrl = val
|
||||||
|
}
|
||||||
|
|
||||||
|
handleError(err, file, fileList) {
|
||||||
|
console.log(err, file, fileList, 'handleError')
|
||||||
|
this.$message({
|
||||||
|
message: '图片上传失败',
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
handleAvatarSuccess(response: any, file: any, fileList: any) {
|
||||||
|
// this.imageUrl = response.data
|
||||||
|
// this.imageUrl = `http://172.17.2.120:8080/common/download?name=${response.data}`
|
||||||
|
this.imageUrl = `${response.data}`
|
||||||
|
// this.imageUrl = `${baseUrl}/common/download?name=${response.data}`
|
||||||
|
|
||||||
|
this.$emit('imageChange', this.imageUrl)
|
||||||
|
}
|
||||||
|
|
||||||
|
oploadImgDel() {
|
||||||
|
this.imageUrl = ''
|
||||||
|
this.$emit('imageChange', this.imageUrl)
|
||||||
|
}
|
||||||
|
beforeAvatarUpload(file) {
|
||||||
|
const isLt2M = file.size / 1024 / 1024 < this.size
|
||||||
|
if (!isLt2M) {
|
||||||
|
this.$message({
|
||||||
|
message: `上传文件大小不能超过${this.size}M!`,
|
||||||
|
type: 'error'
|
||||||
|
})
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang='scss'>
|
||||||
|
.borderNone {
|
||||||
|
.el-upload {
|
||||||
|
border: 1px solid #d9d9d9 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.avatar-uploader .el-icon-plus:after {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
content: ' ' !important;
|
||||||
|
left: calc(50% - 20px);
|
||||||
|
top: calc(50% - 40px);
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
background: url('./../../assets/icons/icon_upload@2x.png') center center
|
||||||
|
no-repeat;
|
||||||
|
background-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-upload-list__item-actions:hover .upload-icon {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.el-icon-zoom-in:before {
|
||||||
|
content: '\E626';
|
||||||
|
}
|
||||||
|
.el-icon-delete:before {
|
||||||
|
content: '\E612';
|
||||||
|
}
|
||||||
|
.el-upload-list__item-actions:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
.upload-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.el-form-item__content {
|
||||||
|
width: 500px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.upload-tips {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #666666;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 17px;
|
||||||
|
margin-left: 36px;
|
||||||
|
}
|
||||||
|
.el-upload-list__item-actions {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
cursor: default;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
opacity: 0;
|
||||||
|
font-size: 20px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
transition: opacity 0.3s;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.avatar-uploader .el-upload {
|
||||||
|
border: 1px dashed #d9d9d9;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.avatar-uploader {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-uploader .el-upload:hover {
|
||||||
|
border-color: #F26461;
|
||||||
|
}
|
||||||
|
.el-upload-span {
|
||||||
|
width: 100px;
|
||||||
|
height: 30px;
|
||||||
|
border: 1px solid #ffffff;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-upload-span:first-child {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar-uploader-icon {
|
||||||
|
font-size: 28px;
|
||||||
|
color: #8c939d;
|
||||||
|
width: 200px;
|
||||||
|
height: 160px;
|
||||||
|
line-height: 160px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
width: 200px;
|
||||||
|
height: 160px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
42
src/components/InputAutoComplete/index.vue
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<!-- -->
|
||||||
|
<template>
|
||||||
|
<div class="input-auto-complete">
|
||||||
|
<el-input
|
||||||
|
v-model="input"
|
||||||
|
:placeholder="placeholder"
|
||||||
|
style="width: 250px"
|
||||||
|
clearable
|
||||||
|
@clear="init"
|
||||||
|
@keyup.enter.native="init"
|
||||||
|
>
|
||||||
|
<i
|
||||||
|
slot="prefix"
|
||||||
|
class="el-input__icon el-icon-search"
|
||||||
|
style="cursor: pointer"
|
||||||
|
@click="init"
|
||||||
|
/>
|
||||||
|
</el-input>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang='ts'>
|
||||||
|
import { Vue, Component, Prop } from 'vue-property-decorator'
|
||||||
|
@Component({
|
||||||
|
name: 'InputAutoComplete',
|
||||||
|
})
|
||||||
|
export default class extends Vue {
|
||||||
|
private input: any = ''
|
||||||
|
@Prop({ default: [] }) data: Array<any>
|
||||||
|
@Prop({ default: '' }) placeholder: string
|
||||||
|
@Prop({ default: 'name' }) ObKey: string
|
||||||
|
|
||||||
|
init() {
|
||||||
|
this.$emit('init', this.input)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.input-auto-complete {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
3
src/config.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"baseUrl": "/api"
|
||||||
|
}
|
||||||
13
src/icons/README.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# vue-svgicon
|
||||||
|
|
||||||
|
## English
|
||||||
|
|
||||||
|
* All svg components were generated by `vue-svgicon` using svg files
|
||||||
|
* After you adding new svg files into `icons/svg` folder, run `yarn svg` to regerenrate all svg components (before this, you should have `vue-svgicon` installed globally or use `npx`)
|
||||||
|
* See details at: [https://github.com/MMF-FE/vue-svgicon](https://github.com/MMF-FE/vue-svgicon)
|
||||||
|
|
||||||
|
## 中文
|
||||||
|
|
||||||
|
* 所有的 svg 组件都是由 `vue-svgicon` 生成的
|
||||||
|
* 每当在 `icons/svg` 文件夹内添加 icon 之后,可以通过执行 `yarn svg` 来重新生成所有组件 (在此之前需要全局安装 `vue-svgicon` 或使用 `npx`)
|
||||||
|
* 详细文档请见:[https://github.com/MMF-FE/vue-svgicon](https://github.com/MMF-FE/vue-svgicon)
|
||||||
12
src/icons/components/dashboard.ts
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
/* tslint:disable */
|
||||||
|
// @ts-ignore
|
||||||
|
import icon from 'vue-svgicon'
|
||||||
|
icon.register({
|
||||||
|
'dashboard': {
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
viewBox: '0 0 1024 1024',
|
||||||
|
data: '<path pid="4758" d="M888 462.4L544 142.4c-19.2-17.6-48-17.6-65.6 0l-344 320c-9.6 9.6-16 22.4-16 35.2v355.2c0 27.2 22.4 49.6 49.6 49.6h240V657.6c0-56 46.4-102.4 102.4-102.4 56 0 102.4 46.4 102.4 102.4v246.4h240c27.2 0 49.6-22.4 49.6-49.6V497.6c1.6-12.8-4.8-25.6-14.4-35.2z"/>'
|
||||||
|
}
|
||||||
|
})
|
||||||