rcs5.0 commit
This commit is contained in:
+23
@@ -0,0 +1,23 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "lerna run serve",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "lerna run serve --scope=@rcs5.0 --stream",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run serve",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "vue-cli-service serve",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "npm run serve",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "rcs5.0",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "yarn serve",
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"bootstrap": "lerna bootstrap"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": "^3.8.3",
|
||||
"lerna": "3.22.1",
|
||||
"vue": "^2.6.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-template-compiler": "^2.6.14"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "@babel/eslint-parser"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import VueDynamic from 'vue-dynamic'
|
||||
|
||||
|
||||
export default [
|
||||
{
|
||||
path: '/dynamic',
|
||||
component: VueDynamic.Viewer
|
||||
}
|
||||
];
|
||||
@@ -0,0 +1,3 @@
|
||||
import desktopRoutes from '../src/router/index'
|
||||
|
||||
export default desktopRoutes;
|
||||
@@ -0,0 +1,3 @@
|
||||
import routes from '../src/router/index'
|
||||
|
||||
export default routes;
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"name": "rcs_5.0",
|
||||
"description": "description",
|
||||
"authors": "author",
|
||||
"version": "1.0.0",
|
||||
"main": "pathToMain",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"build:electron": "cross-env IDE=electron vue-cli-service build",
|
||||
"start:electron": "cross-env IDE=electron vue-cli-service serve",
|
||||
"start:main:dev": " electron ./.electron.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@erayt/language": "^1.0.0",
|
||||
"@erayt/titanOne-kernel":"^1.0.0",
|
||||
"@erayt/titanOne-observer": "^5.0.0",
|
||||
"@erayt/titanOne-vue":"^0.1.1",
|
||||
"@erayt/titanOne-component-vue": "^1.0.0",
|
||||
"core-js": "3.31.0",
|
||||
"element-ui": "2.15.13",
|
||||
"js-cookie": "3.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"vue": "2.7.14",
|
||||
"vue-i18n": "8.22.2",
|
||||
"vue-router": "3.6.5",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.21.8",
|
||||
"@babel/eslint-parser": "7.21.8",
|
||||
"vue-dynamic": "^1.0.57",
|
||||
"vue-dynamic-theme": "^1.0.9",
|
||||
"cross-env": "^7.0.3",
|
||||
"@erayt/eui2-themes": "3.2.32",
|
||||
"@erayt/eui3.5-customize-themes": "^1.0.9",
|
||||
"@erayt/titanOne-dll": "^3.2.33",
|
||||
"@erayt/titanOne3.0-web-login": "^3.0.0",
|
||||
"@erayt/titanOne-electron": "^3.1.69",
|
||||
"@erayt/titanOne3.0-electron-login": "^3.1.65",
|
||||
"@erayt/element-customize-themes": "^2.15.19",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-transform-remove-strict-mode": "0.0.2",
|
||||
"copy-webpack-plugin": "11.0.0",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-plugin-vue": "8.7.1",
|
||||
"path-browserify": "1.0.1",
|
||||
"prettier": "2.8.7",
|
||||
"vue-template-compiler": "2.7.14",
|
||||
"cache-loader": "4.1.0",
|
||||
"sass": "1.63.4",
|
||||
"sass-loader": "12.6.0",
|
||||
"stylus-loader": "6.2.0",
|
||||
"sass-resources-loader": "2.2.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"name": "rcs_5.0",
|
||||
"description": "description",
|
||||
"authors": "author",
|
||||
"version": "1.0.0",
|
||||
"main": "pathToMain",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"build:electron": "cross-env IDE=electron vue-cli-service build",
|
||||
"start:electron": "cross-env IDE=electron vue-cli-service serve",
|
||||
"start:main:dev": " electron ./.electron.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@erayt/language": "^1.0.0",
|
||||
"@erayt/titanOne-kernel":"^1.0.0",
|
||||
"@erayt/titanOne-observer": "^5.0.0",
|
||||
"@erayt/titanOne-vue":"^0.1.1",
|
||||
"@erayt/titanOne-component-vue": "^1.0.0",
|
||||
"core-js": "3.31.0",
|
||||
"element-ui": "2.15.13",
|
||||
"js-cookie": "3.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"vue": "2.7.14",
|
||||
"vue-i18n": "8.22.2",
|
||||
"vue-router": "3.6.5",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.6.2",
|
||||
"echarts": "4.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.21.8",
|
||||
"@babel/eslint-parser": "7.21.8",
|
||||
"vue-dynamic": "^1.0.57",
|
||||
"vue-dynamic-theme": "^1.0.9",
|
||||
"cross-env": "^7.0.3",
|
||||
"@erayt/eui2-themes": "3.2.32",
|
||||
"@erayt/eui3.5-customize-themes": "^1.0.9",
|
||||
"@erayt/titanOne-dll": "^3.2.33",
|
||||
"@erayt/titanOne3.0-web-login": "^3.0.0",
|
||||
"@erayt/titanOne-electron": "^3.1.69",
|
||||
"@erayt/titanOne3.0-electron-login": "^3.1.65",
|
||||
"@erayt/element-customize-themes": "^2.15.19",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-transform-remove-strict-mode": "0.0.2",
|
||||
"copy-webpack-plugin": "11.0.0",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-plugin-vue": "8.7.1",
|
||||
"path-browserify": "1.0.1",
|
||||
"prettier": "2.8.7",
|
||||
"vue-template-compiler": "2.7.14",
|
||||
"cache-loader": "4.1.0",
|
||||
"sass": "1.63.4",
|
||||
"sass-loader": "12.6.0",
|
||||
"stylus-loader": "6.2.0",
|
||||
"sass-resources-loader": "2.2.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "rcs_5.0",
|
||||
"description": "description",
|
||||
"authors": "author",
|
||||
"version": "1.0.0",
|
||||
"main": "pathToMain",
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"build:electron": "cross-env IDE=electron vue-cli-service build",
|
||||
"start:electron": "cross-env IDE=electron vue-cli-service serve",
|
||||
"start:main:dev": " electron ./.electron.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@erayt/language": "^1.0.0",
|
||||
"@erayt/titanOne-kernel":"^1.0.0",
|
||||
"@erayt/titanOne-observer": "^5.0.0",
|
||||
"@erayt/titanOne-vue":"^0.1.1",
|
||||
"@erayt/titanOne-component-vue": "^1.0.0",
|
||||
"core-js": "3.31.0",
|
||||
"element-ui": "2.15.13",
|
||||
"js-cookie": "3.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"vue": "2.7.14",
|
||||
"vue-i18n": "8.22.2",
|
||||
"vue-router": "3.6.5",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.6.2",
|
||||
"echarts": "4.9.0",
|
||||
"axios": "0.27.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.21.8",
|
||||
"@babel/eslint-parser": "7.21.8",
|
||||
"vue-dynamic": "^1.0.57",
|
||||
"vue-dynamic-theme": "^1.0.9",
|
||||
"cross-env": "^7.0.3",
|
||||
"@erayt/eui2-themes": "3.2.32",
|
||||
"@erayt/eui3.5-customize-themes": "^1.0.9",
|
||||
"@erayt/titanOne-dll": "^3.2.33",
|
||||
"@erayt/titanOne3.0-web-login": "^3.0.0",
|
||||
"@erayt/titanOne-electron": "^3.1.69",
|
||||
"@erayt/titanOne3.0-electron-login": "^3.1.65",
|
||||
"@erayt/element-customize-themes": "^2.15.19",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@erayt/vue-cli-plugin-mock": "^1.0.0",
|
||||
"@erayt/vue-cli-plugin-titanOne": "^1.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"babel-plugin-dynamic-import-node": "2.3.3",
|
||||
"babel-plugin-transform-remove-strict-mode": "0.0.2",
|
||||
"copy-webpack-plugin": "11.0.0",
|
||||
"eslint": "7.32.0",
|
||||
"eslint-plugin-vue": "8.7.1",
|
||||
"path-browserify": "1.0.1",
|
||||
"prettier": "2.8.7",
|
||||
"vue-template-compiler": "2.7.14",
|
||||
"cache-loader": "4.1.0",
|
||||
"sass": "1.63.4",
|
||||
"sass-loader": "12.6.0",
|
||||
"stylus-loader": "6.2.0",
|
||||
"sass-resources-loader": "2.2.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
import {service} from "@erayt/titanOne-vue/lib/main.js"
|
||||
|
||||
import routeConfig from "../config/route.config";
|
||||
import modules from "./store/modules";
|
||||
import getters from "./store/getters";
|
||||
import rxd from 'vue-dynamic';
|
||||
import 'vue-dynamic/dist/Dynamic.css';
|
||||
import "vue-dynamic-theme";
|
||||
rxd.titan.init();
|
||||
function handleCustomizeEvent() {
|
||||
Eui.Ipc.addSubscribes(
|
||||
{
|
||||
"edit:phoenix:page": () => {
|
||||
Eui.Comm.postToRemote({
|
||||
url: "loginAfter.action",
|
||||
hostKey: "phoenix",
|
||||
},res=>{
|
||||
if(res.success){
|
||||
const result = res.data.result;
|
||||
sessionStorage.setItem("user_loginId", result.loginId);
|
||||
sessionStorage.setItem("loginType", "ecas");
|
||||
window.open("/#/project");
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
{ scopeId: Eui.scopeId }
|
||||
);
|
||||
}
|
||||
|
||||
// import rxd from 'vue-dynamic';
|
||||
// import 'vue-dynamic/dist/Dynamic.css';
|
||||
// rxd.titan.init();
|
||||
|
||||
service.registerApplication("rcs_5.0",{
|
||||
routeConfig,
|
||||
getters,
|
||||
modules
|
||||
})
|
||||
|
||||
service.load();
|
||||
@@ -0,0 +1,46 @@
|
||||
import {service} from "@erayt/titanOne-vue/lib/main.js"
|
||||
|
||||
import routeConfig from "../config/route.config";
|
||||
import modules from "./store/modules";
|
||||
import getters from "./store/getters";
|
||||
import rxd from 'vue-dynamic';
|
||||
import 'vue-dynamic/dist/Dynamic.css';
|
||||
import "vue-dynamic-theme";
|
||||
import * as echarts from 'echarts';
|
||||
import Vue from "vue";
|
||||
|
||||
rxd.titan.init();
|
||||
function handleCustomizeEvent() {
|
||||
Eui.Ipc.addSubscribes(
|
||||
{
|
||||
"edit:phoenix:page": () => {
|
||||
Eui.Comm.postToRemote({
|
||||
url: "loginAfter.action",
|
||||
hostKey: "phoenix",
|
||||
},res=>{
|
||||
if(res.success){
|
||||
const result = res.data.result;
|
||||
sessionStorage.setItem("user_loginId", result.loginId);
|
||||
sessionStorage.setItem("loginType", "ecas");
|
||||
window.open("/#/project");
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
{ scopeId: Eui.scopeId }
|
||||
);
|
||||
}
|
||||
|
||||
Vue.prototype.$echarts = echarts;
|
||||
|
||||
// import rxd from 'vue-dynamic';
|
||||
// import 'vue-dynamic/dist/Dynamic.css';
|
||||
// rxd.titan.init();
|
||||
|
||||
service.registerApplication("rcs_5.0",{
|
||||
routeConfig,
|
||||
getters,
|
||||
modules
|
||||
})
|
||||
|
||||
service.load();
|
||||
@@ -0,0 +1,46 @@
|
||||
import {service} from "@erayt/titanOne-vue/lib/main.js"
|
||||
|
||||
import routeConfig from "../config/route.config";
|
||||
import modules from "./store/modules";
|
||||
import getters from "./store/getters";
|
||||
import rxd from 'vue-dynamic';
|
||||
import 'vue-dynamic/dist/Dynamic.css';
|
||||
import "vue-dynamic-theme";
|
||||
import ECharts from './plugins/echarts';
|
||||
import Vue from "vue";
|
||||
|
||||
rxd.titan.init();
|
||||
function handleCustomizeEvent() {
|
||||
Eui.Ipc.addSubscribes(
|
||||
{
|
||||
"edit:phoenix:page": () => {
|
||||
Eui.Comm.postToRemote({
|
||||
url: "loginAfter.action",
|
||||
hostKey: "phoenix",
|
||||
},res=>{
|
||||
if(res.success){
|
||||
const result = res.data.result;
|
||||
sessionStorage.setItem("user_loginId", result.loginId);
|
||||
sessionStorage.setItem("loginType", "ecas");
|
||||
window.open("/#/project");
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
{ scopeId: Eui.scopeId }
|
||||
);
|
||||
}
|
||||
|
||||
Vue.use(ECharts)
|
||||
|
||||
// import rxd from 'vue-dynamic';
|
||||
// import 'vue-dynamic/dist/Dynamic.css';
|
||||
// rxd.titan.init();
|
||||
|
||||
service.registerApplication("rcs_5.0",{
|
||||
routeConfig,
|
||||
getters,
|
||||
modules
|
||||
})
|
||||
|
||||
service.load();
|
||||
@@ -0,0 +1,36 @@
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const ECharts = {
|
||||
install: function (Vue, options) {
|
||||
Vue.prototype.$echarts = echarts;
|
||||
Vue.component('v-chart', {
|
||||
render: function (createElement) {
|
||||
return createElement('div', this.$slots.default);
|
||||
},
|
||||
mounted: function () {
|
||||
this.chart = echarts.init(this.$el);
|
||||
this.chart.setOption(this.options);
|
||||
},
|
||||
props: {
|
||||
options: Object
|
||||
},
|
||||
watch: {
|
||||
options: {
|
||||
deep: true,
|
||||
handler: function (newVal) {
|
||||
if (this.chart) {
|
||||
this.chart.setOption(newVal, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy: function () {
|
||||
if (this.chart) {
|
||||
this.chart.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default ECharts;
|
||||
@@ -0,0 +1,36 @@
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const ECharts = {
|
||||
install: function (Vue, options) {
|
||||
Vue.prototype.$echarts = echarts;
|
||||
Vue.component('v-chart', {
|
||||
render: function (createElement) {
|
||||
return createElement('div', this.$slots.default);
|
||||
},
|
||||
mounted: function () {
|
||||
this.chart = echarts.init(this.$el);
|
||||
this.chart.setOption(this.options);
|
||||
},
|
||||
props: {
|
||||
options: Object
|
||||
},
|
||||
watch: {
|
||||
options: {
|
||||
deep: true,
|
||||
handler: function (newVal) {
|
||||
if (this.chart) {
|
||||
this.chart.setOption(newVal, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy: function () {
|
||||
if (this.chart) {
|
||||
this.chart.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default ECharts;
|
||||
@@ -0,0 +1,36 @@
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const ECharts = {
|
||||
install: function (Vue, options) {
|
||||
Vue.prototype.$echarts = echarts;
|
||||
Vue.component('chartComponent', {
|
||||
render: function (createElement) {
|
||||
return createElement('div', this.$slots.default);
|
||||
},
|
||||
mounted: function () {
|
||||
this.chart = echarts.init(this.$el);
|
||||
this.chart.setOption(this.options);
|
||||
},
|
||||
props: {
|
||||
options: Object
|
||||
},
|
||||
watch: {
|
||||
options: {
|
||||
deep: true,
|
||||
handler: function (newVal) {
|
||||
if (this.chart) {
|
||||
this.chart.setOption(newVal, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy: function () {
|
||||
if (this.chart) {
|
||||
this.chart.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default ECharts;
|
||||
@@ -0,0 +1,36 @@
|
||||
import * as echarts from 'echarts';
|
||||
|
||||
const ECharts = {
|
||||
install: function (Vue, options) {
|
||||
Vue.prototype.$echarts = echarts;
|
||||
Vue.component('v-chart', {
|
||||
render: function (createElement) {
|
||||
return createElement('div', this.$slots.default);
|
||||
},
|
||||
mounted: function () {
|
||||
this.chart = echarts.init(this.$el);
|
||||
this.chart.setOption(this.options);
|
||||
},
|
||||
props: {
|
||||
options: Object
|
||||
},
|
||||
watch: {
|
||||
options: {
|
||||
deep: true,
|
||||
handler: function (newVal) {
|
||||
if (this.chart) {
|
||||
this.chart.setOption(newVal, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy: function () {
|
||||
if (this.chart) {
|
||||
this.chart.dispose();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default ECharts;
|
||||
@@ -0,0 +1,3 @@
|
||||
export default [
|
||||
];
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
export default [
|
||||
];
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export default [
|
||||
{
|
||||
path: "/test",
|
||||
component: () => import("../views/test"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export default [
|
||||
{
|
||||
path: "/directive",
|
||||
component: () => import("../views/permisson/directive"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export default [
|
||||
{
|
||||
path: "/directive",
|
||||
component: () => import("../views/permisson/directive.vue"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export default [
|
||||
{
|
||||
path: "/test",
|
||||
component: () => import("../views/test"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
export default [
|
||||
{
|
||||
path: "/chart",
|
||||
component: () => import("../views/charts"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
export default [
|
||||
{
|
||||
path: "/chart",
|
||||
component: () => import("../views/charts/index"),
|
||||
},
|
||||
{
|
||||
path: "/chart2",
|
||||
component: () => import("../views/charts/index2"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
export default [
|
||||
{
|
||||
path: "/chart",
|
||||
component: () => import("../views/charts/index"),
|
||||
},
|
||||
{
|
||||
path: "/chart2",
|
||||
component: () => import("../views/charts/index2"),
|
||||
},
|
||||
{
|
||||
path: "/x-input",
|
||||
component: () => import("../views/x-input"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
export default [
|
||||
{
|
||||
path: "/chart",
|
||||
component: () => import("../views/charts/index"),
|
||||
},
|
||||
{
|
||||
path: "/chart2",
|
||||
component: () => import("../views/charts/index2"),
|
||||
},
|
||||
{
|
||||
path: "/numberInput",
|
||||
component: () => import("../views/numberInput"),
|
||||
}
|
||||
];
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const names = [
|
||||
'Orange',
|
||||
'Tomato',
|
||||
'Apple',
|
||||
'Sakana',
|
||||
'Banana',
|
||||
'Iwashi',
|
||||
'Snappy Fish',
|
||||
'Lemon',
|
||||
'Pasta'
|
||||
];
|
||||
const years = ['2001', '2002', '2003', '2004', '2005', '2006'];
|
||||
const shuffle = (array) => {
|
||||
let currentIndex = array.length;
|
||||
let randomIndex = 0;
|
||||
while (currentIndex > 0) {
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex--;
|
||||
[array[currentIndex], array[randomIndex]] = [
|
||||
array[randomIndex],
|
||||
array[currentIndex]
|
||||
];
|
||||
}
|
||||
return array;
|
||||
};
|
||||
const generateRankingData = () => {
|
||||
const map = new Map();
|
||||
const defaultRanking = Array.from({ length: names.length }, (_, i) => i + 1);
|
||||
for (const _ of years) {
|
||||
const shuffleArray = shuffle(defaultRanking);
|
||||
names.forEach((name, i) => {
|
||||
map.set(name, (map.get(name) || []).concat(shuffleArray[i]));
|
||||
});
|
||||
}
|
||||
return map;
|
||||
};
|
||||
const generateSeriesList = () => {
|
||||
const seriesList = [];
|
||||
const rankingMap = generateRankingData();
|
||||
rankingMap.forEach((data, name) => {
|
||||
const series = {
|
||||
name,
|
||||
symbolSize: 20,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
endLabel: {
|
||||
show: true,
|
||||
formatter: '{a}',
|
||||
distance: 20
|
||||
},
|
||||
lineStyle: {
|
||||
width: 4
|
||||
},
|
||||
data
|
||||
};
|
||||
seriesList.push(series);
|
||||
});
|
||||
return seriesList;
|
||||
};
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: 'Bump Chart (Ranking)'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
grid: {
|
||||
left: 30,
|
||||
right: 110,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
splitLine: {
|
||||
show: true
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16
|
||||
},
|
||||
boundaryGap: false,
|
||||
data: years
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16,
|
||||
formatter: '#{value}'
|
||||
},
|
||||
inverse: true,
|
||||
interval: 1,
|
||||
min: 1,
|
||||
max: names.length
|
||||
},
|
||||
series: generateSeriesList()
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,129 @@
|
||||
<template>
|
||||
<div>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const names = [
|
||||
'Orange',
|
||||
'Tomato',
|
||||
'Apple',
|
||||
'Sakana',
|
||||
'Banana',
|
||||
'Iwashi',
|
||||
'Snappy Fish',
|
||||
'Lemon',
|
||||
'Pasta'
|
||||
];
|
||||
const years = ['2001', '2002', '2003', '2004', '2005', '2006'];
|
||||
const shuffle = (array) => {
|
||||
let currentIndex = array.length;
|
||||
let randomIndex = 0;
|
||||
while (currentIndex > 0) {
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex--;
|
||||
[array[currentIndex], array[randomIndex]] = [
|
||||
array[randomIndex],
|
||||
array[currentIndex]
|
||||
];
|
||||
}
|
||||
return array;
|
||||
};
|
||||
const generateRankingData = () => {
|
||||
const map = new Map();
|
||||
const defaultRanking = Array.from({ length: names.length }, (_, i) => i + 1);
|
||||
for (const _ of years) {
|
||||
const shuffleArray = shuffle(defaultRanking);
|
||||
names.forEach((name, i) => {
|
||||
map.set(name, (map.get(name) || []).concat(shuffleArray[i]));
|
||||
});
|
||||
}
|
||||
return map;
|
||||
};
|
||||
const generateSeriesList = () => {
|
||||
const seriesList = [];
|
||||
const rankingMap = generateRankingData();
|
||||
rankingMap.forEach((data, name) => {
|
||||
const series = {
|
||||
name,
|
||||
symbolSize: 20,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
endLabel: {
|
||||
show: true,
|
||||
formatter: '{a}',
|
||||
distance: 20
|
||||
},
|
||||
lineStyle: {
|
||||
width: 4
|
||||
},
|
||||
data
|
||||
};
|
||||
seriesList.push(series);
|
||||
});
|
||||
return seriesList;
|
||||
};
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: 'Bump Chart (Ranking)'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
grid: {
|
||||
left: 30,
|
||||
right: 110,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
splitLine: {
|
||||
show: true
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16
|
||||
},
|
||||
boundaryGap: false,
|
||||
data: years
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16,
|
||||
formatter: '#{value}'
|
||||
},
|
||||
inverse: true,
|
||||
interval: 1,
|
||||
min: 1,
|
||||
max: names.length
|
||||
},
|
||||
series: generateSeriesList()
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<div class="optionCalculator">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<div id="chart">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
init () {
|
||||
var myChart = echarts.init(document.getElementById('chart'));
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: 'ECharts 入门示例'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
|
||||
},
|
||||
yAxis: {},
|
||||
series: [
|
||||
{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
init () {
|
||||
var myChart = echarts.init(document.getElementById('chart'));
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: 'ECharts 入门示例'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
|
||||
},
|
||||
yAxis: {},
|
||||
series: [
|
||||
{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}
|
||||
]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<chartComponent :options="chartOptions"></chartComponent>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,39 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const names = [
|
||||
'Orange',
|
||||
'Tomato',
|
||||
'Apple',
|
||||
'Sakana',
|
||||
'Banana',
|
||||
'Iwashi',
|
||||
'Snappy Fish',
|
||||
'Lemon',
|
||||
'Pasta'
|
||||
];
|
||||
const years = ['2001', '2002', '2003', '2004', '2005', '2006'];
|
||||
const shuffle = (array) => {
|
||||
let currentIndex = array.length;
|
||||
let randomIndex = 0;
|
||||
while (currentIndex > 0) {
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex--;
|
||||
[array[currentIndex], array[randomIndex]] = [
|
||||
array[randomIndex],
|
||||
array[currentIndex]
|
||||
];
|
||||
}
|
||||
return array;
|
||||
};
|
||||
const generateRankingData = () => {
|
||||
const map = new Map();
|
||||
const defaultRanking = Array.from({ length: names.length }, (_, i) => i + 1);
|
||||
for (const _ of years) {
|
||||
const shuffleArray = shuffle(defaultRanking);
|
||||
names.forEach((name, i) => {
|
||||
map.set(name, (map.get(name) || []).concat(shuffleArray[i]));
|
||||
});
|
||||
}
|
||||
return map;
|
||||
};
|
||||
const generateSeriesList = () => {
|
||||
const seriesList = [];
|
||||
const rankingMap = generateRankingData();
|
||||
rankingMap.forEach((data, name) => {
|
||||
const series = {
|
||||
name,
|
||||
symbolSize: 20,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
endLabel: {
|
||||
show: true,
|
||||
formatter: '{a}',
|
||||
distance: 20
|
||||
},
|
||||
lineStyle: {
|
||||
width: 4
|
||||
},
|
||||
data
|
||||
};
|
||||
seriesList.push(series);
|
||||
});
|
||||
return seriesList;
|
||||
};
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: 'Bump Chart (Ranking)'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
grid: {
|
||||
left: 30,
|
||||
right: 110,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
splitLine: {
|
||||
show: true
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16
|
||||
},
|
||||
boundaryGap: false,
|
||||
data: years
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16,
|
||||
formatter: '#{value}'
|
||||
},
|
||||
inverse: true,
|
||||
interval: 1,
|
||||
min: 1,
|
||||
max: names.length
|
||||
},
|
||||
series: generateSeriesList()
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const names = [
|
||||
'Orange',
|
||||
'Tomato',
|
||||
'Apple',
|
||||
'Sakana',
|
||||
'Banana',
|
||||
'Iwashi',
|
||||
'Snappy Fish',
|
||||
'Lemon',
|
||||
'Pasta'
|
||||
];
|
||||
const years = ['2001', '2002', '2003', '2004', '2005', '2006'];
|
||||
const shuffle = (array) => {
|
||||
let currentIndex = array.length;
|
||||
let randomIndex = 0;
|
||||
while (currentIndex > 0) {
|
||||
randomIndex = Math.floor(Math.random() * currentIndex);
|
||||
currentIndex--;
|
||||
[array[currentIndex], array[randomIndex]] = [
|
||||
array[randomIndex],
|
||||
array[currentIndex]
|
||||
];
|
||||
}
|
||||
return array;
|
||||
};
|
||||
const generateRankingData = () => {
|
||||
const map = new Map();
|
||||
const defaultRanking = Array.from({ length: names.length }, (_, i) => i + 1);
|
||||
for (const _ of years) {
|
||||
const shuffleArray = shuffle(defaultRanking);
|
||||
names.forEach((name, i) => {
|
||||
map.set(name, (map.get(name) || []).concat(shuffleArray[i]));
|
||||
});
|
||||
}
|
||||
return map;
|
||||
};
|
||||
const generateSeriesList = () => {
|
||||
const seriesList = [];
|
||||
const rankingMap = generateRankingData();
|
||||
rankingMap.forEach((data, name) => {
|
||||
const series = {
|
||||
name,
|
||||
symbolSize: 20,
|
||||
type: 'line',
|
||||
smooth: true,
|
||||
emphasis: {
|
||||
focus: 'series'
|
||||
},
|
||||
endLabel: {
|
||||
show: true,
|
||||
formatter: '{a}',
|
||||
distance: 20
|
||||
},
|
||||
lineStyle: {
|
||||
width: 4
|
||||
},
|
||||
data
|
||||
};
|
||||
seriesList.push(series);
|
||||
});
|
||||
return seriesList;
|
||||
};
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: 'Bump Chart (Ranking)'
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
grid: {
|
||||
left: 30,
|
||||
right: 110,
|
||||
bottom: 30,
|
||||
containLabel: true
|
||||
},
|
||||
toolbox: {
|
||||
feature: {
|
||||
saveAsImage: {}
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
splitLine: {
|
||||
show: true
|
||||
},
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16
|
||||
},
|
||||
boundaryGap: false,
|
||||
data: years
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
margin: 30,
|
||||
fontSize: 16,
|
||||
formatter: '#{value}'
|
||||
},
|
||||
inverse: true,
|
||||
interval: 1,
|
||||
min: 1,
|
||||
max: names.length
|
||||
},
|
||||
series: generateSeriesList()
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<div>
|
||||
<div>哈哈哈哈哈哈哈</div>
|
||||
<div style="height: 300px;">
|
||||
<v-chart :options="chartOptions"></v-chart>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,38 @@
|
||||
<template>
|
||||
<div>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'chart',
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,46 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 123,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '1,234',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '1234',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '1223.4',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '1,223.4',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '1,2,23.4',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '11,223.4',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '11223.4',
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" :digit="6" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" :digit="6" :disabled="true" @sendValue="sendValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
sendValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" :digit="6" :disabled="true" @getNumberValue="getNumberValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getNumberValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" :digit="6" @getNumberValue="getNumberValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getNumberValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<div>
|
||||
金额:<numberInput :value="inputValue" :digit="6" @getNumberValue="getNumberValue"></numberInput>
|
||||
<v-chart :options="chartOptions" style="height: 300px;"></v-chart>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import numberInput from '../numberInput'
|
||||
export default {
|
||||
name: 'chart',
|
||||
components: {
|
||||
numberInput
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: 11234.5,
|
||||
chartOptions: {
|
||||
// ECharts 配置项...
|
||||
title: {
|
||||
text: '示例图表'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}]
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
getNumberValue (data) {
|
||||
console.log('data-------', data)
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,69 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,70 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,78 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.replace(/,/g, '')
|
||||
this.inputValueCopy = this.value.replace(/,/g, '')
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,78 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value
|
||||
this.inputValueCopy = this.value
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/;
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value;
|
||||
this.inputValueCopy = value;
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<div>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,75 @@
|
||||
<template>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,75 @@
|
||||
<template>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
let newValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
this.inputValue = newValue
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValue.replace(/,/g, '')
|
||||
this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus">
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<el-input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 转换千分位
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<el-input type="text" v-model="inputValue" @input="handleInput" @blur="handleBlur" @focus="handleFocus" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
digit: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) // 转换千分位
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<el-input type="text" v-model="inputValue" :disabled="disabled" @input="handleInput" @blur="handleBlur" @focus="handleFocus" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
digit: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) // 转换千分位
|
||||
}
|
||||
this.$emit('sendValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,87 @@
|
||||
<template>
|
||||
<el-input type="text" v-model="inputValue" :disabled="disabled" @input="handleInput" @blur="handleBlur" @focus="handleFocus" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
digit: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(event) {
|
||||
let value = event.target.value;
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) // 转换千分位
|
||||
}
|
||||
this.$emit('getNumberValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
@@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<el-input type="text" v-model="inputValue" :disabled="disabled" @input="handleInput" @blur="handleBlur" @focus="handleFocus" />
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'numberInput',
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String],
|
||||
default: null
|
||||
},
|
||||
digit: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
inputValueCopy: ''
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.inputValue = this.value ? this.value.toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) : '' // 转换千分位
|
||||
},
|
||||
methods: {
|
||||
handleInput(value) {
|
||||
// 使用正则表达式限制只能输入数字、指定英文和一个小数点
|
||||
const regex = /^[0-9bkmBKM]*\.?[0-9bkmBKM]*$/
|
||||
// 如果输入的值不符合正则规则,则回退到上一次的值
|
||||
if (!regex.test(value)) {
|
||||
this.inputValue = this.inputValueCopy
|
||||
} else {
|
||||
this.inputValue = value
|
||||
this.inputValueCopy = value
|
||||
}
|
||||
},
|
||||
handleBlur () {
|
||||
if (this.inputValue) {
|
||||
let lastLetter = this.getLastLetter(this.inputValue)
|
||||
let firstLetter = this.getFirstLetter(this.inputValue)
|
||||
let num = firstLetter ? (this.inputValue.split(firstLetter)[0].replace(/[a-zA-Z]/g, '') * 1) : (this.inputValue.replace(/[a-zA-Z]/g, '') * 1) // 去除字母
|
||||
let unit = 0
|
||||
if (lastLetter === 'k') {
|
||||
unit = 3
|
||||
} else if (lastLetter === 'm') {
|
||||
unit = 6
|
||||
} else if (lastLetter === 'b') {
|
||||
unit = 9
|
||||
}
|
||||
this.inputValue = (num * Math.pow(10, unit)).toLocaleString('en-US', {
|
||||
minimumFractionDigits: this.digit,
|
||||
maximumFractionDigits: this.digit
|
||||
}) // 转换千分位
|
||||
}
|
||||
this.$emit('getNumberValue', this.inputValue)
|
||||
},
|
||||
handleFocus () {
|
||||
this.inputValue = this.inputValueCopy = this.inputValue.replace(/,/g, '')
|
||||
},
|
||||
// 获取第一个字母
|
||||
getFirstLetter(str) {
|
||||
return str.match(/[a-zA-Z]/)?.[0] || ''
|
||||
},
|
||||
// 获取最后一个字母
|
||||
getLastLetter(str) {
|
||||
const letters = str.match(/[a-zA-Z]/g) // 使用正则表达式匹配所有字母
|
||||
if (letters) {
|
||||
return letters[letters.length - 1] // 返回最后一个字母
|
||||
}
|
||||
return ''
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user