├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── logo.png
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
├── prod.env.js
└── test.env.js
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.less
├── App.vue
├── assets
│ └── logo.png
├── components
│ ├── examiner
│ │ ├── examiner.js
│ │ ├── examiner.less
│ │ └── examiner.vue
│ ├── header
│ │ ├── header.js
│ │ ├── header.less
│ │ └── header.vue
│ ├── nav-menu
│ │ ├── NavMenu.js
│ │ ├── nav-menu.less
│ │ └── nav-menu.vue
│ ├── nav-tabs
│ │ ├── NavTabs.js
│ │ ├── nav-tabs.less
│ │ └── nav-tabs.vue
│ └── search-bar
│ │ └── search-bar.vue
├── core
│ └── http.js
├── filters
│ ├── filterJson.js
│ └── filterString.js
├── main.js
├── pages
│ ├── dashboard
│ │ └── dashboard.vue
│ ├── filialeJudgeManage
│ │ ├── filialeJudgeManage.js
│ │ └── filialeJudgeManage.vue
│ ├── filialeJudgeManageAdd
│ │ ├── filialeJudgeManageAdd.js
│ │ └── filialeJudgeManageAdd.vue
│ ├── filialeJudgeManageDetail
│ │ ├── filialeJudgeManageDetail.js
│ │ └── filialeJudgeManageDetail.vue
│ ├── filialeTask
│ │ ├── filialeTask.js
│ │ └── filialeTask.vue
│ ├── filialeTaskDetail
│ │ ├── filialeTaskDetail.js
│ │ └── filialeTaskDetail.vue
│ ├── filialeVerified
│ │ └── filialeVerified.vue
│ ├── filialeVerifiedDetail
│ │ └── filialeVerifiedDetail.vue
│ ├── filialeVerifyManage
│ │ └── filialeVerifyManage.vue
│ ├── filialeVerifyManageDetail
│ │ ├── filialeVerifyManageDetail.js
│ │ └── filialeVerifyManageDetail.vue
│ ├── indexDefinition
│ │ ├── indexDefinition.js
│ │ └── indexDefinition.vue
│ ├── indexExpression
│ │ └── indexExpression.vue
│ ├── judgeDetail
│ │ └── judgeDetail.vue
│ ├── judgeDetailFiliale
│ │ ├── judgeDetailFiliale.js
│ │ └── judgeDetailFiliale.vue
│ ├── judgeDimension
│ │ ├── judgeDimension.js
│ │ └── judgeDimension.vue
│ ├── judgeFiliale
│ │ └── judgeFiliale.vue
│ ├── judgeManageFiliale
│ │ ├── judgeManageFiliale.js
│ │ └── judgeManageFiliale.vue
│ ├── judgeManagePerson
│ │ └── judgeManagePerson.vue
│ ├── judgeMethod
│ │ ├── judgeMethod.js
│ │ └── judgeMethod.vue
│ ├── judgePerson
│ │ ├── judgePerson.js
│ │ └── judgePerson.vue
│ ├── judgePersonDetail
│ │ └── judgePersonDetail.vue
│ ├── launchJudgeFiliale
│ │ └── launchJudgeFiliale.vue
│ ├── launchJudgePerson
│ │ └── launchJudgePerson.vue
│ ├── login
│ │ └── login.vue
│ ├── notfind
│ │ └── notfind.vue
│ ├── page1
│ │ ├── page1.js
│ │ └── page1.vue
│ ├── page3
│ │ ├── page3.js
│ │ └── page3.vue
│ ├── page4
│ │ ├── page4.js
│ │ └── page4.vue
│ ├── pages.vue
│ ├── personJudgeAdd
│ │ └── personJudgeAdd.vue
│ ├── personJudgeDetail
│ │ └── personJudgeDetail.vue
│ ├── personJudgeManage
│ │ └── personJudgeManage.vue
│ ├── personTask
│ │ └── personTask.vue
│ ├── personTaskDetail
│ │ └── personTaskDetail.vue
│ ├── personToVerifyDetail
│ │ └── personToVerifyDetail.vue
│ ├── personVerified
│ │ └── personVerified.vue
│ ├── personVerifiedDetail
│ │ └── personVerifiedDetail.vue
│ ├── personVerifyManage
│ │ └── personVerifyManage.vue
│ └── selfJudgePerson
│ │ └── selfJudgePerson.vue
├── router
│ └── index.js
├── theme
│ ├── alert.css
│ ├── aside.css
│ ├── autocomplete.css
│ ├── badge.css
│ ├── base.css
│ ├── breadcrumb-item.css
│ ├── breadcrumb.css
│ ├── button-group.css
│ ├── button.css
│ ├── card.css
│ ├── carousel-item.css
│ ├── carousel.css
│ ├── cascader.css
│ ├── checkbox-button.css
│ ├── checkbox-group.css
│ ├── checkbox.css
│ ├── col.css
│ ├── collapse-item.css
│ ├── collapse.css
│ ├── color-picker.css
│ ├── container.css
│ ├── date-picker.css
│ ├── dialog.css
│ ├── display.css
│ ├── dropdown-item.css
│ ├── dropdown-menu.css
│ ├── dropdown.css
│ ├── fonts
│ │ ├── element-icons.ttf
│ │ └── element-icons.woff
│ ├── footer.css
│ ├── form-item.css
│ ├── form.css
│ ├── header.css
│ ├── icon.css
│ ├── index.css
│ ├── input-number.css
│ ├── input.css
│ ├── loading.css
│ ├── main.css
│ ├── menu-item-group.css
│ ├── menu-item.css
│ ├── menu.css
│ ├── message-box.css
│ ├── message.css
│ ├── notification.css
│ ├── option-group.css
│ ├── option.css
│ ├── pagination.css
│ ├── popover.css
│ ├── popper.css
│ ├── progress.css
│ ├── radio-button.css
│ ├── radio-group.css
│ ├── radio.css
│ ├── rate.css
│ ├── reset.css
│ ├── row.css
│ ├── scrollbar.css
│ ├── select-dropdown.css
│ ├── select.css
│ ├── slider.css
│ ├── spinner.css
│ ├── step.css
│ ├── steps.css
│ ├── submenu.css
│ ├── switch.css
│ ├── tab-pane.css
│ ├── table-column.css
│ ├── table.css
│ ├── tabs.css
│ ├── tag.css
│ ├── time-picker.css
│ ├── time-select.css
│ ├── tooltip.css
│ ├── transfer.css
│ ├── tree.css
│ └── upload.css
└── vuex
│ └── store.js
├── static
├── .gitkeep
└── iconfont
│ ├── demo.css
│ ├── demo_fontclass.html
│ ├── demo_symbol.html
│ ├── demo_unicode.html
│ ├── iconfont.css
│ ├── iconfont.eot
│ ├── iconfont.js
│ ├── iconfont.svg
│ ├── iconfont.ttf
│ └── iconfont.woff
├── test
├── e2e
│ ├── custom-assertions
│ │ └── elementCount.js
│ ├── nightwatch.conf.js
│ ├── runner.js
│ └── specs
│ │ └── test.js
└── unit
│ ├── .eslintrc
│ ├── jest.conf.js
│ ├── setup.js
│ └── specs
│ └── HelloWorld.spec.js
└── 需求点.md
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"],
12 | "env": {
13 | "test": {
14 | "presets": ["env", "stage-2"],
15 | "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node"]
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 | /test/unit/coverage/
6 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | extends: [
12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
14 | 'plugin:vue/essential',
15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
16 | 'standard'
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue'
21 | ],
22 | // add your custom rules here
23 | rules: {
24 | // allow async-await
25 | 'generator-star-spacing': 'off',
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | /test/unit/coverage/
8 | /test/e2e/reports/
9 | selenium-debug.log
10 |
11 | # Editor directories and files
12 | .idea
13 | .vscode
14 | *.suo
15 | *.ntvs*
16 | *.njsproj
17 | *.sln
18 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # my-project
2 |
3 | > A Vue.js project
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # build for production and view the bundle analyzer report
18 | npm run build --report
19 |
20 | # run unit tests
21 | npm run unit
22 |
23 | # run e2e tests
24 | npm run e2e
25 |
26 | # run all tests
27 | npm test
28 | ```
29 |
30 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
31 |
32 | > 该系统为某公司个人绩效考评系统
33 |
34 | > 两个人完成所有前端开发,采用vue—axios,从零开始
35 |
36 | ### 规范
37 | 1. 每个页面的大表格用getData()请求。其他需要子啊初始化就要请求的东西,都用get+名字 来请求(大部分post请求不在此列),以上这些请求,写在created里面
38 | 2. 翻页组件里面,当前页用currentPage,总条数用total
39 | 3. 表格渲染
40 | - 表格的表头用以下这种形式
41 |
42 | ```
43 | // 在 js 文件里面,初始化表格头
44 | tableThead:[
45 | {name:'指标名称',value:'Indicator_name'},
46 | {name:'指标定义',value:'Indicator_define'},
47 | {name:'统计方式',value:'Indicator_count_method'},
48 | {name:'启用状态',value:'statue'},
49 | ]
50 | ```
51 | - 在 vue 文件里面循环表头
52 |
53 | ```
54 |
59 |
60 | ```
61 | 4. 请求错误提示统一采用可关闭的 [this.$message](http://element-cn.eleme.io/?#/zh-CN/component/message#ke-guan-bi "this.$message") (在core模块封装,不需要再各个页面处理错误数据)
62 |
63 | 5. 搜索栏的搜索表单对象都为 tableSearch
64 |
65 | 6. 分页规范
66 |
67 | ```
68 |
76 |
77 | ```
78 | ```
79 | page:{
80 | start_index:1,
81 | total:100
82 | },
83 | currentPage:1,
84 | total:1000,
85 | timeOut:null,
86 | pageNumber:[10,25,50,100]
87 | // page -> 需要传给后台的
88 | // currentPage -> 当前页码
89 | // total -> 总数据条数,需从后台取
90 | // timeOut -> 定时器,用来清除翻页导致的重复请求
91 | // pageNumber -> 可选的 每页展示多少条数据
92 | ```
93 | ```
94 | sizeChange(total){
95 | this.page.total = total
96 | this.getData()
97 | },
98 | currentChange(currentPage){
99 | this.page.start_index = currentPage
100 | this.getData()
101 | }
102 | ```
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const chalk = require('chalk')
3 | const semver = require('semver')
4 | const packageConfig = require('../package.json')
5 | const shell = require('shelljs')
6 |
7 | function exec (cmd) {
8 | return require('child_process').execSync(cmd).toString().trim()
9 | }
10 |
11 | const versionRequirements = [
12 | {
13 | name: 'node',
14 | currentVersion: semver.clean(process.version),
15 | versionRequirement: packageConfig.engines.node
16 | }
17 | ]
18 |
19 | if (shell.which('npm')) {
20 | versionRequirements.push({
21 | name: 'npm',
22 | currentVersion: exec('npm --version'),
23 | versionRequirement: packageConfig.engines.npm
24 | })
25 | }
26 |
27 | module.exports = function () {
28 | const warnings = []
29 |
30 | for (let i = 0; i < versionRequirements.length; i++) {
31 | const mod = versionRequirements[i]
32 |
33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34 | warnings.push(mod.name + ': ' +
35 | chalk.red(mod.currentVersion) + ' should be ' +
36 | chalk.green(mod.versionRequirement)
37 | )
38 | }
39 | }
40 |
41 | if (warnings.length) {
42 | console.log('')
43 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
44 | console.log()
45 |
46 | for (let i = 0; i < warnings.length; i++) {
47 | const warning = warnings[i]
48 | console.log(' ' + warning)
49 | }
50 |
51 | console.log()
52 | process.exit(1)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/build/logo.png
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const config = require('../config')
4 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
5 | const packageConfig = require('../package.json')
6 |
7 | exports.assetsPath = function (_path) {
8 | const assetsSubDirectory = process.env.NODE_ENV === 'production'
9 | ? config.build.assetsSubDirectory
10 | : config.dev.assetsSubDirectory
11 |
12 | return path.posix.join(assetsSubDirectory, _path)
13 | }
14 |
15 | exports.cssLoaders = function (options) {
16 | options = options || {}
17 |
18 | const cssLoader = {
19 | loader: 'css-loader',
20 | options: {
21 | sourceMap: options.sourceMap
22 | }
23 | }
24 |
25 | const postcssLoader = {
26 | loader: 'postcss-loader',
27 | options: {
28 | sourceMap: options.sourceMap
29 | }
30 | }
31 |
32 | // generate loader string to be used with extract text plugin
33 | function generateLoaders (loader, loaderOptions) {
34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35 |
36 | if (loader) {
37 | loaders.push({
38 | loader: loader + '-loader',
39 | options: Object.assign({}, loaderOptions, {
40 | sourceMap: options.sourceMap
41 | })
42 | })
43 | }
44 |
45 | // Extract CSS when that option is specified
46 | // (which is the case during production build)
47 | if (options.extract) {
48 | return ExtractTextPlugin.extract({
49 | use: loaders,
50 | fallback: 'vue-style-loader'
51 | })
52 | } else {
53 | return ['vue-style-loader'].concat(loaders)
54 | }
55 | }
56 |
57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
58 | return {
59 | css: generateLoaders(),
60 | postcss: generateLoaders(),
61 | less: generateLoaders('less'),
62 | sass: generateLoaders('sass', { indentedSyntax: true }),
63 | scss: generateLoaders('sass'),
64 | stylus: generateLoaders('stylus'),
65 | styl: generateLoaders('stylus')
66 | }
67 | }
68 |
69 | // Generate loaders for standalone style files (outside of .vue)
70 | exports.styleLoaders = function (options) {
71 | const output = []
72 | const loaders = exports.cssLoaders(options)
73 |
74 | for (const extension in loaders) {
75 | const loader = loaders[extension]
76 | output.push({
77 | test: new RegExp('\\.' + extension + '$'),
78 | use: loader
79 | })
80 | }
81 |
82 | return output
83 | }
84 |
85 | exports.createNotifierCallback = () => {
86 | const notifier = require('node-notifier')
87 |
88 | return (severity, errors) => {
89 | if (severity !== 'error') return
90 |
91 | const error = errors[0]
92 | const filename = error.file && error.file.split('!').pop()
93 |
94 | notifier.notify({
95 | title: packageConfig.name,
96 | message: severity + ': ' + error.name,
97 | subtitle: filename || '',
98 | icon: path.join(__dirname, 'logo.png')
99 | })
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const config = require('../config')
5 | const vueLoaderConfig = require('./vue-loader.conf')
6 |
7 | function resolve (dir) {
8 | return path.join(__dirname, '..', dir)
9 | }
10 |
11 | const createLintingRule = () => ({
12 | test: /\.(js|vue)$/,
13 | loader: 'eslint-loader',
14 | enforce: 'pre',
15 | include: [resolve('src'), resolve('test')],
16 | options: {
17 | formatter: require('eslint-friendly-formatter'),
18 | emitWarning: !config.dev.showEslintErrorsInOverlay
19 | }
20 | })
21 |
22 | module.exports = {
23 | // devtool: 'cheap-module-eval-source-map',
24 | context: path.resolve(__dirname, '../'),
25 | entry: {
26 | app: './src/main.js'
27 | },
28 | output: {
29 | path: config.build.assetsRoot,
30 | filename: '[name].js',
31 | publicPath: process.env.NODE_ENV === 'production'
32 | ? config.build.assetsPublicPath
33 | : config.dev.assetsPublicPath
34 | },
35 | resolve: {
36 | extensions: ['.js', '.vue', '.json','.less'],
37 | alias: {
38 | 'vue$': 'vue/dist/vue.esm.js',
39 | '@': resolve('src'),
40 | }
41 | },
42 | module: {
43 | rules: [
44 | // ...(config.dev.useEslint ? [createLintingRule()] : []),
45 | {
46 | test: /\.vue$/,
47 | loader: 'vue-loader',
48 | options: vueLoaderConfig
49 | },
50 | {
51 | test: /\.js$/,
52 | loader: 'babel-loader',
53 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
54 | },
55 | {
56 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
57 | loader: 'url-loader',
58 | options: {
59 | limit: 10000,
60 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
61 | }
62 | },
63 | {
64 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
65 | loader: 'url-loader',
66 | options: {
67 | limit: 10000,
68 | name: utils.assetsPath('media/[name].[hash:7].[ext]')
69 | }
70 | },
71 | {
72 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
73 | loader: 'url-loader',
74 | options: {
75 | limit: 10000,
76 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
77 | }
78 | },
79 | {
80 | test:/\.less$/,
81 | loader:"less-loader"
82 | }
83 | ]
84 | },
85 | node: {
86 | // prevent webpack from injecting useless setImmediate polyfill because Vue
87 | // source contains it (although only uses it if it's native).
88 | setImmediate: false,
89 | // prevent webpack from injecting mocks to Node native modules
90 | // that does not make sense for the client
91 | dgram: 'empty',
92 | fs: 'empty',
93 | net: 'empty',
94 | tls: 'empty',
95 | child_process: 'empty'
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const webpack = require('webpack')
4 | const config = require('../config')
5 | const merge = require('webpack-merge')
6 | const path = require('path')
7 | const baseWebpackConfig = require('./webpack.base.conf')
8 | const CopyWebpackPlugin = require('copy-webpack-plugin')
9 | const HtmlWebpackPlugin = require('html-webpack-plugin')
10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
11 | const portfinder = require('portfinder')
12 |
13 | const HOST = process.env.HOST
14 | const PORT = process.env.PORT && Number(process.env.PORT)
15 |
16 | const devWebpackConfig = merge(baseWebpackConfig, {
17 | module: {
18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
19 | },
20 | // cheap-module-eval-source-map is faster for development
21 | devtool: config.dev.devtool,
22 |
23 | // these devServer options should be customized in /config/index.js
24 | devServer: {
25 | clientLogLevel: 'warning',
26 | historyApiFallback: {
27 | rewrites: [
28 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
29 | ],
30 | },
31 | hot: true,
32 | contentBase: false, // since we use CopyWebpackPlugin.
33 | compress: true,
34 | host: HOST || config.dev.host,
35 | port: PORT || config.dev.port,
36 | open: config.dev.autoOpenBrowser,
37 | overlay: config.dev.errorOverlay
38 | ? { warnings: false, errors: true }
39 | : false,
40 | publicPath: config.dev.assetsPublicPath,
41 | proxy: config.dev.proxyTable,
42 | quiet: true, // necessary for FriendlyErrorsPlugin
43 | watchOptions: {
44 | poll: config.dev.poll,
45 | }
46 | },
47 | plugins: [
48 | new webpack.DefinePlugin({
49 | 'process.env': require('../config/dev.env')
50 | }),
51 | new webpack.HotModuleReplacementPlugin(),
52 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
53 | new webpack.NoEmitOnErrorsPlugin(),
54 | // https://github.com/ampedandwired/html-webpack-plugin
55 | new HtmlWebpackPlugin({
56 | filename: 'index.html',
57 | template: 'index.html',
58 | inject: true
59 | }),
60 | // copy custom static assets
61 | new CopyWebpackPlugin([
62 | {
63 | from: path.resolve(__dirname, '../static'),
64 | to: config.dev.assetsSubDirectory,
65 | ignore: ['.*']
66 | }
67 | ])
68 | ]
69 | })
70 |
71 | module.exports = new Promise((resolve, reject) => {
72 | portfinder.basePort = process.env.PORT || config.dev.port
73 | portfinder.getPort((err, port) => {
74 | if (err) {
75 | reject(err)
76 | } else {
77 | // publish the new Port, necessary for e2e tests
78 | process.env.PORT = port
79 | // add port to devServer config
80 | devWebpackConfig.devServer.port = port
81 |
82 | // Add FriendlyErrorsPlugin
83 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
84 | compilationSuccessInfo: {
85 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
86 | },
87 | onErrors: config.dev.notifyOnErrors
88 | ? utils.createNotifierCallback()
89 | : undefined
90 | }))
91 |
92 | resolve(devWebpackConfig)
93 | }
94 | })
95 | })
96 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {
14 | '/api/': {
15 | target: 'http://10.10.16.110:3400/api/',
16 | changeOrigin: true,
17 | pathRewrite:{
18 | '^/api/':''
19 | }
20 | },
21 | },
22 |
23 | // Various Dev Server settings
24 | host: 'localhost', // can be overwritten by process.env.HOST
25 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
26 | autoOpenBrowser: false,
27 | errorOverlay: true,
28 | notifyOnErrors: true,
29 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
30 |
31 | // Use Eslint Loader?
32 | // If true, your code will be linted during bundling and
33 | // linting errors and warnings will be shown in the console.
34 | useEslint: true,
35 | // If true, eslint errors and warnings will also be shown in the error overlay
36 | // in the browser.
37 | showEslintErrorsInOverlay: false,
38 |
39 | /**
40 | * Source Maps
41 | */
42 |
43 | // https://webpack.js.org/configuration/devtool/#development
44 | devtool: 'cheap-module-eval-source-map',
45 |
46 | // If you have problems debugging vue-files in devtools,
47 | // set this to false - it *may* help
48 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
49 | cacheBusting: true,
50 |
51 | cssSourceMap: true
52 | },
53 |
54 | build: {
55 | // Template for index.html
56 | index: path.resolve(__dirname, '../dist/index.html'),
57 |
58 | // Paths
59 | assetsRoot: path.resolve(__dirname, '../dist'),
60 | assetsSubDirectory: 'static',
61 | assetsPublicPath: '/',
62 |
63 | /**
64 | * Source Maps
65 | */
66 |
67 | productionSourceMap: true,
68 | // https://webpack.js.org/configuration/devtool/#production
69 | devtool: '#source-map',
70 |
71 | // Gzip off by default as many popular static hosts such as
72 | // Surge or Netlify already gzip all static assets for you.
73 | // Before setting to `true`, make sure to:
74 | // npm install --save-dev compression-webpack-plugin
75 | productionGzip: false,
76 | productionGzipExtensions: ['js', 'css'],
77 |
78 | // Run the build command with an extra argument to
79 | // View the bundle analyzer report after build finishes:
80 | // `npm run build --report`
81 | // Set to `true` or `false` to always turn it on or off
82 | bundleAnalyzerReport: process.env.npm_config_report
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/config/test.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const devEnv = require('./dev.env')
4 |
5 | module.exports = merge(devEnv, {
6 | NODE_ENV: '"testing"'
7 | })
8 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | my-project
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-project",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "喻博文 <747137830@qq.com>",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "unit": "jest --config test/unit/jest.conf.js --coverage",
11 | "e2e": "node test/e2e/runner.js",
12 | "test": "npm run unit && npm run e2e",
13 | "lint": "eslint --ext .js,.vue src test/unit test/e2e/specs",
14 | "build": "node build/build.js"
15 | },
16 | "dependencies": {
17 | "axios": "^0.18.0",
18 | "less": "^3.0.2",
19 | "less-loader": "^4.1.0",
20 | "vue": "^2.5.2",
21 | "vue-router": "^3.0.1"
22 | },
23 | "devDependencies": {
24 | "autoprefixer": "^7.1.2",
25 | "babel-core": "^6.22.1",
26 | "babel-eslint": "^8.2.1",
27 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
28 | "babel-jest": "^21.0.2",
29 | "babel-loader": "^7.1.1",
30 | "babel-plugin-dynamic-import-node": "^1.2.0",
31 | "babel-plugin-syntax-jsx": "^6.18.0",
32 | "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0",
33 | "babel-plugin-transform-runtime": "^6.22.0",
34 | "babel-plugin-transform-vue-jsx": "^3.5.0",
35 | "babel-preset-env": "^1.3.2",
36 | "babel-preset-stage-2": "^6.22.0",
37 | "babel-register": "^6.22.0",
38 | "chalk": "^2.0.1",
39 | "chromedriver": "^2.27.2",
40 | "copy-webpack-plugin": "^4.0.1",
41 | "cross-spawn": "^5.0.1",
42 | "css-loader": "^0.28.0",
43 | "element-ui": "^2.0.0-rc.1",
44 | "eslint": "^4.15.0",
45 | "eslint-config-standard": "^10.2.1",
46 | "eslint-friendly-formatter": "^3.0.0",
47 | "eslint-loader": "^1.7.1",
48 | "eslint-plugin-import": "^2.7.0",
49 | "eslint-plugin-node": "^5.2.0",
50 | "eslint-plugin-promise": "^3.4.0",
51 | "eslint-plugin-standard": "^3.0.1",
52 | "eslint-plugin-vue": "^4.0.0",
53 | "extract-text-webpack-plugin": "^3.0.0",
54 | "file-loader": "^1.1.4",
55 | "friendly-errors-webpack-plugin": "^1.6.1",
56 | "html-webpack-plugin": "^2.30.1",
57 | "jest": "^22.0.4",
58 | "jest-serializer-vue": "^0.3.0",
59 | "nightwatch": "^0.9.12",
60 | "node-notifier": "^5.1.2",
61 | "optimize-css-assets-webpack-plugin": "^3.2.0",
62 | "ora": "^1.2.0",
63 | "portfinder": "^1.0.13",
64 | "postcss-import": "^11.0.0",
65 | "postcss-loader": "^2.0.8",
66 | "postcss-url": "^7.2.1",
67 | "rimraf": "^2.6.0",
68 | "selenium-server": "^3.0.1",
69 | "semver": "^5.3.0",
70 | "shelljs": "^0.7.6",
71 | "uglifyjs-webpack-plugin": "^1.1.1",
72 | "url-loader": "^0.5.8",
73 | "vue-jest": "^1.0.2",
74 | "vue-loader": "^13.3.0",
75 | "vue-style-loader": "^3.0.1",
76 | "vue-template-compiler": "^2.5.2",
77 | "vuex": "^3.0.1",
78 | "webpack": "^3.6.0",
79 | "webpack-bundle-analyzer": "^2.9.0",
80 | "webpack-dev-server": "^2.9.1",
81 | "webpack-merge": "^4.1.0"
82 | },
83 | "engines": {
84 | "node": ">= 6.0.0",
85 | "npm": ">= 3.0.0"
86 | },
87 | "browserslist": [
88 | "> 1%",
89 | "last 2 versions",
90 | "not ie <= 8"
91 | ]
92 | }
93 |
--------------------------------------------------------------------------------
/src/App.less:
--------------------------------------------------------------------------------
1 | html,body{
2 | margin:0px;
3 | padding:0px;
4 | height: 100%;
5 | overflow: hidden;
6 | }
7 | html,body,div,ul,li,ol{
8 | box-sizing: border-box
9 | }
10 |
11 | #app {
12 | font-family: 'Avenir', Helvetica, Arial, sans-serif;
13 | -webkit-font-smoothing: antialiased;
14 | -moz-osx-font-smoothing: grayscale;
15 | color: #2c3e50;
16 | height: 100%;
17 | overflow: hidden;
18 | }
19 |
20 | .fl{float: left;}
21 | .fr{float: right;}
22 | .clear:before, .clear:after {content: ""; display: table;}
23 | .clear:after {clear: both;}
24 | .clear{*zoom: 1;overflow: hidden;}
25 | .child-float li{float: left;padding-right: 30px;}
26 | .disN{display: none!important;}
27 | .over-hidden{overflow: hidden;}
28 | .border-right{border-right: solid 1px #e6e6e6}
29 | ul,ol,li{list-style: none;}
30 | a{text-decoration: none;color:#000}
31 |
32 | // 变量
33 | .text-center{
34 | text-align: center;
35 | }
36 | @borderColor:#d8dce5;
37 | @buttonColor:#b09573;
38 | @buttonFocusColor:#a2835c;
39 |
40 | // 按钮样式
41 | button.el-button--primary{
42 | border-color:@buttonColor;
43 | background:@buttonColor;
44 | &:focus,&:hover{
45 | background:@buttonFocusColor;
46 | border-color:@buttonFocusColor;
47 | }
48 | }
49 | // 首个tab不可关闭
50 | .el-tabs__nav > div:first-child > span{
51 | display: none;
52 | }
53 |
54 | // 横条,透明
55 | .main-space{
56 | height: 20px;
57 | background: transparent;
58 | }
59 | // 通用搜索表单域
60 | form.el-form{
61 | position: relative;
62 | .el-form-item{
63 | width: 20%;
64 | }
65 | .open-dialog{
66 | width: 20%;
67 | position: absolute;
68 | right: 0;
69 | top: 0;
70 | text-align: right;
71 | }
72 | .el-form-item.is-success .el-input__inner{
73 | border-color:@borderColor;
74 | }
75 | }
76 | // 通用表格样式
77 | table[class^='el-table']{
78 | th,td{
79 | .text-center
80 | }
81 | }
82 | // 通用分页样式
83 | .el-pagination{
84 | .text-center;
85 | }
86 | // 通用弹窗样式
87 | .performance-dialog{
88 | form.demo-ruleForm{
89 | width: 420px;
90 | .el-form-item{
91 | width: auto;
92 | }
93 | }
94 | .el-dialog{
95 | margin-top: 0!important;
96 | top: 50%;
97 | transform: translateY(-50%)
98 | }
99 | }
100 | // 通用返回样式
101 | .back-page{
102 | padding:40px
103 | }
104 | // 通用表格下的表单
105 | .follow-table{
106 | border:1px solid #bebebe;
107 | border-top: 0;
108 | padding:10px 20px;
109 | form.el-form{
110 | .el-form-item{
111 | width: 100%
112 | }
113 | .el-form-item.is-success{
114 | .el-input__inner,.el-textarea__inner{
115 | border-color:@borderColor;
116 | }
117 | }
118 | }
119 | }
120 | .el-form-item.is-success .el-input__validateIcon{
121 | display: none;
122 | }
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
17 |
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/examiner/examiner.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | examinerList: [
5 | {name: 'qq'}
6 | ],
7 | plusShow: true, // 添加考评人+是否显示
8 | tableObject:{}, // 下载
9 | // outerVisible: this.item,
10 | innerVisible: false,// 二级弹框
11 | valuedate: '',
12 | fileList: [], // 上传文件列表
13 | gridData: [ // 考评人列表
14 | {
15 | index: '2016-05-02',
16 | name2: '王小虎',
17 | name3: '上海市普陀区金沙江路 1518 弄',
18 | name4: '2016-05-04'
19 | },
20 | {
21 | index: '2016-05-02',
22 | name2: '王小虎',
23 | name3: '上海市普陀区金沙江路 1518 弄',
24 | name4: '2016-05-04'
25 | },
26 | {
27 | index: '2016-05-02',
28 | name2: '王小虎',
29 | name3: '上海市普陀区金沙江路 1518 弄',
30 | name4: '2016-05-04'
31 | },
32 | {
33 | index: '2016-05-02',
34 | name2: '王小虎',
35 | name3: '上海市普陀区金沙江路 1518 弄',
36 | name4: '2016-05-04'
37 | },
38 | ],
39 | };
40 | },
41 | props:['obj'], // 组件传值
42 | methods: {
43 | // 删除考评人
44 | deleteExaminer(index) {
45 | this.examinerList.splice(index,1);
46 | this.plusShow = true
47 | },
48 | // 下载
49 | download() {
50 |
51 | },
52 | // 导入excel
53 | importData() {
54 |
55 | },
56 | // 当前选中第几行
57 | setCurrent(row) {
58 | this.$refs.singleTable.setCurrentRow(row);
59 | },
60 | // 考评人单选
61 | handleCurrentChange(val) {
62 | this.currentRow = val;
63 | this.innerVisible = false;
64 | // 添加考评人
65 | this.dialogVisible2 = true
66 | if(this.examinerList.length < 4) {
67 | this.examinerList.push({name:this.currentRow.name2});
68 | }
69 | if(this.examinerList.length == 4) {
70 | this.plusShow = false
71 | console.log(this.plusShow)
72 | }
73 | },
74 | },
75 | created(){
76 |
77 | console.log(this.item)
78 | },
79 |
80 | }
--------------------------------------------------------------------------------
/src/components/examiner/examiner.less:
--------------------------------------------------------------------------------
1 | .item-examiner {
2 | float: left;
3 | }
4 | .examiner {
5 | float: left;
6 | width: 35px;
7 | height: 35px;
8 | border-radius: 50%;
9 | border: 1px solid #ddd;
10 | position: relative;
11 | }
12 | .el-icon-error {
13 | position: absolute;
14 | top: -4px;
15 | right: -4px;
16 | cursor: pointer;
17 | }
18 | .el-icon-back {
19 | margin: 0 5px;
20 | transform:rotate(180deg);
21 | -ms-transform:rotate(180deg); /* IE 9 */
22 | -moz-transform:rotate(180deg); /* Firefox */
23 | -webkit-transform:rotate(180deg); /* Safari 和 Chrome */
24 | -o-transform:rotate(180deg);
25 | }
26 | .el-icon-plus {
27 | margin-left: 9px;
28 | }
29 | .plus-examiner {
30 | cursor: pointer;
31 | border: 1px dotted #ddd;
32 | }
33 | .examiner-name {
34 | text-align: center;
35 | }
--------------------------------------------------------------------------------
/src/components/examiner/examiner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 下载
17 |
18 |
19 |
26 | 导入数据
27 |
28 |
29 |
30 |
31 |
32 |
33 |
{{item.name.substr(0,2)}}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 发起考核
43 |
44 |
45 |
46 | 请选择流转人员 后续流程环节:业务录入
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
63 |
66 |
--------------------------------------------------------------------------------
/src/components/header/header.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'my-header',
3 | data() {
4 | return {
5 | msg:'lkjhgfhj'
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/src/components/header/header.less:
--------------------------------------------------------------------------------
1 | .headers{
2 | text-align: left;
3 | background: yellow;
4 | height: 80px;
5 | span{
6 | font-size: 20px;
7 | }
8 | }
--------------------------------------------------------------------------------
/src/components/header/header.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
14 |
15 |
16 |
19 |
--------------------------------------------------------------------------------
/src/components/nav-menu/NavMenu.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'navMenu',
3 | data:function() {
4 | return {
5 | routerNavslist:[],
6 | routerName: {},
7 | isCollapse:false,
8 | defaultActiveNow:''
9 | }
10 | },
11 | methods: {
12 | handleOpen(key, keyPath) {
13 | console.log(key, keyPath);
14 | },
15 | handleClose(key, keyPath) {
16 | console.log(key, keyPath);
17 | },
18 | add(routerName){
19 | this.routerName = routerName
20 | this.$router.push({path:routerName.url})
21 | this.$store.commit('setRouterName',routerName)
22 | },
23 | getData(){
24 | let url = this.$route.path.replace('Detail','').replace('Add','').replace('Check','')
25 | console.log(url);
26 |
27 | setTimeout(()=>{
28 | this.routerNavslist = [
29 | {
30 | name:'一级菜单1',
31 | children:[
32 | {name:'/dashboard',url:'/dashboard',title:'首页'},
33 | {name:'/page1',url:'/page1',title:'页面1'},
34 | {name:'/page3',url:'/page3',title:'页面3'},
35 | ]
36 | },
37 | {
38 | name:'考核任务管理',
39 | children:[
40 | {name:'/filialeTask',url:'/filialeTask',title:'分公司任务管理'},
41 | {name:'/personTask',url:'/personTask',title:'客户经理任务管理'},
42 | ]
43 | },
44 | {
45 | name:'考核管理',
46 | children:[
47 | {name:'/judgeManageFiliale',url:'/judgeManageFiliale',title:'考核管理-分公司'},
48 | {name:'/judgeManagePerson',url:'/judgeManagePerson',title:'考核管理-个人'}
49 | ]
50 | },
51 | {
52 | name:'考核方案配置',
53 | children:[
54 | {name:'/page4',url:'/page4',title:'页面4'},
55 | {name:'/indexDefinition',url:'/indexDefinition',title:'指标定义维护'},
56 | {name:'/judgeMethod',url:'/judgeMethod',title:'考核办法维护'},
57 | {name:'/judgeDimension',url:'/judgeDimension',title:'考核维度维护'},
58 | {name:'/judgeDetail',url:'/judgeDetail',title:'考核细项维护'},
59 | {name:'/filialeJudgeManage',url:'/filialeJudgeManage',title:'分公司考核方案管理'},
60 | ]
61 | },
62 | {
63 | name:'考核方案审核',
64 | children:[
65 | {name:'/filialeVerifyManage',url:'/filialeVerifyManage',title:'分公司考核方案管理'},
66 | // {name:'/filialeVerifyManageDetail',url:'/filialeVerifyManageDetail',title:'分公司考核方案-审核'},
67 | ]
68 | },
69 |
70 |
71 | ]
72 | let activePage = {}
73 | this.routerNavslist.find((item)=>{
74 | activePage = item.children.find(list=>list.url == url)
75 | if(activePage){
76 | return true
77 | }
78 | })
79 | setTimeout(() => {
80 | this.defaultActiveNow = activePage.url
81 | }, 0);
82 | console.log(activePage);
83 | this.$store.commit('setRouterName',activePage)
84 | // this.$store.commit('sendRouters',this.routerNavslist)
85 | },100)
86 | }
87 | },
88 | created(){
89 | this.getData()
90 | }
91 | }
--------------------------------------------------------------------------------
/src/components/nav-menu/nav-menu.less:
--------------------------------------------------------------------------------
1 |
2 | .el-menu-vertical-demo:not(.el-menu--collapse) {
3 | // width: 200px;
4 | min-height: 400px;
5 | }
6 |
--------------------------------------------------------------------------------
/src/components/nav-menu/nav-menu.vue:
--------------------------------------------------------------------------------
1 |
2 |
26 |
27 |
28 |
34 |
35 |
36 |
39 |
--------------------------------------------------------------------------------
/src/components/nav-tabs/NavTabs.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'navTabs',
3 | data() {
4 | return {
5 | activeTab: '',
6 | editableTabs2: [{title:'首页',name:'/dashboard',url:'/dashboard'}],
7 | tabIndex: 0,
8 | }
9 | },
10 | methods: {
11 | // 点自己,跳转到对应的路由的页面
12 | jumpToTab() {
13 | this.$router.push({path:this.activeTab})
14 | },
15 | // 移除tab
16 | removeTab(targetName) {
17 | console.log(this.$store.state);
18 | let obj;
19 | let arr = this.$store.state.navTabs;
20 | // 判断是否为当前页
21 | if (targetName == this.activeTab) {
22 | let index = arr.findIndex(item=>item.url == targetName)
23 | obj = arr[index+1] || arr[index-1];
24 | setTimeout(() => {
25 | this.activeTab = obj.url
26 | this.$router.push({path:obj.url})
27 | }, 0);
28 | }else{
29 | this.$router.push({path:targetName})
30 | }
31 | this.$store.commit('deleteRouterName',targetName)
32 |
33 | }
34 |
35 | },
36 | watch:{
37 |
38 | },
39 | computed:{
40 | editableTabs(){
41 | this.activeTab = this.$store.state.routerName.url
42 | return this.$store.state.navTabs
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/src/components/nav-tabs/nav-tabs.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/components/nav-tabs/nav-tabs.less
--------------------------------------------------------------------------------
/src/components/nav-tabs/nav-tabs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
14 |
15 |
16 |
17 |
18 |
19 |
25 |
26 |
27 |
30 |
--------------------------------------------------------------------------------
/src/components/search-bar/search-bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 清除查询条件
8 | 查询
9 |
10 |
11 |
12 |
13 |
14 |
32 |
33 |
--------------------------------------------------------------------------------
/src/core/http.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios'
2 | import message from 'element-ui'
3 | let params = {appppp:1111}
4 | axios.defaults.params = Object.assign({}, params)
5 | // console.log(axios.defaults);
6 | // axios.defaults.baseURL = 'http://192.168.2.1:3000/'
7 | // axios.defaults.baseURL = 'http://10.10.16.110:3400/api/'
8 | axios.interceptors.response.use((response) => {
9 | if(response){
10 | if (response.status == 200) {
11 | return response.data
12 | }
13 | if (response.status == 304) {
14 | console.log('没权限');
15 | return response
16 | }
17 | if(response.state == '0'){
18 | message.Message({
19 | showClose: true,
20 | message: '请求失败',
21 | type: 'error'
22 | });
23 | }
24 | }
25 | return response;
26 | }, function (error) {
27 | message.Message({
28 | showClose: true,
29 | message: '网络原因,请求失败,请检查网络设置',
30 | type: 'error'
31 | });
32 | if (error.response) {
33 | // console.error(error);
34 | }else{
35 | // console.error(error.message);
36 | }
37 | return {}
38 | });
39 | export default axios
--------------------------------------------------------------------------------
/src/filters/filterJson.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | Vue.filter('filterJson', function (value) {
3 | return JSON.stringify(value)
4 | })
--------------------------------------------------------------------------------
/src/filters/filterString.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | Vue.filter('filterString', function (value) {
3 | return value ? 'flag为true' : 'flag为false'
4 | })
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 | import 'element-ui/lib/theme-chalk/index.css'
7 | // import './theme/index.css'
8 | import ElementUI from 'element-ui'
9 | import http from './core/http';
10 | // 自定义过滤器
11 | import filterString from './filters/filterString'
12 | import filterJson from './filters/filterJson'
13 | // 状态管理
14 | import Vuex from 'vuex'
15 | import store from './vuex/store'
16 | // 阻止 vue 在启动时生成生产提示
17 | Vue.config.productionTip = false
18 |
19 | Vue.use(ElementUI,{ size: 'small' })
20 | Vue.use(Vuex)
21 |
22 | console.log('Vue.version:'+Vue.version);
23 | // 需对http进行一些处理
24 | Vue.prototype.$http = http
25 | new Vue({
26 | el: '#app',
27 | router,
28 | store,
29 | components: {
30 | 'App': App,
31 | },
32 | template: '',
33 | render: h => h(App)
34 | })
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/pages/dashboard/dashboard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
24 |
25 |
26 |
51 |
--------------------------------------------------------------------------------
/src/pages/filialeJudgeManage/filialeJudgeManage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | // 搜索参数
5 | tableSearch:{
6 | templete_name:'',
7 | templete_check_statue:0,
8 | statue:0
9 | },
10 | // 表格数据
11 | tableData:[
12 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:1},
13 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:1},
14 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:0},
15 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:0,statue:1},
16 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:1},
17 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:0},
18 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:0,statue:1},
19 | {templete_name:'1',creator_user_id:'1',create_time:'1',templete_name:'111',templete_check_statue:1,statue:1},
20 | ],
21 | tableThead:[
22 | {name:'考核方案名称',value:'templete_name'},
23 | {name:'创建人',value:'creator_user_id'},
24 | {name:'创建时间',value:'create_time'},
25 | {name:'审核状态',value:'templete_check_statue'},
26 | {name:'启用状态',value:'statue'},
27 | ],
28 | // 审核状态
29 | templeteCheckStatueList:[
30 | {name:'未审核',id:0},
31 | {name:'通过',id:2},
32 | {name:'退回',id:1},
33 | ],
34 | // 使用状态
35 | statueList:[
36 | {name:'启用',id:1},
37 | {name:'停用',id:0},
38 | ],
39 | // 翻页
40 | page:{
41 | start_index:1,
42 | total:100
43 | },
44 | currentPage:1,
45 | total:1000,
46 | timeOut:null,
47 | pageNumber:[10,25,50,100]
48 | };
49 | },
50 | methods: {
51 | // 请求表格
52 | getData(type){
53 | let defaultParams = {
54 | start_index: this.page.start_index,
55 | total:this.page.total
56 | }
57 | let params = Object.assign(defaultParams,this.tableSearch)
58 | clearTimeout(this.timeOut)
59 | this.timeOut = setTimeout(() => {
60 | this.$http.get('/api/templeteapi/gettemplete',{params:params}).then((result) => {
61 | console.log(result);
62 | this.arr = result
63 | }).catch((err)=>{
64 |
65 | })
66 | }, 0);
67 | },
68 | // 翻页
69 | sizeChange(total){
70 | this.page.total = total
71 | this.getData()
72 | },
73 | currentChange(currentPage){
74 | this.page.start_index = currentPage
75 | this.getData()
76 | },
77 | // 启用/停用
78 | changeStatue(item){
79 | let params = {
80 | id:item.id,
81 | statue:!item.statue
82 | }
83 | this.$http.post('/api/templeteapi/changetempletestatue',{params:params}).then((result) => {
84 | console.log(result);
85 | this.getData()
86 | }).catch((err)=>{
87 |
88 | })
89 | },
90 | // 去新增页
91 | routerToAdd(){
92 | this.$router.push({path:'/filialeJudgeManageAdd'})
93 | },
94 | // 去详情页
95 | routerToDetail(item){
96 | console.log(item);
97 | this.$router.push({path:'/filialeJudgeManageDetail'})
98 | },
99 | // 清除搜索条件
100 | resetForm(formName){
101 | this.$refs[formName].resetFields()
102 | }
103 | },
104 | created(){
105 | this.getData()
106 | }
107 | }
--------------------------------------------------------------------------------
/src/pages/filialeJudgeManage/filialeJudgeManage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | 清除查询条件
21 | 查询
22 |
23 |
24 | 新增考核方案
25 |
26 |
27 |
28 |
29 |
33 |
38 |
39 |
40 |
41 |
42 |
43 | 查看详情
44 | 启用
45 | 停用
46 | 修改
47 |
48 |
49 |
50 |
51 |
52 |
53 |
61 |
62 |
63 |
64 |
65 |
71 |
72 |
73 |
76 |
--------------------------------------------------------------------------------
/src/pages/filialeJudgeManageAdd/filialeJudgeManageAdd.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 允许评分超过基础分支
10 |
11 |
12 | 新增
13 |
14 |
15 |
16 |
17 |
22 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
36 |
37 |
40 |
41 |
44 |
45 |
46 |
47 |
50 | 删除行
53 |
54 |
55 |
56 |
57 | 返回
58 | 提交
59 |
60 |
61 |
62 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | 确认
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
98 |
99 |
100 |
103 |
--------------------------------------------------------------------------------
/src/pages/filialeJudgeManageDetail/filialeJudgeManageDetail.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | tableData3: [{
5 | name1: '2016-05-03',
6 | name2: '王小虎1',
7 | name3: '上海',
8 | name4: '普陀区',
9 | name5: '上海市普陀区金沙江路 1518 弄',
10 | span:2
11 | },
12 | {
13 | name1: '2016-05-03',
14 | name2: '王小虎1',
15 | name3: '上海',
16 | name4: '普陀区',
17 | name5: '上海市普陀区金沙江路 1518 弄',
18 | span:0
19 | },
20 | {
21 | name1: '2016-05-04',
22 | name2: '王小虎1',
23 | name3: '上海',
24 | name4: '普陀区',
25 | name5: '上海市普陀区金沙江路 1518 弄',
26 | span:2
27 | },
28 | {
29 | name1: '2016-05-04',
30 | name2: '王小虎1',
31 | name3: '上海',
32 | name4: '普陀区',
33 | name5: '上海市普陀区金沙江路 1518 弄',
34 | span:0
35 | },
36 | {
37 | name1: '2016-05-05',
38 | name2: '王小虎1',
39 | name3: '上海',
40 | name4: '普陀区',
41 | name5: '上海市普陀区金沙江路 1518 弄',
42 | span:1
43 | },
44 | {
45 | name1: '2016-05-06',
46 | name2: '王小虎1',
47 | name3: '上海',
48 | name4: '普陀区',
49 | name5: '上海市普陀区金沙江路 1518 弄',
50 | span:1
51 | }],
52 |
53 | }
54 |
55 | },
56 | methods: {
57 | getData(){
58 |
59 | },
60 | objectSpanMethod({ row, column, rowIndex, columnIndex }) {
61 | if (columnIndex === 0) {
62 | if(row.span != 0) {
63 | return {
64 | rowspan: row.span,
65 | colspan: 1
66 | };
67 | }else if(row.span == 0){
68 | return {
69 | rowspan: 0,
70 | colspan: 0
71 | };
72 | }
73 | }
74 | },
75 | // 返回
76 | backPage(){
77 | this.$router.push({path:'/filialeJudgeManage'})
78 | }
79 |
80 | }
81 | }
--------------------------------------------------------------------------------
/src/pages/filialeJudgeManageDetail/filialeJudgeManageDetail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
2018年集团考核分公司绩效方案
5 |
6 |
7 |
12 |
15 |
16 |
19 |
20 |
23 |
24 |
27 |
28 |
31 |
32 |
33 |
34 | 返回
35 |
36 |
37 |
38 |
39 |
45 |
46 |
47 |
50 |
--------------------------------------------------------------------------------
/src/pages/filialeTask/filialeTask.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 清除查询条件
23 | 查询
24 |
25 |
26 | 创建新任务
27 |
28 |
29 |
30 |
31 |
35 |
36 | >
37 |
38 |
39 |
40 | 查看详情
41 |
42 | 删除
43 | 分发
44 |
45 |
46 |
47 |
48 |
49 |
50 |
57 |
58 |
59 |
60 |
65 |
66 |
67 |
68 |
69 |
70 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | 下载
84 |
85 |
86 |
93 | 点击上传
94 | 只能上传jpg/png文件,且不超过500kb
95 |
96 |
97 |
98 |
102 |
103 |
104 |
105 |
106 |
112 |
113 |
114 |
117 |
--------------------------------------------------------------------------------
/src/pages/filialeTaskDetail/filialeTaskDetail.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'filialeTaskDetail',
3 | data() {
4 | return {
5 | tableData3:[
6 | {
7 | name1: '2016-05-03',
8 | name2: '王小虎1',
9 | name3: '上海',
10 | name4: '普陀区',
11 | name5: '普陀区',
12 | name6: '普陀区',
13 | name7: '普陀区',
14 | name8: '普陀区',
15 | name9: '普陀区',
16 | name10: '普陀区',
17 | name11: '普陀区',
18 | name12: '普陀区',
19 | name13: '普陀区',
20 | name14: '普陀区',
21 | name15: '上海市普陀区金沙江路 1518 弄',
22 | },
23 |
24 | ],
25 | activeName: 'first2',
26 | yearTask:[
27 | {name:'序号',value:'name1'},
28 | {name:'分公司',value:'name2'},
29 | {name:'全年任务指标',value:'name3'},
30 | {name:'1月任务分解数',value:'name4'},
31 | {name:'2月任务分解数',value:'name5'},
32 | {name:'3月任务分解数',value:'name6'},
33 | {name:'4月任务分解数',value:'name7'},
34 | {name:'5月任务分解数',value:'name8'},
35 | {name:'6月任务分解数',value:'name9'},
36 | {name:'7月任务分解数',value:'name10'},
37 | {name:'8月任务分解数',value:'name11'},
38 | {name:'9月任务分解数',value:'name12'},
39 | {name:'10月任务分解数',value:'name13'},
40 | {name:'11月任务分解数',value:'name14'},
41 | {name:'12月任务分解数',value:'name15'},
42 | ],
43 | financeProduct:[
44 | {name:'序号',value:'name1'},
45 | {name:'分公司',value:'name2'},
46 | {name:'业务量(万)',value:'name3'},
47 | {name:'传统新车(万)',value:'name4'},
48 | {name:'易融贷(万)',value:'name5'},
49 | {name:'公牌私贷(万)',value:'name6'},
50 | {name:'车主贷(万)',value:'name7'},
51 | {name:'融资租赁(万)',value:'name8'},
52 | {name:'二手车(万)',value:'name9'},
53 | ],
54 | bankType:[
55 | {name:'序号',value:'name1'},
56 | {name:'分公司',value:'name2'},
57 | {name:'业务量(万)',value:'name3'},
58 | {name:'宁波工行(万)',value:'name4'},
59 | {name:'安徽工行(万)',value:'name5'},
60 | {name:'建设银行(万)',value:'name6'},
61 | {name:'广东工行(万)',value:'name7'},
62 | {name:'广东工行(万)',value:'name8'},
63 | {name:'其他银行(万)',value:'name9'},
64 | {name:'其他银行(万)',value:'name10'},
65 | ]
66 | }
67 | },
68 | methods: {
69 | backPage(){
70 | this.$router.push({path:'/filialeTask'})
71 | }
72 | },
73 | activated:function(){
74 | console.log(this.$route.query.id);
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/src/pages/filialeTaskDetail/filialeTaskDetail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
2018年集团考核分公司绩效方案
5 |
6 |
7 |
8 |
12 |
17 |
18 |
19 |
20 |
21 |
25 |
30 |
31 |
32 |
33 |
34 |
38 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | 返回
51 |
52 |
53 |
54 |
55 |
61 |
62 |
63 |
66 |
--------------------------------------------------------------------------------
/src/pages/filialeVerified/filialeVerified.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/filialeVerifiedDetail/filialeVerifiedDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/filialeVerifyManage/filialeVerifyManage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 去详情
4 |
5 |
6 |
7 |
8 |
23 |
24 |
25 |
28 |
--------------------------------------------------------------------------------
/src/pages/filialeVerifyManageDetail/filialeVerifyManageDetail.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | // 搜索参数
5 | tableSearch:{
6 |
7 | },
8 | // 表格数据
9 | tableData:[
10 | {name1:'111',name2:'222',name3:'333',name4:'444',status:1},
11 | {name1:'222',name2:'222',name3:'333',name4:'444',status:1},
12 | {name1:'333',name2:'222',name3:'333',name4:'444',status:0},
13 | {name1:'444',name2:'222',name3:'333',name4:'444',status:1},
14 | {name1:'555',name2:'222',name3:'333',name4:'444',status:0},
15 | {name1:'666',name2:'222',name3:'333',name4:'444',status:1},
16 | {name1:'777',name2:'222',name3:'333',name4:'444',status:0},
17 | ],
18 | // 翻页
19 | currentPage4:1,
20 | radio:'1',
21 | textarea3:'',
22 | // flag为 true 时,为详情。false时为考核
23 | flag:true,
24 | dataapp:[
25 | {name:'考核维度',model:'name1'},
26 | {name:'细项指标',model:'name2'},
27 | {name:'基础分值',model:'name3'},
28 | {name:'指标公式',model:'name4'},
29 | {name:'考核办法',model:'status'},
30 | ]
31 |
32 |
33 | };
34 | },
35 | methods: {
36 | backPage(){
37 | this.$router.push({path:'/filialeVerifyManage'})
38 | },
39 | submitTable(){
40 | this.$confirm('提交后将无法修改, 是否继续?', '提示', {
41 | confirmButtonText: '确定',
42 | cancelButtonText: '取消',
43 | type: 'warning'
44 | }).then(() => {
45 | this.$message({
46 | type: 'success',
47 | message: '删除成功!'
48 | });
49 | }).catch(() => {
50 | this.$message({
51 | type: 'info',
52 | message: '已取消删除'
53 | });
54 | });
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/src/pages/filialeVerifyManageDetail/filialeVerifyManageDetail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
2018年集团考核分公司绩效方案
5 |
6 |
7 | - 创建时间:2018-05-21
8 | - 创建人:索尔
9 | - 审批状态:退回
10 | - 退回原因:灭霸当我面,打了个响指
11 |
12 |
13 |
14 |
15 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 通过
31 | 退回
32 |
33 |
34 |
39 |
40 |
41 |
42 |
43 |
44 | 返回
45 | 提交
46 |
47 |
48 |
49 |
50 |
56 |
57 |
58 |
61 |
--------------------------------------------------------------------------------
/src/pages/indexDefinition/indexDefinition.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 清除查询条件
19 | 查询
20 |
21 |
22 | 新增指标定义
23 |
24 |
25 |
26 |
27 |
30 |
35 |
36 |
37 |
38 | 启用
39 | 停用
40 |
41 |
42 |
43 |
44 |
45 |
53 |
54 |
55 |
56 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | 确认
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
87 |
88 |
89 |
92 |
--------------------------------------------------------------------------------
/src/pages/indexExpression/indexExpression.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/judgeDetail/judgeDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/judgeDetailFiliale/judgeDetailFiliale.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/pages/judgeDetailFiliale/judgeDetailFiliale.js
--------------------------------------------------------------------------------
/src/pages/judgeDetailFiliale/judgeDetailFiliale.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 清除查询条件
15 | 查询
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 查看详情
31 |
32 |
33 | 考核
34 |
35 | 退回
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
89 |
90 |
91 |
94 |
--------------------------------------------------------------------------------
/src/pages/judgeDimension/judgeDimension.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | // 搜索参数
5 | tableSearch:{
6 | dimension_name:'',
7 | count_method:''
8 | },
9 | // 表格数据
10 | tableData:[
11 | {dimension_name:'111',statue:1},
12 | {dimension_name:'111',statue:1},
13 | {dimension_name:'111',statue:0},
14 | {dimension_name:'111',statue:1},
15 | {dimension_name:'111',statue:1},
16 | {dimension_name:'111',statue:0},
17 | {dimension_name:'111',statue:1},
18 | {dimension_name:'111',statue:1},
19 | ],
20 | tableThead:[
21 | {name:'维度名称',value:'dimension_name'},
22 | {name:'启用状态',value:'statue'},
23 | ],
24 | // 弹窗
25 | tableObject:{
26 | dimension_name:'',
27 | check_method_define:'',
28 | count_method:''
29 | },
30 | dialogVisible:false,
31 | // 弹窗 - 必填项校验
32 | rules:{
33 | dimension_name:[{required:true,message:'请输入维度名称',trigger:'blur'}],
34 | },
35 | // 翻页
36 | page:{
37 | start_index:1,
38 | total:100
39 | },
40 | currentPage:1,
41 | total:1000,
42 | timeOut:null,
43 | pageNumber:[10,25,50,100]
44 | };
45 | },
46 | methods: {
47 | // 请求表格
48 | getData(type){
49 | let defaultParams = {
50 | start_index: this.page.start_index,
51 | total:this.page.total
52 | }
53 | let params = Object.assign(defaultParams,this.tableSearch)
54 | clearTimeout(this.timeOut)
55 | this.timeOut = setTimeout(() => {
56 | this.$http.get('/api/dimensionapi/getdimension',{params:params}).then((result) => {
57 | console.log(result);
58 | this.arr = result
59 | }).catch((err)=>{
60 |
61 | })
62 | }, 0);
63 | },
64 | // 翻页
65 | sizeChange(total){
66 | this.page.total = total
67 | this.getData()
68 | },
69 | currentChange(currentPage){
70 | this.page.start_index = currentPage
71 | this.getData()
72 | },
73 | // 启用/停用
74 | changeStatue(item){
75 | let params = {
76 | id:item.id,
77 | statue:!item.statue
78 | }
79 | this.$http.post('/api/dimensionapi/changedimensionstatue',{params:params}).then((result) => {
80 | console.log(result);
81 | this.getData()
82 | }).catch((err)=>{
83 |
84 | })
85 | },
86 | // 新增校验
87 | submitForm(formName){
88 | this.$refs[formName].validate((valid) => {
89 | if (valid) {
90 | console.log('已全部填完');
91 | this.addForm()
92 | } else {
93 | console.log('error submit!!');
94 | return false;
95 | }
96 | });
97 | },
98 | // 确认新增
99 | addForm(){
100 | let params = this.tableObject
101 | this.$http.post('/api/dimensionapi/adddimension',params).then((result) => {
102 | console.log(result);
103 | this.getData()
104 | this.dialogVisible = false
105 | }).catch((err)=>{
106 |
107 | })
108 | },
109 | // 清除搜索条件
110 | resetForm(formName){
111 | this.$refs[formName].resetFields()
112 | }
113 | },
114 | created(){
115 | this.getData()
116 | }
117 | }
--------------------------------------------------------------------------------
/src/pages/judgeDimension/judgeDimension.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 清除查询条件
11 | 查询
12 |
13 |
14 | 新增维度
15 |
16 |
17 |
18 |
19 |
22 |
27 |
28 |
29 |
30 | 启用
31 | 停用
32 |
33 |
34 |
35 |
36 |
37 |
45 |
46 |
47 |
48 |
52 |
53 |
54 |
55 |
56 |
57 | 确认
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
71 |
72 |
73 |
76 |
--------------------------------------------------------------------------------
/src/pages/judgeFiliale/judgeFiliale.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/judgeManageFiliale/judgeManageFiliale.js:
--------------------------------------------------------------------------------
1 | import examiner from '@/components/examiner/examiner.vue';
2 | export default {
3 | name: "pages",
4 | data:function(){
5 | return {
6 | // type 0 集团考核分公司,1 分公司考核个人
7 | type:'1',
8 | // 搜索参数
9 | tableSearch:{
10 | task_name:'',
11 | create_time:'',
12 | task_statue:'',
13 | },
14 | // 表格数据
15 | tableData:[
16 | {
17 | judgeName: '考核方案名称',
18 | beginTime: '2016-05-02',
19 | endTime: '2016-05-05',
20 | judgePerson: '考核方',
21 | judgeNum: '123',
22 | judgeStatus: '1',
23 | judgeCaseName: '考核方案名称'
24 | },
25 | {
26 | judgeName: '考核方案名称',
27 | beginTime: '2016-05-06',
28 | endTime: '2016-05-07',
29 | judgePerson: '考核方',
30 | judgeNum: '123',
31 | judgeStatus: '1',
32 | judgeCaseName: '考核方案名称'
33 | },
34 | {
35 | judgeName: '考核方案名称',
36 | beginTime: '2016-05-08',
37 | endTime: '2016-05-09',
38 | judgePerson: '考核方',
39 | judgeNum: '123',
40 | judgeStatus: '1',
41 | judgeCaseName: '考核方案名称'
42 | },
43 | ],
44 | // 表头数据
45 | tableThead:[
46 | {name:'考核方案名称',value:'judgeName'},
47 | {name:'考核起止时间',value:'beginTime'},
48 | {name:'考核发起人',value:'judgePerson'},
49 | {name:'考核数量',value:'judgeNum'},
50 | {name:'考核状态',value:'judgeStatus'},
51 | {name:'考核方案名称',value:'judgeCaseName'},
52 | ],
53 | // 分页条
54 | currentPage: 1,
55 | total: 1000,
56 | timeOut: null,
57 | pageNumber: [10,20,50],
58 | page:{
59 | start_index: 1,
60 | total: 1000
61 | },
62 | // 弹窗
63 | outerVisible: {flag: false},
64 | }
65 | },
66 | components: {
67 | examiner
68 | },
69 | methods:{
70 | resetForm() {
71 | this.tableSearch.task_name = '';
72 | this.tableSearch.create_time = '';
73 | this.tableSearch.task_statue = '';
74 | },
75 | searchForm() {
76 | this.getData()
77 | },
78 | // 翻页
79 | sizeChange(){
80 | console.log(1);
81 | this.getData()
82 | },
83 | currentChange(){
84 | console.log(2);
85 | this.getData()
86 | },
87 | // 归档弹框
88 | open4() {
89 | const h = this.$createElement;
90 | this.$msgbox({
91 | title: '归档',
92 | message: h('p', null, [
93 | h('span', null, '是否确认归档?'),
94 | ]),
95 | showCancelButton: true,
96 | confirmButtonText: '确定',
97 | cancelButtonText: '取消',
98 | beforeClose: (action, instance, done) => {
99 | if (action === 'confirm') {
100 | instance.confirmButtonLoading = true;
101 | instance.confirmButtonText = '执行中...';
102 | setTimeout(() => {
103 | done();
104 | setTimeout(() => {
105 | instance.confirmButtonLoading = false;
106 | }, 300);
107 | }, 3000);
108 | } else {
109 | done();
110 | }
111 | }
112 | }).then(action => {
113 | this.$message({
114 | type: 'info',
115 | message: 'action: ' + action
116 | });
117 | });
118 | },
119 | // 请求表格
120 | getData(currentPage){
121 | let defaultParams = {
122 | start_index: this.page.start_index,
123 | total: this.page.total
124 | }
125 | let params = Object.assign(defaultParams,this.tableSearch)
126 | console.log(params)
127 | this.$http.get('api/launchassessmentapi/getassessment',{params: params}).then((result) => {
128 | console.log(result);
129 | // this.tableData = result
130 | // this.total = result.total
131 | }).catch((err)=>{
132 | console.log(err);
133 | })
134 | this.tableData.forEach(item=>item.beginTime = item.beginTime + '-' +item.endTime)
135 | },
136 |
137 | },
138 | created() {
139 | this.getData()
140 | },
141 | updated() {
142 | console.log(this.outerVisible)
143 | },
144 | };
--------------------------------------------------------------------------------
/src/pages/judgeManageFiliale/judgeManageFiliale.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 清除查询条件
19 | 查询
20 |
21 |
22 | 发起新考核
23 |
24 |
25 |
26 |
27 |
28 |
29 | >
30 |
31 |
32 |
33 | 查看详情
34 |
35 | 归档
36 |
37 |
38 |
39 |
40 |
41 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
60 |
61 |
62 |
64 |
--------------------------------------------------------------------------------
/src/pages/judgeManagePerson/judgeManagePerson.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/judgeMethod/judgeMethod.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | // 搜索参数
5 | tableSearch:{
6 | check_method_name:'',
7 | check_method_define:'',
8 | count_method:''
9 | },
10 | // 表格数据
11 | tableData:[
12 | {check_method_name:'111',check_method_define:'222',statue:1},
13 | {check_method_name:'111',check_method_define:'222',statue:1},
14 | {check_method_name:'111',check_method_define:'222',statue:0},
15 | {check_method_name:'111',check_method_define:'222',statue:1},
16 | {check_method_name:'111',check_method_define:'222',statue:1},
17 | {check_method_name:'111',check_method_define:'222',statue:0},
18 | {check_method_name:'111',check_method_define:'222',statue:1},
19 | {check_method_name:'111',check_method_define:'222',statue:1},
20 | ],
21 | tableThead:[
22 | {name:'考核办法名称',value:'check_method_name'},
23 | {name:'考核办法',value:'check_method_define'},
24 | {name:'启用状态',value:'statue'},
25 | ],
26 | // 弹窗
27 | tableObject:{
28 | check_method_name:'',
29 | check_method_define:'',
30 | count_method:''
31 | },
32 | dialogVisible:false,
33 | // 弹窗 - 必填项校验
34 | rules:{
35 | check_method_name:[{required:true,message:'请输入考核办法名称',trigger:'blur'}],
36 | check_method_define:[{required:true,message:'请输入考核办法',trigger:'blur'}],
37 | },
38 | // 翻页
39 | page:{
40 | start_index:1,
41 | total:100
42 | },
43 | currentPage:1,
44 | total:1000,
45 | timeOut:null,
46 | pageNumber:[10,25,50,100]
47 | };
48 | },
49 | methods: {
50 | // 请求表格
51 | getData(type){
52 | let defaultParams = {
53 | start_index: this.page.start_index,
54 | total:this.page.total
55 | }
56 | let params = Object.assign(defaultParams,this.tableSearch)
57 | clearTimeout(this.timeOut)
58 | this.timeOut = setTimeout(() => {
59 | this.$http.get('/api/checkmethodapi/getcheckmethod',{params:params}).then((result) => {
60 | console.log(result);
61 | this.arr = result
62 | }).catch((err)=>{
63 |
64 | })
65 | }, 0);
66 | },
67 | // 翻页
68 | sizeChange(total){
69 | this.page.total = total
70 | this.getData()
71 | },
72 | currentChange(currentPage){
73 | this.page.start_index = currentPage
74 | this.getData()
75 | },
76 | // 启用/停用
77 | changeStatue(item){
78 | let params = {
79 | id:item.id,
80 | statue:!item.statue
81 | }
82 | this.$http.post('/api/checkmethodapi/changecheckmethodstatue',{params:params}).then((result) => {
83 | console.log(result);
84 | this.getData()
85 | }).catch((err)=>{
86 |
87 | })
88 | },
89 | // 新增校验
90 | submitForm(formName){
91 | this.$refs[formName].validate((valid) => {
92 | if (valid) {
93 | console.log('已全部填完');
94 | this.addForm()
95 | } else {
96 | console.log('error submit!!');
97 | return false;
98 | }
99 | });
100 | },
101 | // 确认新增
102 | addForm(){
103 | let params = this.tableObject
104 | this.$http.post('/api/checkmethodapi/addcheckmethod',params).then((result) => {
105 | console.log(result);
106 | this.getData()
107 | this.dialogVisible = false
108 | }).catch((err)=>{
109 |
110 | })
111 | },
112 | // 清除搜索条件
113 | resetForm(formName){
114 | this.$refs[formName].resetFields()
115 | }
116 | },
117 | created(){
118 | this.getData()
119 | }
120 | }
--------------------------------------------------------------------------------
/src/pages/judgeMethod/judgeMethod.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | 清除查询条件
13 | 查询
14 |
15 |
16 | 新增考核办法
17 |
18 |
19 |
20 |
21 |
24 |
29 |
30 |
31 |
32 | 启用
33 | 停用
34 |
35 |
36 |
37 |
38 |
39 |
47 |
48 |
49 |
50 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 | 确认
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
76 |
77 |
78 |
81 |
--------------------------------------------------------------------------------
/src/pages/judgePerson/judgePerson.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: "judgePerson",
3 | data() {
4 | return {
5 | tableShow: false,
6 | tableSearch: {},
7 | activeName: 'first',
8 | tableData: [
9 | {
10 | name0:'1',
11 | name1:'1',
12 | name2:'1',
13 | name3:'1',
14 | name4:'1',
15 | name5:'1',
16 | name6:'1',
17 | }
18 | ]
19 | }
20 | },
21 | methods: {
22 | backPage() {
23 | this.$router.push({path:'/judgeManageFiliale'})
24 | },
25 | submit() {
26 |
27 | }
28 | },
29 | }
--------------------------------------------------------------------------------
/src/pages/judgePerson/judgePerson.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
2018年杭州分公司绩效考核
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | 保存
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | 考评得分:{{82}}分
35 |
36 |
37 | 返回
38 | 提交
39 |
40 |
41 |
42 |
43 |
44 |
50 |
51 |
52 |
54 |
--------------------------------------------------------------------------------
/src/pages/judgePersonDetail/judgePersonDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/launchJudgeFiliale/launchJudgeFiliale.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/launchJudgePerson/launchJudgePerson.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/login/login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 查看
9 | 新增
10 | 删除
11 |
12 |
13 | 王小虎
14 |
15 |
16 |
17 |
18 |
19 |
用户登录
20 |
21 |
28 |
29 |
30 |
37 |
38 |
39 |
40 | 记住密码
41 |
42 |
43 | 提交
44 | 重置
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
91 |
92 |
93 |
102 |
--------------------------------------------------------------------------------
/src/pages/notfind/notfind.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 404 NOT FIND
4 |
5 | {{msg}}
6 |
7 |
8 |
9 |
19 |
20 |
21 |
37 |
--------------------------------------------------------------------------------
/src/pages/page1/page1.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 这是page1 ++ {{msg}}
4 |
5 |
6 |
7 |
8 |
9 | {{arr | filterJson}}
10 |
11 |
12 |
13 | 添加项
16 |
17 |
21 |
25 |
26 |
27 |
28 |
31 | 删除行
34 |
35 |
36 |
37 |
41 |
42 |
43 |
47 |
48 |
52 |
53 |
57 |
58 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | 提交
84 | 重置
85 |
86 |
87 |
88 |
89 |
90 |
91 |
97 |
98 |
99 |
115 |
--------------------------------------------------------------------------------
/src/pages/page3/page3.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | var checkAge = (rule, value, callback) => {
4 | if (!value) {
5 | return callback(new Error('年龄不能为空'));
6 | }
7 | setTimeout(() => {
8 | if (!Number.isInteger(value)) {
9 | callback(new Error('请输入数字值'));
10 | } else {
11 | if (value < 18) {
12 | callback(new Error('必须年满18岁'));
13 | } else {
14 | callback();
15 | }
16 | }
17 | }, 1000);
18 | };
19 | var validatePass = (rule, value, callback) => {
20 | if (value === '') {
21 | callback(new Error('请输入密码'));
22 | } else {
23 | if (this.ruleForm2.checkPass !== '') {
24 | this.$refs.ruleForm2.validateField('checkPass');
25 | }
26 | callback();
27 | }
28 | };
29 | var validatePass2 = (rule, value, callback) => {
30 | if (value === '') {
31 | callback(new Error('请再次输入密码'));
32 | } else if (value !== this.ruleForm2.pass) {
33 | callback(new Error('两次输入密码不一致!'));
34 | } else {
35 | callback();
36 | }
37 | };
38 | return {
39 | ruleForm2: {
40 | pass: '',
41 | checkPass: '',
42 | age: ''
43 | },
44 | rules2: {
45 | pass: [
46 | { validator: validatePass, trigger: 'blur' }
47 | ],
48 | checkPass: [
49 | { validator: validatePass2, trigger: 'blur' }
50 | ],
51 | age: [
52 | { validator: checkAge, trigger: 'blur' }
53 | ]
54 | }
55 | };
56 | },
57 | methods: {
58 | submitForm(formName) {
59 | console.log(this.$refs[formName].model);
60 |
61 | this.$refs[formName].validate((valid) => {
62 | console.log(this.$refs[formName].model);
63 |
64 | if (valid) {
65 | alert('submit!');
66 | } else {
67 | console.log('error submit!!');
68 | return false;
69 | }
70 | });
71 | },
72 | resetForm(formName) {
73 | this.$refs[formName].resetFields();
74 | }
75 | }
76 | }
--------------------------------------------------------------------------------
/src/pages/page3/page3.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 提交
15 | 重置
16 |
17 |
18 |
19 |
20 |
21 |
27 |
28 |
29 |
45 |
--------------------------------------------------------------------------------
/src/pages/page4/page4.js:
--------------------------------------------------------------------------------
1 | export default {
2 | name: 'page4',
3 | data() {
4 | return {
5 | arr:[{app:1,flag:true,number:200},
6 | {app:2,flag:false,number:201}],
7 | msg:'离开交互稿',
8 | count:0,
9 | value:new Date()-21111111111,
10 | fileList:[],
11 | tableData5: [{
12 | id: '12987122',
13 | name: '好滋好味鸡蛋仔',
14 | category: '江浙小吃、小吃零食',
15 | desc: '荷兰优质淡奶,奶香浓而不腻',
16 | address: '上海市普陀区真北路',
17 | shop: '王小虎夫妻店',
18 | shopId: '10333'
19 | }, {
20 | id: '12987123',
21 | name: '好滋好味鸡蛋仔',
22 | category: '江浙小吃、小吃零食',
23 | desc: '荷兰优质淡奶,奶香浓而不腻',
24 | address: '上海市普陀区真北路',
25 | shop: '王小虎夫妻店',
26 | shopId: '10333'
27 | }, {
28 | id: '12987125',
29 | name: '好滋好味鸡蛋仔',
30 | category: '江浙小吃、小吃零食',
31 | desc: '荷兰优质淡奶,奶香浓而不腻',
32 | address: '上海市普陀区真北路',
33 | shop: '王小虎夫妻店',
34 | shopId: '10333'
35 | }, {
36 | id: '12987126',
37 | name: '好滋好味鸡蛋仔',
38 | category: '江浙小吃、小吃零食',
39 | desc: '荷兰优质淡奶,奶香浓而不腻',
40 | address: '上海市普陀区真北路',
41 | shop: '王小虎夫妻店',
42 | shopId: '10333'
43 | }],
44 | data: [{
45 | label: '一级 1',
46 | children: [{
47 | label: '二级 1-1',
48 | children: [{
49 | label: '三级 1-1-1'
50 | }]
51 | }]
52 | }, {
53 | label: '一级 2',
54 | children: [{
55 | label: '二级 2-1',
56 | children: [{
57 | label: '三级 2-1-1'
58 | }]
59 | }, {
60 | label: '二级 2-2',
61 | children: [{
62 | label: '三级 2-2-1'
63 | }]
64 | }]
65 | }, {
66 | label: '一级 3',
67 | children: [{
68 | label: '二级 3-1',
69 | children: [{
70 | label: '三级 3-1-1'
71 | }]
72 | }, {
73 | label: '二级 3-2',
74 | children: [{
75 | label: '三级 3-2-1'
76 | }]
77 | }]
78 | }],
79 | defaultProps: {
80 | children: 'children',
81 | label: 'label'
82 | }
83 | }
84 | },
85 | methods: {
86 | add:function(){
87 | console.log(this.value.getTime());
88 | this.$http.get('/demo1',{params:{asad:12324}}).then((result) => {
89 | console.log(result);
90 | if (result) {
91 | this.arr = result
92 | }
93 | }).catch((err)=>{
94 | console.log(err);
95 |
96 | })
97 | },
98 | filterIT:function(arr){
99 | return arr.filter(function(item){
100 | return item.flag
101 | })
102 | },
103 | handleNodeClick(data) {
104 | console.log(data);
105 | }
106 |
107 | },
108 | computed:{
109 | filters:function(){
110 | return this.filterIT(this.arr)
111 | }
112 | },
113 | created:function(){
114 | console.log('1');
115 |
116 | },
117 | activated:function(){
118 | console.log(`切换到所在路由的时候,触发${this.count++}次`);
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/src/pages/page4/page4.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 这是page4 ++ {{msg}}
4 |
5 |
6 |
7 | 默认
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
26 | 点击上传
27 | 只能上传jpg/png文件,且不超过500kb
28 |
29 |
30 |
31 |
32 |
主要按钮
33 |
34 |
35 | id |
36 | flag |
37 | 数量 |
38 |
39 |
40 | {{item.app}} |
41 | {{item.flag | filterString}} |
42 | {{item.number}} |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
下面是表格
50 |
51 |
52 |
55 |
56 |
57 |
60 |
61 |
62 |
63 |
64 | {{ props.row.name }}
65 |
66 |
67 | {{ props.row.shop }}
68 |
69 |
70 | {{ props.row.id }}
71 |
72 |
73 | {{ props.row.shopId }}
74 |
75 |
76 | {{ props.row.category }}
77 |
78 |
79 | {{ props.row.address }}
80 |
81 |
82 | {{ props.row.desc }}
83 |
84 |
85 |
86 |
87 |
90 |
91 |
94 |
95 |
98 |
99 |
100 |
101 |
102 |
105 |
106 |
109 |
110 |
113 |
114 |
115 |
116 |
117 |
118 |
124 |
125 |
126 |
142 |
--------------------------------------------------------------------------------
/src/pages/pages.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | logo
6 |
7 |
8 |
9 |
10 |
11 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
53 |
54 |
55 |
68 |
--------------------------------------------------------------------------------
/src/pages/personJudgeAdd/personJudgeAdd.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personJudgeDetail/personJudgeDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personJudgeManage/personJudgeManage.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personTask/personTask.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personTaskDetail/personTaskDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personToVerifyDetail/personToVerifyDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personVerified/personVerified.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personVerifiedDetail/personVerifiedDetail.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/personVerifyManage/personVerifyManage.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/pages/selfJudgePerson/selfJudgePerson.vue:
--------------------------------------------------------------------------------
1 |
2 | 3456789
3 |
4 |
5 |
15 |
16 |
17 |
20 |
--------------------------------------------------------------------------------
/src/theme/alert.css:
--------------------------------------------------------------------------------
1 | .el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/theme/aside.css:
--------------------------------------------------------------------------------
1 | .el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/theme/badge.css:
--------------------------------------------------------------------------------
1 | .el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}
--------------------------------------------------------------------------------
/src/theme/breadcrumb-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/breadcrumb-item.css
--------------------------------------------------------------------------------
/src/theme/breadcrumb.css:
--------------------------------------------------------------------------------
1 | .el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#B0EF00;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}
--------------------------------------------------------------------------------
/src/theme/button-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/button-group.css
--------------------------------------------------------------------------------
/src/theme/card.css:
--------------------------------------------------------------------------------
1 | .el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/src/theme/carousel-item.css:
--------------------------------------------------------------------------------
1 | .el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}
--------------------------------------------------------------------------------
/src/theme/carousel.css:
--------------------------------------------------------------------------------
1 | .el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/src/theme/checkbox-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/checkbox-button.css
--------------------------------------------------------------------------------
/src/theme/checkbox-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/checkbox-group.css
--------------------------------------------------------------------------------
/src/theme/collapse-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/collapse-item.css
--------------------------------------------------------------------------------
/src/theme/collapse.css:
--------------------------------------------------------------------------------
1 | .el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#B0EF00}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}
--------------------------------------------------------------------------------
/src/theme/container.css:
--------------------------------------------------------------------------------
1 | .el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}
--------------------------------------------------------------------------------
/src/theme/dialog.css:
--------------------------------------------------------------------------------
1 | .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#B0EF00}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;line-height:24px;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/src/theme/display.css:
--------------------------------------------------------------------------------
1 | @media only screen and (max-width:767px){.hidden-xs-only{display:none!important}}@media only screen and (min-width:768px){.hidden-sm-and-up{display:none!important}}@media only screen and (min-width:768px) and (max-width:991px){.hidden-sm-only{display:none!important}}@media only screen and (max-width:991px){.hidden-sm-and-down{display:none!important}}@media only screen and (min-width:992px){.hidden-md-and-up{display:none!important}}@media only screen and (min-width:992px) and (max-width:1199px){.hidden-md-only{display:none!important}}@media only screen and (max-width:1199px){.hidden-md-and-down{display:none!important}}@media only screen and (min-width:1200px){.hidden-lg-and-up{display:none!important}}@media only screen and (min-width:1200px) and (max-width:1919px){.hidden-lg-only{display:none!important}}@media only screen and (max-width:1919px){.hidden-lg-and-down{display:none!important}}@media only screen and (min-width:1920px){.hidden-xl-only{display:none!important}}
--------------------------------------------------------------------------------
/src/theme/dropdown-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/dropdown-item.css
--------------------------------------------------------------------------------
/src/theme/dropdown-menu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/dropdown-menu.css
--------------------------------------------------------------------------------
/src/theme/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/src/theme/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/fonts/element-icons.woff
--------------------------------------------------------------------------------
/src/theme/footer.css:
--------------------------------------------------------------------------------
1 | .el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/theme/form-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/form-item.css
--------------------------------------------------------------------------------
/src/theme/form.css:
--------------------------------------------------------------------------------
1 | .el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item::after,.el-form-item__content::after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form-item__content .el-input-group,.el-form-item__label{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#f56c6c}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}
--------------------------------------------------------------------------------
/src/theme/header.css:
--------------------------------------------------------------------------------
1 | .el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}
--------------------------------------------------------------------------------
/src/theme/icon.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:"\e61a"}.el-icon-error:before{content:"\e62c"}.el-icon-success:before{content:"\e62d"}.el-icon-warning:before{content:"\e62e"}.el-icon-question:before{content:"\e634"}.el-icon-back:before{content:"\e606"}.el-icon-arrow-left:before{content:"\e600"}.el-icon-arrow-down:before{content:"\e603"}.el-icon-arrow-right:before{content:"\e604"}.el-icon-arrow-up:before{content:"\e605"}.el-icon-caret-left:before{content:"\e60a"}.el-icon-caret-bottom:before{content:"\e60b"}.el-icon-caret-top:before{content:"\e60c"}.el-icon-caret-right:before{content:"\e60e"}.el-icon-d-arrow-left:before{content:"\e610"}.el-icon-d-arrow-right:before{content:"\e613"}.el-icon-minus:before{content:"\e621"}.el-icon-plus:before{content:"\e62b"}.el-icon-remove:before{content:"\e635"}.el-icon-circle-plus:before{content:"\e601"}.el-icon-remove-outline:before{content:"\e63c"}.el-icon-circle-plus-outline:before{content:"\e602"}.el-icon-close:before{content:"\e60f"}.el-icon-check:before{content:"\e611"}.el-icon-circle-close:before{content:"\e607"}.el-icon-circle-check:before{content:"\e639"}.el-icon-circle-close-outline:before{content:"\e609"}.el-icon-circle-check-outline:before{content:"\e63e"}.el-icon-zoom-out:before{content:"\e645"}.el-icon-zoom-in:before{content:"\e641"}.el-icon-d-caret:before{content:"\e615"}.el-icon-sort:before{content:"\e640"}.el-icon-sort-down:before{content:"\e630"}.el-icon-sort-up:before{content:"\e631"}.el-icon-tickets:before{content:"\e63f"}.el-icon-document:before{content:"\e614"}.el-icon-goods:before{content:"\e618"}.el-icon-sold-out:before{content:"\e63b"}.el-icon-news:before{content:"\e625"}.el-icon-message:before{content:"\e61b"}.el-icon-date:before{content:"\e608"}.el-icon-printer:before{content:"\e62f"}.el-icon-time:before{content:"\e642"}.el-icon-bell:before{content:"\e622"}.el-icon-mobile-phone:before{content:"\e624"}.el-icon-service:before{content:"\e63a"}.el-icon-view:before{content:"\e643"}.el-icon-menu:before{content:"\e620"}.el-icon-more:before{content:"\e646"}.el-icon-more-outline:before{content:"\e626"}.el-icon-star-on:before{content:"\e637"}.el-icon-star-off:before{content:"\e63d"}.el-icon-location:before{content:"\e61d"}.el-icon-location-outline:before{content:"\e61f"}.el-icon-phone:before{content:"\e627"}.el-icon-phone-outline:before{content:"\e628"}.el-icon-picture:before{content:"\e629"}.el-icon-picture-outline:before{content:"\e62a"}.el-icon-delete:before{content:"\e612"}.el-icon-search:before{content:"\e619"}.el-icon-edit:before{content:"\e61c"}.el-icon-edit-outline:before{content:"\e616"}.el-icon-rank:before{content:"\e632"}.el-icon-refresh:before{content:"\e633"}.el-icon-share:before{content:"\e636"}.el-icon-setting:before{content:"\e638"}.el-icon-upload:before{content:"\e60d"}.el-icon-upload2:before{content:"\e644"}.el-icon-download:before{content:"\e617"}.el-icon-loading:before{content:"\e61e"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/theme/loading.css:
--------------------------------------------------------------------------------
1 | .el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#B0EF00;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#B0EF00;stroke-linecap:round}.el-loading-spinner i{color:#B0EF00}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/src/theme/main.css:
--------------------------------------------------------------------------------
1 | .el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}
--------------------------------------------------------------------------------
/src/theme/menu-item-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/menu-item-group.css
--------------------------------------------------------------------------------
/src/theme/menu-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/menu-item.css
--------------------------------------------------------------------------------
/src/theme/message.css:
--------------------------------------------------------------------------------
1 | .el-message__closeBtn:focus,.el-message__content:focus{outline-width:0}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/src/theme/notification.css:
--------------------------------------------------------------------------------
1 | .el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/theme/option-group.css:
--------------------------------------------------------------------------------
1 | .el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}
--------------------------------------------------------------------------------
/src/theme/option.css:
--------------------------------------------------------------------------------
1 | .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#B0EF00;font-weight:700}.el-select-dropdown__item span{line-height:34px!important}
--------------------------------------------------------------------------------
/src/theme/popover.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}
--------------------------------------------------------------------------------
/src/theme/popper.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}
--------------------------------------------------------------------------------
/src/theme/progress.css:
--------------------------------------------------------------------------------
1 | .el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#B0EF00;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.el-progress-bar__inner::after{content:"";height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/src/theme/radio-button.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#B0EF00}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#B0EF00;border-color:#B0EF00;-webkit-box-shadow:-1px 0 0 0 #B0EF00;box-shadow:-1px 0 0 0 #B0EF00}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #B0EF00;box-shadow:0 0 2px 2px #B0EF00}
--------------------------------------------------------------------------------
/src/theme/radio-group.css:
--------------------------------------------------------------------------------
1 | .el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}
--------------------------------------------------------------------------------
/src/theme/radio.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio,.el-radio__input{white-space:nowrap;line-height:1;outline:0}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-radio{color:#606266;font-weight:500;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#B0EF00}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#B0EF00;background:#B0EF00}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#B0EF00}.el-radio__input.is-focus .el-radio__inner{border-color:#B0EF00}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#B0EF00}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #B0EF00;box-shadow:0 0 2px 2px #B0EF00}.el-radio__label{font-size:14px;padding-left:10px}
--------------------------------------------------------------------------------
/src/theme/rate.css:
--------------------------------------------------------------------------------
1 | .el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/src/theme/reset.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";body{font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;font-weight:400;font-size:14px;color:#000;-webkit-font-smoothing:antialiased}a{color:#B0EF00;text-decoration:none}a:focus,a:hover{color:rgb(192, 242, 51)}a:active{color:rgb(158, 215, 0)}h1,h2,h3,h4,h5,h6{color:#606266;font-weight:inherit}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0}h1{font-size:20px}h2{font-size:18px}h3{font-size:16px}h4,h5,h6,p{font-size:inherit}p{line-height:1.8}sub,sup{font-size:13px}small{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}
--------------------------------------------------------------------------------
/src/theme/row.css:
--------------------------------------------------------------------------------
1 | .el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table;content:""}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}
--------------------------------------------------------------------------------
/src/theme/scrollbar.css:
--------------------------------------------------------------------------------
1 | .el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}
--------------------------------------------------------------------------------
/src/theme/select-dropdown.css:
--------------------------------------------------------------------------------
1 | .el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#B0EF00;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}
--------------------------------------------------------------------------------
/src/theme/spinner.css:
--------------------------------------------------------------------------------
1 | .el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/src/theme/step.css:
--------------------------------------------------------------------------------
1 | .el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#B0EF00;border-color:#B0EF00}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#B0EF00}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#B0EF00}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}
--------------------------------------------------------------------------------
/src/theme/steps.css:
--------------------------------------------------------------------------------
1 | .el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}
--------------------------------------------------------------------------------
/src/theme/submenu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/submenu.css
--------------------------------------------------------------------------------
/src/theme/switch.css:
--------------------------------------------------------------------------------
1 | .el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer;vertical-align:middle}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;color:#303133}.el-switch__label.is-active{color:#B0EF00}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus~.el-switch__core{outline:#B0EF00 solid 1px}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#B0EF00;background-color:#B0EF00}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/theme/tab-pane.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iProgramme/achievements-vue/cc60303745970776b509a049211b9bcb1a466c22/src/theme/tab-pane.css
--------------------------------------------------------------------------------
/src/theme/tag.css:
--------------------------------------------------------------------------------
1 | .el-tag{background-color:rgba(64,158,255,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#B0EF00;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px;color:#B0EF00}.el-tag .el-icon-close::before{display:block}.el-tag .el-icon-close:hover{background-color:#B0EF00;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:rgba(144,147,153,.1);border-color:rgba(144,147,153,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:rgba(245,108,108,.1);border-color:rgba(245,108,108,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}
--------------------------------------------------------------------------------
/src/theme/tooltip.css:
--------------------------------------------------------------------------------
1 | .el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}
--------------------------------------------------------------------------------
/src/theme/tree.css:
--------------------------------------------------------------------------------
1 | .el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#B0EF00}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#B0EF00;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}
--------------------------------------------------------------------------------
/src/vuex/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 |
4 | Vue.use(Vuex)
5 |
6 | const store = new Vuex.Store({
7 | // 定义状态
8 | state: {
9 | routerArray:[],
10 | // 当前nav
11 | routerName:{},
12 | // 已有的tab nav
13 | navTabs:[{title:'首页',name:'/dashboard',url:'/dashboard'}],
14 |
15 | // filialeJudgeManageAdd数据
16 | // tree:[],
17 | // arr:[]
18 | },
19 | mutations:{
20 | setRouterName(state,obj){
21 | obj = obj || {}
22 | for (const key in obj) {
23 | if(typeof obj[key] == 'string'){
24 | obj[key].replace('Detail','')
25 | }
26 | }
27 | state.routerName = obj;
28 |
29 | console.log(obj);
30 |
31 | let flag = state.navTabs.find(item=>item.url == obj.url)
32 | if(!flag){
33 | state.navTabs.push(obj)
34 | }
35 | },
36 | deleteRouterName(state,str){
37 | state.navTabs = state.navTabs.filter(item=>item.url!=str)
38 | },
39 |
40 |
41 | changeToArray(state,arr){
42 | console.log(arr);
43 | let objT = {};
44 | let arrT = [];
45 | let count = 1
46 | arr.forEach((item) => {
47 | if(objT[item.name1]){
48 | objT[item.name1]++
49 | }else{
50 | objT[item.name1] = 1
51 | }
52 | // arrT.push(item)
53 | });
54 | for (const key in objT) {
55 | arr.find((item)=>{
56 | if(item.name1 == key){
57 | item.span = objT[key]
58 | return true
59 | }
60 | })
61 | }
62 |
63 | // console.log(arrT);
64 | console.log(objT);
65 |
66 |
67 | }
68 | // // 将filialeJudgeManageAdd数据转为树的形式
69 | // toTree(state,arr){
70 | // let arr1 = [];
71 | // let obj = {}
72 | // arr.forEach((item)=>{
73 | // if(item.span!=0){
74 | // obj = {
75 | // name1:'123',
76 | // children:[item]
77 | // }
78 | // arr1.push(obj)
79 | // }else{
80 | // arr1[arr1.length-1].children.push(item)
81 | // }
82 | // })
83 | // state.tree = arr1
84 | // console.log(arr1);
85 | // },
86 | // // 将filialeJudgeManageAdd数据转为数组的形式
87 | // toArray(state,tree){
88 | // var arr = []
89 | // for(let i = 0;i has count: ' + count
12 | this.expected = count
13 | this.pass = function (val) {
14 | return val === this.expected
15 | }
16 | this.value = function (res) {
17 | return res.value
18 | }
19 | this.command = function (cb) {
20 | var self = this
21 | return this.api.execute(function (selector) {
22 | return document.querySelectorAll(selector).length
23 | }, [selector], function (res) {
24 | cb.call(self, res)
25 | })
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/test/e2e/nightwatch.conf.js:
--------------------------------------------------------------------------------
1 | require('babel-register')
2 | var config = require('../../config')
3 |
4 | // http://nightwatchjs.org/gettingstarted#settings-file
5 | module.exports = {
6 | src_folders: ['test/e2e/specs'],
7 | output_folder: 'test/e2e/reports',
8 | custom_assertions_path: ['test/e2e/custom-assertions'],
9 |
10 | selenium: {
11 | start_process: true,
12 | server_path: require('selenium-server').path,
13 | host: '127.0.0.1',
14 | port: 4444,
15 | cli_args: {
16 | 'webdriver.chrome.driver': require('chromedriver').path
17 | }
18 | },
19 |
20 | test_settings: {
21 | default: {
22 | selenium_port: 4444,
23 | selenium_host: 'localhost',
24 | silent: true,
25 | globals: {
26 | devServerURL: 'http://localhost:' + (process.env.PORT || config.dev.port)
27 | }
28 | },
29 |
30 | chrome: {
31 | desiredCapabilities: {
32 | browserName: 'chrome',
33 | javascriptEnabled: true,
34 | acceptSslCerts: true
35 | }
36 | },
37 |
38 | firefox: {
39 | desiredCapabilities: {
40 | browserName: 'firefox',
41 | javascriptEnabled: true,
42 | acceptSslCerts: true
43 | }
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/test/e2e/runner.js:
--------------------------------------------------------------------------------
1 | // 1. start the dev server using production config
2 | process.env.NODE_ENV = 'testing'
3 |
4 | const webpack = require('webpack')
5 | const DevServer = require('webpack-dev-server')
6 |
7 | const webpackConfig = require('../../build/webpack.prod.conf')
8 | const devConfigPromise = require('../../build/webpack.dev.conf')
9 |
10 | let server
11 |
12 | devConfigPromise.then(devConfig => {
13 | const devServerOptions = devConfig.devServer
14 | const compiler = webpack(webpackConfig)
15 | server = new DevServer(compiler, devServerOptions)
16 | const port = devServerOptions.port
17 | const host = devServerOptions.host
18 | return server.listen(port, host)
19 | })
20 | .then(() => {
21 | // 2. run the nightwatch test suite against it
22 | // to run in additional browsers:
23 | // 1. add an entry in test/e2e/nightwatch.conf.js under "test_settings"
24 | // 2. add it to the --env flag below
25 | // or override the environment flag, for example: `npm run e2e -- --env chrome,firefox`
26 | // For more information on Nightwatch's config file, see
27 | // http://nightwatchjs.org/guide#settings-file
28 | let opts = process.argv.slice(2)
29 | if (opts.indexOf('--config') === -1) {
30 | opts = opts.concat(['--config', 'test/e2e/nightwatch.conf.js'])
31 | }
32 | if (opts.indexOf('--env') === -1) {
33 | opts = opts.concat(['--env', 'chrome'])
34 | }
35 |
36 | const spawn = require('cross-spawn')
37 | const runner = spawn('./node_modules/.bin/nightwatch', opts, { stdio: 'inherit' })
38 |
39 | runner.on('exit', function (code) {
40 | server.close()
41 | process.exit(code)
42 | })
43 |
44 | runner.on('error', function (err) {
45 | server.close()
46 | throw err
47 | })
48 | })
49 |
--------------------------------------------------------------------------------
/test/e2e/specs/test.js:
--------------------------------------------------------------------------------
1 | // For authoring Nightwatch tests, see
2 | // http://nightwatchjs.org/guide#usage
3 |
4 | module.exports = {
5 | 'default e2e tests': function (browser) {
6 | // automatically uses dev Server port from /config.index.js
7 | // default: http://localhost:8080
8 | // see nightwatch.conf.js
9 | const devServer = browser.globals.devServerURL
10 |
11 | browser
12 | .url(devServer)
13 | .waitForElementVisible('#app', 5000)
14 | .assert.elementPresent('.hello')
15 | .assert.containsText('h1', 'Welcome to Your Vue.js App')
16 | .assert.elementCount('img', 1)
17 | .end()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/test/unit/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "jest": true
4 | },
5 | "globals": {
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/test/unit/jest.conf.js:
--------------------------------------------------------------------------------
1 | const path = require('path')
2 |
3 | module.exports = {
4 | rootDir: path.resolve(__dirname, '../../'),
5 | moduleFileExtensions: [
6 | 'js',
7 | 'json',
8 | 'vue'
9 | ],
10 | moduleNameMapper: {
11 | '^@/(.*)$': '/src/$1'
12 | },
13 | transform: {
14 | '^.+\\.js$': '/node_modules/babel-jest',
15 | '.*\\.(vue)$': '/node_modules/vue-jest'
16 | },
17 | testPathIgnorePatterns: [
18 | '/test/e2e'
19 | ],
20 | snapshotSerializers: ['/node_modules/jest-serializer-vue'],
21 | setupFiles: ['/test/unit/setup'],
22 | mapCoverage: true,
23 | coverageDirectory: '/test/unit/coverage',
24 | collectCoverageFrom: [
25 | 'src/**/*.{js,vue}',
26 | '!src/main.js',
27 | '!src/router/index.js',
28 | '!**/node_modules/**'
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/test/unit/setup.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 |
3 | Vue.config.productionTip = false
4 |
--------------------------------------------------------------------------------
/test/unit/specs/HelloWorld.spec.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import HelloWorld from '@/components/HelloWorld'
3 |
4 | describe('HelloWorld.vue', () => {
5 | it('should render correct contents', () => {
6 | const Constructor = Vue.extend(HelloWorld)
7 | const vm = new Constructor().$mount()
8 | expect(vm.$el.querySelector('.hello h1').textContent)
9 | .toEqual('Welcome to Your Vue.js App')
10 | })
11 | })
12 |
--------------------------------------------------------------------------------
/需求点.md:
--------------------------------------------------------------------------------
1 | # 分公司考核模板管理_新增
2 |
3 | - 新增弹窗,使用的是可搜索的 [input](http://element-cn.eleme.io/?#/zh-CN/component/input#dai-shu-ru-jian-yi)
4 | - 表格内的四列都用可搜索的 [select](http://element-cn.eleme.io/?#/zh-CN/component/select#ke-sou-suo)
--------------------------------------------------------------------------------