Browse Source

党群e事通运营端(web)-初始提交

master
yinzuomei 6 years ago
parent
commit
e54f718a11
  1. 17
      .gitignore
  2. 2
      epmet-oper-web/.env.development
  3. 2
      epmet-oper-web/.env.production
  4. 2
      epmet-oper-web/.env.production.sit
  5. 2
      epmet-oper-web/.env.production.uat
  6. 1
      epmet-oper-web/.eslintignore
  7. 21
      epmet-oper-web/README.md
  8. 5
      epmet-oper-web/babel.config.js
  9. 105
      epmet-oper-web/gulpfile.js
  10. 18909
      epmet-oper-web/package-lock.json
  11. 88
      epmet-oper-web/package.json
  12. 1
      epmet-oper-web/public/element-theme/blue/aui.css
  13. BIN
      epmet-oper-web/public/element-theme/blue/fonts/element-icons.ttf
  14. BIN
      epmet-oper-web/public/element-theme/blue/fonts/element-icons.woff
  15. 1
      epmet-oper-web/public/element-theme/blue/index.css
  16. 1
      epmet-oper-web/public/element-theme/brown/aui.css
  17. BIN
      epmet-oper-web/public/element-theme/brown/fonts/element-icons.ttf
  18. BIN
      epmet-oper-web/public/element-theme/brown/fonts/element-icons.woff
  19. 1
      epmet-oper-web/public/element-theme/brown/index.css
  20. 1
      epmet-oper-web/public/element-theme/cyan/aui.css
  21. BIN
      epmet-oper-web/public/element-theme/cyan/fonts/element-icons.ttf
  22. BIN
      epmet-oper-web/public/element-theme/cyan/fonts/element-icons.woff
  23. 1
      epmet-oper-web/public/element-theme/cyan/index.css
  24. 1
      epmet-oper-web/public/element-theme/default/aui.css
  25. BIN
      epmet-oper-web/public/element-theme/default/fonts/element-icons.ttf
  26. BIN
      epmet-oper-web/public/element-theme/default/fonts/element-icons.woff
  27. 1
      epmet-oper-web/public/element-theme/default/index.css
  28. 1
      epmet-oper-web/public/element-theme/gray/aui.css
  29. BIN
      epmet-oper-web/public/element-theme/gray/fonts/element-icons.ttf
  30. BIN
      epmet-oper-web/public/element-theme/gray/fonts/element-icons.woff
  31. 1
      epmet-oper-web/public/element-theme/gray/index.css
  32. 1
      epmet-oper-web/public/element-theme/green/aui.css
  33. BIN
      epmet-oper-web/public/element-theme/green/fonts/element-icons.ttf
  34. BIN
      epmet-oper-web/public/element-theme/green/fonts/element-icons.woff
  35. 1
      epmet-oper-web/public/element-theme/green/index.css
  36. 1
      epmet-oper-web/public/element-theme/indigo/aui.css
  37. BIN
      epmet-oper-web/public/element-theme/indigo/fonts/element-icons.ttf
  38. BIN
      epmet-oper-web/public/element-theme/indigo/fonts/element-icons.woff
  39. 1
      epmet-oper-web/public/element-theme/indigo/index.css
  40. 1
      epmet-oper-web/public/element-theme/orange/aui.css
  41. BIN
      epmet-oper-web/public/element-theme/orange/fonts/element-icons.ttf
  42. BIN
      epmet-oper-web/public/element-theme/orange/fonts/element-icons.woff
  43. 1
      epmet-oper-web/public/element-theme/orange/index.css
  44. 1
      epmet-oper-web/public/element-theme/pink/aui.css
  45. BIN
      epmet-oper-web/public/element-theme/pink/fonts/element-icons.ttf
  46. BIN
      epmet-oper-web/public/element-theme/pink/fonts/element-icons.woff
  47. 1
      epmet-oper-web/public/element-theme/pink/index.css
  48. 1
      epmet-oper-web/public/element-theme/purple/aui.css
  49. BIN
      epmet-oper-web/public/element-theme/purple/fonts/element-icons.ttf
  50. BIN
      epmet-oper-web/public/element-theme/purple/fonts/element-icons.woff
  51. 1
      epmet-oper-web/public/element-theme/purple/index.css
  52. 1
      epmet-oper-web/public/element-theme/red/aui.css
  53. BIN
      epmet-oper-web/public/element-theme/red/fonts/element-icons.ttf
  54. BIN
      epmet-oper-web/public/element-theme/red/fonts/element-icons.woff
  55. 1
      epmet-oper-web/public/element-theme/red/index.css
  56. 1
      epmet-oper-web/public/element-theme/turquoise/aui.css
  57. BIN
      epmet-oper-web/public/element-theme/turquoise/fonts/element-icons.ttf
  58. BIN
      epmet-oper-web/public/element-theme/turquoise/fonts/element-icons.woff
  59. 1
      epmet-oper-web/public/element-theme/turquoise/index.css
  60. 1
      epmet-oper-web/public/element-theme/yellow/aui.css
  61. BIN
      epmet-oper-web/public/element-theme/yellow/fonts/element-icons.ttf
  62. BIN
      epmet-oper-web/public/element-theme/yellow/fonts/element-icons.woff
  63. 1
      epmet-oper-web/public/element-theme/yellow/index.css
  64. BIN
      epmet-oper-web/public/favicon.ico
  65. 50
      epmet-oper-web/public/index.html
  66. 29
      epmet-oper-web/src/App.vue
  67. BIN
      epmet-oper-web/src/assets/img/avatar.png
  68. BIN
      epmet-oper-web/src/assets/img/login_bg.jpg
  69. 11
      epmet-oper-web/src/assets/scss/aui.scss
  70. 713
      epmet-oper-web/src/assets/scss/common.scss
  71. 6
      epmet-oper-web/src/assets/scss/modules/home.scss
  72. 447
      epmet-oper-web/src/assets/scss/normalize.scss
  73. 48
      epmet-oper-web/src/assets/scss/pages/404.scss
  74. 220
      epmet-oper-web/src/assets/scss/pages/login.scss
  75. 22
      epmet-oper-web/src/assets/scss/variables.scss
  76. 0
      epmet-oper-web/src/components/.gitkeep
  77. 7
      epmet-oper-web/src/components/ren-dept-tree/index.js
  78. 118
      epmet-oper-web/src/components/ren-dept-tree/src/ren-dept-tree.vue
  79. 7
      epmet-oper-web/src/components/ren-process-detail/index.js
  80. 79
      epmet-oper-web/src/components/ren-process-detail/src/ren-process-detail.vue
  81. 7
      epmet-oper-web/src/components/ren-process-multiple/index.js
  82. 87
      epmet-oper-web/src/components/ren-process-multiple/src/ren-process-multiple.vue
  83. 7
      epmet-oper-web/src/components/ren-process-running/index.js
  84. 100
      epmet-oper-web/src/components/ren-process-running/src/ren-process-running.vue
  85. 85
      epmet-oper-web/src/components/ren-process-running/src/ren-task-back.vue
  86. 102
      epmet-oper-web/src/components/ren-process-running/src/ren-task-entrust.vue
  87. 175
      epmet-oper-web/src/components/ren-process-running/src/ren-task-handle.vue
  88. 84
      epmet-oper-web/src/components/ren-process-running/src/select-user.vue
  89. 7
      epmet-oper-web/src/components/ren-process-start/index.js
  90. 134
      epmet-oper-web/src/components/ren-process-start/src/ren-process-start.vue
  91. 7
      epmet-oper-web/src/components/ren-radio-group/index.js
  92. 20
      epmet-oper-web/src/components/ren-radio-group/src/ren-radio-group.vue
  93. 7
      epmet-oper-web/src/components/ren-region-tree/index.js
  94. 132
      epmet-oper-web/src/components/ren-region-tree/src/ren-region-tree.vue
  95. 7
      epmet-oper-web/src/components/ren-select/index.js
  96. 21
      epmet-oper-web/src/components/ren-select/src/ren-select.vue
  97. 23
      epmet-oper-web/src/element-ui/config.js
  98. 994
      epmet-oper-web/src/element-ui/theme-variables.scss
  99. 1
      epmet-oper-web/src/element-ui/theme/alert.css
  100. 1
      epmet-oper-web/src/element-ui/theme/aside.css

17
.gitignore

@ -0,0 +1,17 @@
*.class
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
*.zip
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
node_modules
dist
epmet-oper
.idea/

2
epmet-oper-web/.env.development

@ -0,0 +1,2 @@
NODE_ENV=development
VUE_APP_NODE_ENV=dev

2
epmet-oper-web/.env.production

@ -0,0 +1,2 @@
NODE_ENV=production
VUE_APP_NODE_ENV=prod

2
epmet-oper-web/.env.production.sit

@ -0,0 +1,2 @@
NODE_ENV=production
VUE_APP_NODE_ENV=prod:sit

2
epmet-oper-web/.env.production.uat

@ -0,0 +1,2 @@
NODE_ENV=production
VUE_APP_NODE_ENV=prod:uat

1
epmet-oper-web/.eslintignore

@ -0,0 +1 @@
/src/icons/iconfont.js

21
epmet-oper-web/README.md

@ -0,0 +1,21 @@
# epmet-oper-web
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```

5
epmet-oper-web/babel.config.js

@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/app'
]
}

105
epmet-oper-web/gulpfile.js

@ -0,0 +1,105 @@
var gulp = require('gulp')
var $ = require('gulp-load-plugins')()
var fs = require('fs')
var path = require('path')
var del = require('del')
//var colors = require('colors')
var child_process = require('child_process')
var theme = {}
var themeList = require('./src/element-ui/config.js').filter(item => !item.hasBuild)
var styleFileDir = './src/assets/scss'
var styleFileDirTemp = `${styleFileDir}-temp`
var themeFileDir = './public/element-theme'
var et = require('element-theme')
var etOptions = require('./package.json')['element-theme']
var themeFileName = etOptions.config.replace(/.*\/(.+\.scss)/, '$1')
/**
* 构建生成主题
*/
gulp.task('themes', () => {
//console.log(colors.green('-------------------- 构建中,主题============= -------------------------'))
if (themeList.length <= 0) { return del(styleFileDirTemp) }
// 删除临时文件,保证本次操作正常执行
//del(styleFileDirTemp)
// 拷贝一份scss样式文件夹,作为构建的临时处理文件夹
//child_process.spawnSync('cp', ['-r', styleFileDir, styleFileDirTemp])
// 拷贝element组件scss变量样式文件至临时处理文件夹中,并修改相应配置信息
//child_process.spawnSync('cp', ['-r', etOptions.config, styleFileDirTemp])
etOptions.config = `${styleFileDirTemp}/${themeFileName}`
// 开始构建生成
fnCreate(themeList)
function fnCreate (themeList) {
if (themeList.length >= 1) {
// 保存当前构建生成的主题对象
theme = themeList[0]
console.log('\n')
//console.log(colors.green('-------------------- 待构建,主题 -------------------------'))
console.log(themeList)
console.log('\n')
//console.log(colors.green('-------------------- 构建中,主题 -------------------------'))
console.log(theme)
console.log('\n')
// 修改.scss临时文件中的$--color-primary主题变量值
var data = fs.readFileSync(etOptions.config, 'utf8')
var result = data.replace(/\$--color-primary:(.*) !default;/, `$--color-primary:${theme.color} !default;`)
fs.writeFileSync(path.resolve(etOptions.config), result)
// 修改aui.scss临时文件中引入element组件主题变量文件路径
var data = fs.readFileSync(`${styleFileDirTemp}/aui.scss`, 'utf8')
var result = data.replace(new RegExp(`(@import \")(.*\/)(${themeFileName}\";)`), '$1./$3')
fs.writeFileSync(path.resolve(`${styleFileDirTemp}/aui.scss`), result)
// 调用element-theme插件,生成element组件主题
etOptions.out = `${themeFileDir}/${theme.name}`
et.run(etOptions, () => {
// 生成后,构建同主题色aui.css项目主题
gulp.start(['styles'], () => {
// 递归下一步
themeList.splice(0, 1)
fnCreate(themeList)
})
})
} else {
// 删除临时文件
del(styleFileDirTemp)
console.log('\n')
//console.log(colors.green('-------------------- 构建完毕,删除临时文件 -------------------------'))
console.log(styleFileDirTemp)
console.log('\n')
// 删除主题不需要的部分文件
var files = [
`${themeFileDir}/**/*.css`,
`!${themeFileDir}/**/index.css`,
`!${themeFileDir}/**/aui.css`,
`!${themeFileDir}/**/fonts`
]
del(files)
//console.log(colors.green('-------------------- 构建完毕,删除主题独立组件文件 -------------------------'))
console.log(files)
console.log('\n')
}
}
})
gulp.task('styles', () => {
return gulp.src([`${styleFileDirTemp}/aui.scss`])
.pipe($.sass().on('error', $.sass.logError))
.pipe($.autoprefixer({
browsers: etOptions.browsers,
cascade: false
}))
.pipe($.cleanCss())
.pipe($.rename('aui.css'))
.pipe(gulp.dest(`${themeFileDir}/${theme.name}`))
})

18909
epmet-oper-web/package-lock.json

File diff suppressed because it is too large

88
epmet-oper-web/package.json

@ -0,0 +1,88 @@
{
"name": "epmet-oper-web",
"version": "2.0.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"build:sit": "vue-cli-service build --mode production.sit",
"build:uat": "vue-cli-service build --mode production.uat",
"build:prod": "vue-cli-service build --mode production",
"lint": "vue-cli-service lint",
"et": "node_modules/.bin/et",
"et:init": "node_modules/.bin/et -i",
"et:list": "gulp themes"
},
"dependencies": {
"axios": "^0.19.0",
"babel-eslint": "^8.0.1",
"babel-plugin-component": "^1.1.1",
"element-theme": "^2.0.1",
"element-ui": "^2.13.0",
"gulp-autoprefixer": "^6.1.0",
"gulp-clean-css": "^4.2.0",
"gulp-load-plugins": "^2.0.0",
"gulp-rename": "^1.4.0",
"gulp-sass": "^4.0.2",
"js-cookie": "^2.2.0",
"lodash": "^4.17.15",
"node-sass": "^4.12.0",
"portfinder": "^1.0.21",
"qs": "^6.7.0",
"quill": "^1.3.6",
"sass-loader": "^7.1.0",
"screenfull": "^4.2.1",
"svg-sprite-loader": "^4.1.6",
"vue": "^2.6.11",
"vue-i18n": "^8.12.0",
"vue-router": "^3.0.7",
"vuex": "^3.1.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.10.0",
"@vue/cli-plugin-eslint": "^3.10.0",
"@vue/cli-service": "^3.10.0",
"@vue/eslint-config-standard": "^4.0.0",
"element-theme-chalk": "^2.13.0",
"natives": "^1.1.6",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"@vue/standard"
],
"rules": {},
"parserOptions": {
"parser": "babel-eslint"
}
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"engines": {
"node": ">= 8.11.1",
"npm": ">= 5.6.0"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 10"
],
"element-theme": {
"config": "./src/element-ui/theme-variables.scss",
"out": "./src/element-ui/theme",
"minimize": true,
"browsers": [
"> 1%",
"last 2 versions",
"not ie <= 10"
]
}
}

1
epmet-oper-web/public/element-theme/blue/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/blue/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/blue/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/blue/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/brown/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/brown/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/brown/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/brown/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/cyan/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/cyan/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/cyan/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/cyan/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/default/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/default/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/default/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/default/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/gray/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/gray/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/gray/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/gray/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/green/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/green/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/green/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/green/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/indigo/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/indigo/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/indigo/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/indigo/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/orange/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/orange/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/orange/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/orange/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/pink/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/pink/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/pink/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/pink/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/purple/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/purple/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/purple/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/purple/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/red/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/red/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/red/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/red/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/turquoise/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/turquoise/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/turquoise/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/turquoise/index.css

File diff suppressed because one or more lines are too long

1
epmet-oper-web/public/element-theme/yellow/aui.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/element-theme/yellow/fonts/element-icons.ttf

Binary file not shown.

BIN
epmet-oper-web/public/element-theme/yellow/fonts/element-icons.woff

Binary file not shown.

1
epmet-oper-web/public/element-theme/yellow/index.css

File diff suppressed because one or more lines are too long

BIN
epmet-oper-web/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

50
epmet-oper-web/public/index.html

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="shortcut icon" href="<%= BASE_URL %>favicon.ico">
<!-- 站点配置 -->
<script>
window.SITE_CONFIG = {};
window.SITE_CONFIG['version'] = 'v2.0.0';
window.SITE_CONFIG['nodeEnv'] = '<%= process.env.VUE_APP_NODE_ENV %>';
window.SITE_CONFIG['apiURL'] = ''; // api请求地址
window.SITE_CONFIG['storeState'] = {}; // vuex本地储存初始化状态(用于不刷新页面的情况下,也能重置初始化项目中所有状态)
window.SITE_CONFIG['contentTabDefault'] = { // 内容标签页默认属性对象
'name': '', // 名称, 由 this.$route.name 自动赋值(默认,名称 === 路由名称 === 路由路径)
'params': {}, // 参数, 由 this.$route.params 自动赋值
'query': {}, // 查询参数, 由 this.$route.query 自动赋值
'menuId': '', // 菜单id(用于选中侧边栏菜单,与this.$store.state.sidebarMenuActiveName进行匹配)
'title': '', // 标题
'isTab': true, // 是否通过tab展示内容?
'iframeURL': '' // 是否通过iframe嵌套展示内容? (以http[s]://开头, 自动匹配)
};
window.SITE_CONFIG['menuList'] = []; // 左侧菜单列表(后台返回,未做处理)
window.SITE_CONFIG['permissions'] = []; // 页面按钮操作权限(后台返回,未做处理)
window.SITE_CONFIG['dynamicRoutes'] = []; // 动态路由列表
window.SITE_CONFIG['dynamicMenuRoutes'] = []; // 动态(菜单)路由列表
window.SITE_CONFIG['dynamicMenuRoutesHasAdded'] = false; // 动态(菜单)路由是否已经添加的状态标示(用于判断是否需要重新拉取数据并进行动态添加操作)
</script>
<!-- 开发环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'dev') { %>
<script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api';</script>
<% } %>
<!-- 集成测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:sit') { %>
<script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api/oper';</script>
<% } %>
<!-- 验收测试环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod:uat') { %>
<script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api/oper';</script>
<% } %>
<!-- 生产环境 -->
<% if (process.env.VUE_APP_NODE_ENV === 'prod') { %>
<script>window.SITE_CONFIG['apiURL'] = 'http://localhost:8080/api/oper';</script>
<% } %>
</head>
<body>
<div id="app"></div>
</body>
</html>

29
epmet-oper-web/src/App.vue

@ -0,0 +1,29 @@
<template>
<transition name="el-fade-in-linear">
<router-view />
</transition>
</template>
<script>
import Cookies from 'js-cookie'
import { messages } from '@/i18n'
export default {
watch: {
'$i18n.locale': 'i18nHandle'
},
created () {
this.i18nHandle(this.$i18n.locale)
},
methods: {
i18nHandle (val, oldVal) {
Cookies.set('language', val)
document.querySelector('html').setAttribute('lang', val)
document.title = messages[val].brand.lg
//
if (this.$route.name !== 'login' && oldVal) {
window.location.reload()
}
}
}
}
</script>

BIN
epmet-oper-web/src/assets/img/avatar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
epmet-oper-web/src/assets/img/login_bg.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

11
epmet-oper-web/src/assets/scss/aui.scss

@ -0,0 +1,11 @@
// 变量
@import "~@/element-ui/theme-variables.scss";
@import "./variables.scss";
// 公共
@import "./normalize.scss";
@import "./common.scss";
// 页面
@import "./pages/login.scss";
@import "./pages/404.scss";
// 模块
@import "./modules/home.scss";

713
epmet-oper-web/src/assets/scss/common.scss

@ -0,0 +1,713 @@
*,
*:before,
*:after {
box-sizing: border-box;
}
body {
font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
font-size: $--font-size-base;
line-height: $base--line-height;
color: $--color-text-primary;
background-color: #fff;
}
a {
color: mix(#fff, $--color-primary, 20%);
text-decoration: none;
&:focus,
&:hover {
color: $--color-primary;
text-decoration: underline;
}
}
img {
vertical-align: middle;
}
:focus,
:hover {
outline: none;
}
/* Utils
------------------------------ */
[v-cloak] {
display: none;
}
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {
clear: both;
}
.fr {
float: right !important;
}
.fl {
float: left !important;
}
.fi {
float: initial !important;
}
.m-auto {
margin: auto !important;
}
.mt-auto {
margin-top: auto !important;
}
.mr-auto {
margin-right: auto !important;
}
.mb-auto {
margin-bottom: auto !important;
}
.ml-auto {
margin-left: auto !important;
}
.text-right {
text-align: right !important;
}
.text-center {
text-align: center !important;
}
.text-left {
text-align: left !important;
}
.w-percent-100 {
width: 100% !important;
}
.base-line-height {
line-height: $base--line-height !important;
}
/* Reset element-ui
------------------------------ */
.aui-wrapper {
.el-card + .el-card {
margin-top: 15px;
}
.el-input__prefix .el-input__icon {
display: inline-block;
vertical-align: middle;
}
.el-date-editor .el-range-separator {
width: 8%;
}
.el-table th {
color: $--color-text-primary;
background-color: $--background-color-base;
}
.el-pagination {
margin-top: 15px;
text-align: right;
}
.el-table__expand-icon {
display: inline-block;
width: 14px;
vertical-align: middle;
margin-right: 5px;
}
}
/* Common
------------------------------ */
// 图标
.icon-svg {
width: 1em;
height: 1em;
fill: currentColor;
vertical-align: middle;
overflow: hidden;
}
// 卡片
.aui-card--fill .el-card__header {
height: $content--card-header-height;
line-height: $content--card-header-height - 36px;
}
.aui-card__title {
font-size: 16px;
}
// 表单
.aui-form__label-icon {
display: inline-block;
margin: 0 3px;
vertical-align: middle;
font-size: 18px;
color: $--color-text-secondary;
}
// 按钮
.aui-button--dashed {
border-style: dashed;
&:focus,
&:hover {
background-color: transparent;
}
&-add {
> span > *[class*="el-icon-"],
> span > *[class*="icon"] {
vertical-align: middle;
font-size: 18px;
margin-right: 5px;
}
}
}
// 主题工具
.aui-theme-tools {
position: fixed;
top: $navbar--height + $content--tabs-header-height + 15px;
right: -210px;
bottom: 0;
z-index: 1010;
width: 210px;
transition: right .3s;
&--open {
right: 0;
}
&__toggle {
position: absolute;
top: 80px;
left: -40px;
width: 40px;
padding: 10px 8px;
text-align: center;
font-size: 20px;
border-right: 0;
border-radius: $--border-radius-base 0 0 $--border-radius-base;
color: #fff;
background-color: $--color-primary;
cursor: pointer;
}
&__content {
height: 100%;
padding: 5px 20px 20px;
border: 1px solid $--border-color-lighter;
border-radius: $--border-radius-base 0 0 $--border-radius-base;
background-color: #fff;
.el-radio {
display: block;
margin-left: 0 !important;
line-height: 28px;
}
}
&__item + &__item {
margin-top: 15px;
border-top: 1px solid $--border-color-lighter;
}
}
/* Layout
------------------------------ */
.aui-wrapper {
position: relative;
padding-top: $navbar--height;
}
/* Sidebar fold
------------------------------ */
.aui-sidebar--fold {
.aui-navbar {
&__header,
&__brand {
width: $sidebar--width-fold;
}
&__brand {
&-lg {
display: none;
}
&-mini {
display: inline-block;
}
}
&__icon-menu--switch {
transform: rotateZ(180deg);
}
}
.aui-sidebar {
&__inner {
width: $sidebar--width-fold + 20px;
}
&,
&__menu {
width: $sidebar--width-fold;
}
&__menu > li > .el-submenu__title {
text-align: center;
}
&__menu-icon {
margin-right: 0;
font-size: 18px;
}
}
.aui-content {
&__wrapper {
margin-left: $sidebar--width-fold;
}
&--tabs > .el-tabs > .el-tabs__header {
left: $sidebar--width-fold;
}
}
}
/* Navbar
------------------------------ */
.aui-navbar {
position: fixed;
top: 0;
right: 0;
left: 0;
z-index: 1030;
display: flex;
align-items: stretch;
height: $navbar--height;
background-color: $--color-primary;
box-shadow: 0 1px 0 0 rgba(0, 0, 0, .05);
&--colorful {
.aui-navbar__body {
background-color: transparent;
}
.aui-navbar__menu {
> .el-menu-item,
> .el-submenu > .el-submenu__title {
color: #fff;
&:focus,
&:hover {
color: #fff;
background-color: mix(#000, $--color-primary, 15%);
}
}
> .el-menu-item.is-active,
> .el-submenu.is-active > .el-submenu__title {
color: #fff;
&:focus,
&:hover {
color: #fff;
}
}
.el-menu-item i,
.el-submenu__title i,
.el-menu-item svg,
.el-submenu__title svg,
.el-menu-item .el-dropdown {
color: #fff !important;
}
.el-button {
color: #fff;
background-color: transparent;
}
}
.aui-navbar__search {
&-txt {
.el-input__inner {
color: #fff;
border-color: #fff;
&::-webkit-input-placeholder {
color: #fff;
}
}
}
}
}
&__header {
position: relative;
width: $sidebar--width;
height: $navbar--height;
transition: width .3s;
}
&__brand {
display: flex;
justify-content: center;
align-items: center;
padding: 5px;
margin: 0;
width: 100%;
height: 100%;
font-size: 20px;
text-transform: uppercase;
white-space: nowrap;
color: #fff;
overflow: hidden;
transition: width .3s;
&-lg,
&-mini {
max-width: 100%;
color: #fff;
cursor: pointer;
&:focus,
&:hover {
color: #fff;
text-decoration: none;
}
}
&-mini {
display: none;
}
}
&__body {
position: relative;
display: flex;
flex: 1;
background-color: #fff;
overflow: hidden;
}
&__menu {
background-color: transparent;
border-bottom: 0 !important;
a:focus,
a:hover {
text-decoration: none;
}
.el-menu-item,
.el-submenu > .el-submenu__title {
height: $navbar--height;
padding: 0 15px;
line-height: $navbar--height;
border-color: transparent !important;
}
.el-menu-item.is-active,
.el-submenu.is-active > .el-submenu__title {
color: $--color-text-secondary;
&:focus,
&:hover {
color: $--color-text-primary;
}
}
.el-menu-item {
&:focus,
&:hover {
.aui-navbar__icon-menu {
color: $--color-text-primary;
}
.el-dropdown {
color: $--color-text-primary;
.el-icon-arrow-down {
transform: rotateZ(180deg);
}
}
}
* {
vertical-align: initial;
}
.aui-navbar__icon-menu {
vertical-align: middle;
font-size: 16px;
}
.el-dropdown {
color: $--color-text-secondary;
.el-icon-arrow-down {
width: auto;
font-size: 12px;
margin: 0 0 0 5px;
transition: transform .3s;
}
}
}
.el-badge {
display: inline;
z-index: 2;
&__content {
line-height: 16px;
}
}
}
&__search {
> *[class*="el-icon-"],
> *[class*="icon"] {
display: inline-block;
vertical-align: middle;
}
&-txt {
width: 0;
transition: width .3s, margin-left .3s;
&.is-show {
width: 210px;
margin-left: 8px;
}
.el-input__inner {
height: $navbar--height - 20px;
padding: 0;
line-height: $navbar--height - 20px;
border-color: $--color-text-primary;
border-top: 0;
border-right: 0;
border-left: 0;
border-radius: 0;
background: transparent;
}
}
}
&__avatar {
.el-dropdown-link {
> img {
width: 36px;
height: auto;
margin-right: 5px;
border-radius: 100%;
vertical-align: middle;
}
}
}
}
/* Sidebar
------------------------------ */
.aui-sidebar {
position: fixed;
top: $navbar--height;
left: 0;
bottom: 0;
z-index: 1020;
width: $sidebar--width;
background-color: #fff;
box-shadow: 1px 0 2px 0 rgba(0, 0, 0, .05);
overflow: hidden;
transition: width .3s;
&--dark {
background-color: $sidebar--background-color-dark;
.aui-sidebar__menu,
> .el-menu--popup {
background-color: $sidebar--background-color-dark;
.el-menu-item,
.el-submenu > .el-submenu__title {
color: $sidebar--text-color-dark;
&:focus,
&:hover {
color: mix(#fff, $sidebar--text-color-dark, 50%);
background-color: mix(#fff, $sidebar--background-color-dark, 2.5%);
}
}
.el-menu,
.el-submenu.is-opened {
background-color: mix(#000, $sidebar--background-color-dark, 15%);
}
.el-menu-item.is-active,
.el-submenu.is-active > .el-submenu__title {
color: mix(#fff, $sidebar--text-color-dark, 80%);
}
}
}
&__inner {
position: relative;
z-index: 1;
width: $sidebar--width + 20px;
height: 100%;
padding-bottom: 15px;
overflow-x: hidden;
overflow-y: scroll;
transition: width .3s;
}
&__menu {
width: $sidebar--width;
border-right: 0;
transition: width .3s;
.el-menu-item,
.el-submenu__title {
height: $sidebar--menu-item-height;
line-height: $sidebar--menu-item-height;
}
}
&__menu-icon {
display: inline-block;
vertical-align: middle;
width: 24px !important;
margin-right: 5px;
text-align: center;
font-size: 16px;
color: inherit !important;
transition: font-size .3s;
}
}
/* Content
------------------------------ */
.aui-content {
position: relative;
padding: $content--padding;
min-height: calc(100vh - #{$navbar--height});
&__wrapper {
position: relative;
margin-left: $sidebar--width;
min-height: calc(100vh - #{$navbar--height});
background-color: $content--background-color;
transition: margin-left .3s;
}
> .aui-card--fill > .el-card__body {
min-height: calc(#{$content--fill-height} - 2px);
}
> .aui-card--fill > .el-card__header + .el-card__body {
min-height: calc(#{$content--fill-height} - #{$content--card-header-height} - 2px);
}
&--tabs {
padding: $content--tabs-header-height 0 0;
}
&--tabs-tools {
position: fixed;
top: $navbar--height;
right: 0;
z-index: 931;
min-width: $content--tabs-header-height;
height: $content--tabs-header-height;
padding: 0 12px;
text-align: center;
font-size: 16px;
line-height: $content--tabs-header-height;
background-color: $--background-color-base;
cursor: pointer;
}
&--tabs-icon-nav {
display: inline-block;
vertical-align: middle;
font-size: 16px;
}
> .el-tabs {
> .el-tabs__header {
position: fixed;
top: $navbar--height;
left: $sidebar--width;
right: 0;
z-index: 930;
padding: 0 55px 0 15px;
margin: 0;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05);
background-color: #fff;
transition: left .3s;
> .el-tabs__nav-wrap {
margin-bottom: 0;
&:after {
display: none;
}
> .el-tabs__nav-next,
> .el-tabs__nav-prev {
line-height: $content--tabs-header-height;
}
> .el-tabs__nav-scroll > .el-tabs__nav {
& > .el-tabs__active-bar {
display: none;
}
& > .el-tabs__item {
height: $content--tabs-header-height;
padding: 0 15px;
line-height: $content--tabs-header-height;
border: 0;
color: $--color-text-regular;
&:focus,
&:hover,
&.is-active {
color: $--color-text-primary;
background-color: $--background-color-base;
&:after {
display: block;
}
> .el-icon-close {
color: $--color-text-primary;
}
}
&:after {
display: none;
position: absolute;
bottom: 0;
left: 0;
content: '';
width: 100%;
height: 2px;
background-color: $--color-primary;
}
+ .el-tabs__item {
margin-left: 1px;
}
> .el-icon-close {
width: 14px;
margin-left: 15px;
color: $--color-text-secondary;
}
> i.icon {
display: inline-block;
vertical-align: middle;
font-size: 18px;
}
}
}
}
}
> .el-tabs__content {
padding: $content--padding;
.el-loading-mask {
z-index: 830;
}
> .el-tab-pane {
min-height: calc(#{$content--fill-height-tabs});
> .aui-card--fill > .el-card__body {
min-height: calc(#{$content--fill-height-tabs} - 2px);
}
> .aui-card--fill > .el-card__header + .el-card__body {
min-height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px);
}
&.is-iframe {
height: calc(#{$content--fill-height-tabs} + #{$content--padding * 2});
margin: -$content--padding;
min-height: auto;
> .aui-card--fill {
background-color: transparent;
}
> .aui-card--fill > .el-card__header {
background-color: #fff;
}
> .aui-card--fill > .el-card__body {
height: calc(#{$content--fill-height-tabs} - 2px);
margin: $content--padding;
min-height: auto;
border: $--border-base;
border-color: $--border-color-lighter;
border-radius: $--border-radius-base;
background-color: #fff;
}
> .aui-card--fill > .el-card__header + .el-card__body {
height: calc(#{$content--fill-height-tabs} - #{$content--card-header-height} - 2px);
}
}
}
}
}
// quill富文本编辑器
.ql-toolbar {
line-height: 20px;
&.ql-snow {
border-color: $--border-color-base;
}
.ql-formats {
margin: 0 5px;
}
}
.ql-container {
height: 150px;
&.ql-snow {
border-color: $--border-color-base;
}
}
}
/* Page
------------------------------ */
*[class*="aui-page__"] {
padding-top: 0;
.aui-content {
min-height: auto;
&__wrapper {
min-height: 100vh;
margin-left: 0;
}
> .aui-card--fill > .el-card__body {
min-height: calc(100vh - #{$content--padding * 2} - 2px);
}
> .aui-card--fill > .el-card__header + .el-card__body {
min-height: calc(100vh - #{$content--padding * 2} - #{$content--card-header-height} - 2px);
}
}
}

6
epmet-oper-web/src/assets/scss/modules/home.scss

@ -0,0 +1,6 @@
.mod-home {
line-height: 1.8;
ul li {
color: $--color-text-regular;
}
}

447
epmet-oper-web/src/assets/scss/normalize.scss

@ -0,0 +1,447 @@
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
html {
line-height: 1.15; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main { /* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details, /* 1 */
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}

48
epmet-oper-web/src/assets/scss/pages/404.scss

@ -0,0 +1,48 @@
.aui-page__not-found {
.aui-content {
display: flex;
flex-flow: column wrap;
align-items: center;
min-height: 100vh;
padding: 15% 50px 50px;
text-align: center;
&__wrapper {
height: 100vh;
background-color: transparent;
overflow-x: hidden;
overflow-y: auto;
}
}
.title {
margin: 0 0 15px;
font-size: 10em;
font-weight: 400;
color: $--color-text-regular;
}
.desc {
margin: 0 0 20px;
font-size: 26px;
color: $--color-text-secondary;
> em {
margin: 0 5px;
font-style: normal;
color: $--color-warning;
}
}
.btn-bar .el-button {
margin: 0 15px;
}
}
@media (max-width: 767px) {
.aui-page__not-found {
.title {
font-size: 8em;
}
.desc {
font-size: 20px;
}
.btn-bar .el-button {
margin: 0 7.5px;
}
}
}

220
epmet-oper-web/src/assets/scss/pages/login.scss

@ -0,0 +1,220 @@
.aui-page__login {
&::before,
&::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
content: "";
}
&::before {
background-image: url(~@/assets/img/login_bg.jpg);
background-size: cover;
}
&::after {
background-color: rgba(38, 50, 56, .4);
}
.aui-content {
display: flex;
flex-flow: column wrap;
justify-content: center;
align-items: center;
min-height: 100vh;
padding: 50px 20px 150px;
text-align: center;
&__wrapper {
height: 100vh;
background-color: transparent;
overflow-x: hidden;
overflow-y: auto;
}
}
.login-header {
padding: 20px;
color: #fff;
.login-brand {
margin: 0 0 15px;
font-size: 40px;
font-weight: 400;
letter-spacing: 2px;
text-transform: uppercase;
}
.login-intro {
padding: 0;
margin: 0;
list-style: none;
> li {
font-size: 16px;
line-height: 1.5;
color: rgba(255, 255, 255, .6);
& + li {
margin-top: 5px;
}
}
}
}
.login-body,
.login-footer {
width: 460px;
}
.login-body {
padding: 20px 30px;
background-color: #fff;
.login-title {
font-size: 18px;
font-weight: 400;
}
.el-input__prefix .el-input__icon {
font-size: 16px;
}
.login-captcha {
height: $--input-height;
line-height: $--input-height -2px;
> img {
max-width: 100%;
cursor: pointer;
}
}
.login-shortcut {
margin-bottom: 20px;
&__title {
position: relative;
margin: 0 0 15px;
font-weight: 400;
&::before {
position: absolute;
top: 50%;
right: 0;
left: 0;
z-index: 1;
content: "";
height: 1px;
margin-top: -.5px;
background-color: $--border-color-base;
overflow: hidden;
}
> span {
position: relative;
z-index: 2;
padding: 0 20px;
color: rgba(0, 0, 0, .3);
background-color: #fff;
}
}
&__list {
padding: 0;
margin: 0;
list-style: none;
font-size: 0;
> li {
display: inline-block;
vertical-align: middle;
margin: 0 10px;
font-size: 28px;
}
}
}
.login-guide {
color: rgba(0, 0, 0, .3);
}
}
.login-footer {
position: absolute;
bottom: 0;
padding: 20px;
color: rgba(255, 255, 255, .6);
p {
margin: 10px 0;
}
a {
padding: 0 5px;
color: rgba(255, 255, 255, .6);
&:focus,
&:hover {
color: #fff;
}
}
}
// 右侧垂直风格
&--right-vertical {
.aui-content {
flex-flow: row nowrap;
justify-content: flex-start;
align-items: stretch;
padding: 0;
}
.login-header {
flex: 1;
display: flex;
flex-flow: column wrap;
justify-content: center;
padding: 30px 120px;
text-align: left;
}
.login-body {
position: relative;
display: flex;
flex-flow: column wrap;
justify-content: center;
padding: 120px 30px 150px;
text-align: center;
.login-guide {
margin-top: 0;
}
}
.login-footer {
right: 0;
color: $--color-text-regular;
a {
color: $--color-text-regular;
&:focus,
&:hover {
color: $--color-primary;
}
}
}
}
}
@media (max-width: 991px) {
.aui-page__login {
&--right-vertical {
.login-header {
padding: 30px;
}
}
}
}
@media (max-width: 767px) {
.aui-page__login {
&--right-vertical {
.login-header {
.login-brand,
.login-intro {
display: none;
}
}
}
}
}
@media (max-width: 575px) {
.aui-page__login {
.login-body,
.login-footer {
width: 100%;
}
.login-captcha {
text-align: left;
> img {
width: 136px;
}
}
&--right-vertical {
.login-header {
display: none;
}
}
}
}

22
epmet-oper-web/src/assets/scss/variables.scss

@ -0,0 +1,22 @@
// Base
$base--line-height: 1.15;
// Navbar
$navbar--height: 50px;
// Sidebar
$sidebar--width: 230px;
$sidebar--width-fold: 64px;
$sidebar--background-color-dark: #263238;
$sidebar--text-color-dark: #8a979e;
$sidebar--menu-item-height: 48px;
// Content
$content--padding: 15px;
$content--background-color: #f1f4f5;
$content--card-header-height: 60px;
$content--tabs-header-height: 38px;
// Content, 填充整屏高度(非tabs状态) = 整屏高度 - 导航条高度 - aui-content上下内边距高度
$content--fill-height: calc(100vh - #{$navbar--height} - #{$content--padding * 2});
// Content, 填充整屏高度(是tabs状态) = 整屏高度 - 导航条高度 - tabs组件header高度 - tabs组件content上下内边距高度
$content--fill-height-tabs: calc(100vh - #{$navbar--height} - #{$content--tabs-header-height} - #{$content--padding * 2});

0
epmet-oper-web/src/components/.gitkeep

7
epmet-oper-web/src/components/ren-dept-tree/index.js

@ -0,0 +1,7 @@
import RenDeptTree from './src/ren-dept-tree'
RenDeptTree.install = function (Vue) {
Vue.component(RenDeptTree.name, RenDeptTree)
}
export default RenDeptTree

118
epmet-oper-web/src/components/ren-dept-tree/src/ren-dept-tree.vue

@ -0,0 +1,118 @@
<template>
<div>
<el-input v-model="showDeptName" :placeholder="placeholder" @focus="deptDialog">
<el-button slot="append" icon="el-icon-search" @click="deptDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleDept" width="30%" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
class="filter-tree"
:data="deptList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
ref="tree">
</el-tree>
<template slot="footer">
<el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button>
<el-button v-if="query" type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button>
<el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'RenDeptTree',
data () {
return {
filterText: '',
visibleDept: false,
deptList: [],
showDeptName: '',
expandedKeys: null,
defaultProps: {
children: 'children',
label: 'label'
}
}
},
props: {
value: [Number, String],
deptName: String,
query: Boolean,
placeholder: String
},
watch: {
filterText (val) {
this.$refs.tree.filter(val)
},
deptName (val) {
this.showDeptName = val
}
},
methods: {
deptDialog () {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
}
this.visibleDept = true
this.getDeptList(this.value)
},
filterNode (value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDeptList (id) {
return this.$http.get('/sys/dept/list').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.deptList = res.data
this.$nextTick(() => {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
},
cancelHandle () {
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
clearHandle () {
this.$emit('input', '')
this.$emit('update:deptName', '')
this.showDeptName = ''
this.visibleDept = false
this.deptList = []
this.filterText = ''
},
commitHandle () {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('dept.chooseerror'))
return
}
this.$emit('input', node.id)
this.$emit('update:deptName', node.name)
this.showDeptName = node.name
this.visibleDept = false
this.deptList = []
this.filterText = ''
}
}
}
</script>

7
epmet-oper-web/src/components/ren-process-detail/index.js

@ -0,0 +1,7 @@
import RenProcessDetail from './src/ren-process-detail'
RenProcessDetail.install = function (Vue) {
Vue.component(RenProcessDetail.name, RenProcessDetail)
}
export default RenProcessDetail

79
epmet-oper-web/src/components/ren-process-detail/src/ren-process-detail.vue

@ -0,0 +1,79 @@
<template>
<el-card shadow="never" class="aui-card--fill">
<h4>{{ $t('process.flowImage') }}</h4>
<img :src="getResourceURL()" class="image">
<h4>{{ $t('process.circulation') }}</h4>
<div class="mod-sys__dict">
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
style="width: 100%;">
<el-table-column prop="activityName" :label="$t('process.taskName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="assignee" :label="$t('process.assignee')" header-align="center" align="center"></el-table-column>
<el-table-column prop="startTime" :label="$t('task.startTime')" header-align="center" align="center"></el-table-column>
<el-table-column prop="endTime" :label="$t('task.endTime')" header-align="center" align="center"></el-table-column>
<el-table-column prop="comment" :label="$t('process.comment')" header-align="center" align="center"></el-table-column>
<el-table-column prop="durationInSeconds" :label="$t('task.durationInSeconds')" header-align="center" align="center" width="180"></el-table-column>
</el-table>
<el-pagination
v-if="dataForm.pid === '0'"
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
</el-card>
</template>
<style scoped>
.image {
width: 60%;
display: block;
margin: 0 auto 30px auto;
}
</style>
<script>
import Cookies from 'js-cookie'
import qs from 'qs'
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
name: 'RenProcessDetail',
data () {
return {
mixinViewModuleOptions: {
getDataListURL: '/activiti/his/getTaskHandleDetailInfo',
getDataListIsPage: false,
createdIsNeed: false,
deleteIsBatch: true,
deleteIsBatchKey: 'deploymentId'
},
dataForm: {
processInstanceId: ''
}
}
},
created () {
this.dataForm.processInstanceId = this.$route.params.processInstanceId
this.getResourceURL()
this.getDataList()
},
methods: {
// (xml/image)url
getResourceURL () {
var params = qs.stringify({
'token': Cookies.get('token'),
'processInstanceId': this.dataForm.processInstanceId
})
return `${window.SITE_CONFIG['apiURL']}/activiti/his/getInstImage?${params}`
}
}
}
</script>

7
epmet-oper-web/src/components/ren-process-multiple/index.js

@ -0,0 +1,7 @@
import RenProcessMultiple from './src/ren-process-multiple'
RenProcessMultiple.install = function (Vue) {
Vue.component(RenProcessMultiple.name, RenProcessMultiple)
}
export default RenProcessMultiple

87
epmet-oper-web/src/components/ren-process-multiple/src/ren-process-multiple.vue

@ -0,0 +1,87 @@
<template>
<div>
<ren-process-start v-if="startProcessVisible" :saveFormUrl="saveFormUrl" :updateInstanceIdUrl="updateInstanceIdUrl" :dataFormName="dataFormName" ref="renProcessStart"></ren-process-start>
<ren-process-running v-if="runningHandleVisible" ref="renProcessRunning"></ren-process-running>
<ren-process-detail v-if="processDetailVisible" ref="renProcessDetail"></ren-process-detail>
</div>
</template>
<script>
export default {
name: 'RenProcessMultiple',
data () {
return {
//
startProcessVisible: false,
//
runningHandleVisible: false,
//
processDetailVisible: false,
// start(taskHandle)(null)
showType: null,
//
parentObj: null,
dataForm: {
processDefinitionKey: '',
taskId: '',
businessKey: '',
processInstanceId: ''
},
//
callbacks: {
//
startProcessSuccessCallback: null,
//
startProcessErrorCallback: null,
//
taskHandleSuccessCallback: null,
//
taskHandleErrorCallback: null,
//
formSaveSuccessCallback: null,
//
formSaveErrorCallback: null
}
}
},
components: {
},
created () {
this.$nextTick(() => {
if (!this.showType) {
this.startProcessVisible = false
this.runningHandleVisible = false
this.processDetailVisible = true
} else if (this.showType === 'start') {
//
this.startProcessVisible = true
this.$nextTick(() => {
this.$refs.renProcessStart.rootObj = this.parentObj
this.$refs.renProcessStart.callbacks = this.callbacks
this.$refs.renProcessStart.dataForm.processDefinitionKey = this.dataForm.processDefinitionKey
})
} else if (this.showType === 'taskHandle') {
//
this.runningHandleVisible = true
this.$nextTick(() => {
this.$refs.renProcessRunning.rootObj = this.parentObj
this.$refs.renProcessRunning.dataForm.taskId = this.dataForm.taskId
this.$refs.renProcessRunning.dataForm.processInstanceId = this.dataForm.processInstanceId
this.$refs.renProcessRunning.callbacks = this.callbacks
this.$refs.renProcessRunning.dataForm.businessKey = this.dataForm.businessKey
this.$refs.renProcessRunning.dataForm.processDefinitionKey = this.dataForm.processDefinitionKey
})
}
})
},
props: {
saveFormUrl: String,
updateInstanceIdUrl: String,
dataFormName: String
},
watch: {
},
methods: {
}
}
</script>

7
epmet-oper-web/src/components/ren-process-running/index.js

@ -0,0 +1,7 @@
import RenProcessRunning from './src/ren-process-running'
RenProcessRunning.install = function (Vue) {
Vue.component(RenProcessRunning.name, RenProcessRunning)
}
export default RenProcessRunning

100
epmet-oper-web/src/components/ren-process-running/src/ren-process-running.vue

@ -0,0 +1,100 @@
<template>
<div>
<el-button type="primary" @click="completeTask()">{{ $t('process.completeTask') }}</el-button>
<el-button type="warning" @click="rejectTask()">{{ $t('process.rejectTask') }}</el-button>
<el-button type="success" @click="rollbackTask()">{{ $t('process.doBackRollback') }}</el-button>
<el-button type="info" @click="entrustTask()">{{ $t('process.entrustTask') }}</el-button>
<el-button type="danger" @click="terminationTask()">{{ $t('process.terminationTask') }}</el-button>
<ren-task-back v-if="renTaskBackVisible" ref="renTaskBack"></ren-task-back>
<ren-task-entrust v-if="renTaskEntrustVisible" ref="renTaskEntrust"></ren-task-entrust>
<ren-task-handle v-if="renTaskHandleVisible" ref="renTaskHandle"></ren-task-handle>
</div>
</template>
<script>
import RenTaskBack from './ren-task-back'
import RenTaskEntrust from './ren-task-entrust'
import RenTaskHandle from './ren-task-handle'
export default {
name: 'RenProcessRunning',
data () {
return {
// 退
renTaskBackVisible: false,
renTaskEntrustVisible: false,
renTaskHandleVisible: false,
parentObj: null,
dataForm: {
taskId: '',
businessKey: '',
processDefinitionKey: '',
processInstanceId: ''
},
//
callbacks: {
taskHandleSuccessCallback: null,
taskHandleErrorCallback: null
}
}
},
components: {
RenTaskBack,
RenTaskEntrust,
RenTaskHandle
},
created () {
this.$nextTick(() => {
})
},
props: {
},
watch: {
},
methods: {
completeTask () {
this.renTaskHandleVisible = true
this.$nextTick(() => {
this.$refs.renTaskHandle.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskHandle.callbacks = this.callbacks
this.$refs.renTaskHandle.handleType = 'complete'
this.$refs.renTaskHandle.init()
})
},
rejectTask () {
this.renTaskHandleVisible = true
this.$nextTick(() => {
this.$refs.renTaskHandle.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskHandle.callbacks = this.callbacks
this.$refs.renTaskHandle.handleType = 'reject'
this.$refs.renTaskHandle.init()
})
},
rollbackTask () {
this.renTaskBackVisible = true
this.$nextTick(() => {
this.$refs.renTaskBack.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskBack.dataForm.processInstanceId = this.dataForm.processInstanceId
this.$refs.renTaskBack.callbacks = this.callbacks
this.$refs.renTaskBack.init()
})
},
entrustTask () {
this.renTaskEntrustVisible = true
this.$nextTick(() => {
this.$refs.renTaskEntrust.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskEntrust.callbacks = this.callbacks
this.$refs.renTaskEntrust.init()
})
},
terminationTask () {
this.renTaskHandleVisible = true
this.$nextTick(() => {
this.$refs.renTaskHandle.dataForm.taskId = this.dataForm.taskId
this.$refs.renTaskHandle.callbacks = this.callbacks
this.$refs.renTaskHandle.handleType = 'termination'
this.$refs.renTaskHandle.init()
})
}
}
}
</script>

85
epmet-oper-web/src/components/ren-process-running/src/ren-task-back.vue

@ -0,0 +1,85 @@
<template>
<el-dialog :visible.sync="visible" :title="$t('process.doBackRollback')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.comment')" prop="comment">
<el-input type="textarea" v-model="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="doBackRollback()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import qs from 'qs'
export default {
data () {
return {
visible: false,
dataForm: {
id: '',
comment: '',
taskId: '',
processInstanceId: ''
},
//
callbacks: {
taskHandleSuccessCallback: null,
taskHandleErrorCallback: null
}
}
},
computed: {
dataRule () {
return {
comment: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
})
},
doBackRollback: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
var params = qs.stringify({
'taskId': this.dataForm.taskId,
'processInstanceId': this.dataForm.processInstanceId,
'comment': this.dataForm.comment
})
this.$http['post']('/activiti/task/backPreviousTask?', params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

102
epmet-oper-web/src/components/ren-process-running/src/ren-task-entrust.vue

@ -0,0 +1,102 @@
<template>
<el-dialog :visible.sync="visible" :title="$t('process.entrustTask')" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.assignee')">
<el-input v-model="dataForm.entrustUserName" class="input-with-select">
<el-button slot="append" icon="el-icon-search" @click="selectUserInfo()"></el-button>
</el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="entrustTask()">{{ $t('confirm') }}</el-button>
</template>
<select-user v-if="selectUserVisible" ref="selectUser" ></select-user>
</el-dialog>
</template>
<script>
import SelectUser from './select-user'
import qs from 'qs'
export default {
data () {
return {
visible: false,
selectUserVisible: false,
dataForm: {
id: '',
entrustUserId: '',
entrustUserName: '',
taskId: ''
},
//
callbacks: {
taskHandleSuccessCallback: null,
taskHandleErrorCallback: null
}
}
},
computed: {
dataRule () {
return {
entrustUserName: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
components: {
SelectUser
},
methods: {
init () {
this.visible = true
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
})
},
//
entrustTask () {
if (!this.dataForm.entrustUserId) {
this.$message.error(this.$t('process.entrustError'))
return
}
var task = qs.stringify({
taskId: this.dataForm.taskId,
assignee: this.dataForm.entrustUserId
})
this.$http['post']('/activiti/task/entrust', task).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
}).catch(() => {})
},
selectUserInfo () {
this.selectUserVisible = true
this.$nextTick(() => {
this.$refs.selectUser.dataForm.id = ''
this.$refs.selectUser.init(this.setUserInfo)
})
},
setUserInfo (userInfo) {
this.dataForm.entrustUserId = userInfo.id
this.dataForm.entrustUserName = userInfo.realName
}
}
}
</script>

175
epmet-oper-web/src/components/ren-process-running/src/ren-task-handle.vue

@ -0,0 +1,175 @@
<template>
<el-dialog :visible.sync="visible" :title="handleTitle" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmitHandle()" :label-width="$i18n.locale === 'en-US' ? '120px' : '80px'">
<el-form-item :label="$t('process.comment')" prop="comment">
<el-input type="textarea" v-model="dataForm.comment" :placeholder="$t('process.comment')"></el-input>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="visible = false">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import debounce from 'lodash/debounce'
import qs from 'qs'
export default {
data () {
return {
visible: false,
handleType: '',
handleTitle: '',
dataForm: {
comment: '',
taskId: ''
},
//
callbacks: {
taskHandleSuccessCallback: null,
taskHandleErrorCallback: null
}
}
},
computed: {
dataRule () {
return {
comment: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' }
]
}
}
},
methods: {
init () {
this.visible = true
if (this.handleType === 'complete') {
this.handleTitle = this.$t('process.completeTask')
} else if (this.handleType === 'reject') {
this.handleTitle = this.$t('process.rejectTask')
} else if (this.handleType === 'termination') {
this.handleTitle = this.$t('process.terminationTask')
}
this.$nextTick(() => {
this.$refs['dataForm'].resetFields()
})
},
//
dataFormSubmitHandle () {
if (this.handleType === 'complete') {
this.completeTask()
} else if (this.handleType === 'reject') {
this.rejectTask()
} else if (this.handleType === 'termination') {
this.terminationTask()
}
},
//
rejectTask: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
if (!this.dataForm.taskId) {
return false
}
var params = qs.stringify({
'taskId': this.dataForm.taskId,
'comment': this.dataForm.comment
})
this.$http['post']('/activiti/task/backToFirst?', params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
})
})
}, 1000, { 'leading': true, 'trailing': false }),
//
completeTask: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
if (!this.dataForm.taskId) {
return false
}
var params = qs.stringify({
'taskId': this.dataForm.taskId,
'comment': this.dataForm.comment
})
this.$http.post('/activiti/task/complete?' + params).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false }),
//
terminationTask: debounce(function () {
this.$refs['dataForm'].validate((valid) => {
if (!valid) {
return false
}
if (!this.dataForm.taskId) {
return false
}
var task = qs.stringify({
taskId: this.dataForm.taskId,
comment: this.dataForm.comment
})
this.$http['post']('/activiti/task/endProcess', task).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.taskHandleErrorCallback) {
this.callbacks.taskHandleErrorCallback(res)
}
return
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
this.visible = false
if (this.callbacks.taskHandleSuccessCallback) {
this.callbacks.taskHandleSuccessCallback(res)
}
}
})
}).catch(() => {})
})
}, 1000, { 'leading': true, 'trailing': false })
}
}
</script>

84
epmet-oper-web/src/components/ren-process-running/src/select-user.vue

@ -0,0 +1,84 @@
<template>
<el-dialog :visible.sync="visibleSelect" width="60%" :modal="false" :title="$t('user.select')" :close-on-click-modal="false" :close-on-press-escape="false">
<div class="mod-sys__user">
<el-form :inline="true" size="mini" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.username" :placeholder="$t('user.username')" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-table
v-loading="dataListLoading"
:data="dataList"
border
@selection-change="dataListSelectionChangeHandle"
@sort-change="dataListSortChangeHandle"
style="width: 100%;" size="mini">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="username" :label="$t('user.username')" sortable="custom" header-align="center" align="center"></el-table-column>
<el-table-column prop="deptName" :label="$t('user.deptName')" header-align="center" align="center"></el-table-column>
<el-table-column prop="email" :label="$t('user.email')" header-align="center" align="center"></el-table-column>
<el-table-column prop="mobile" :label="$t('user.mobile')" sortable="custom" header-align="center" align="center"></el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-sizes="[10, 20, 50, 100]"
:page-size="limit"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="pageSizeChangeHandle"
@current-change="pageCurrentChangeHandle">
</el-pagination>
</div>
<template slot="footer">
<el-button type="default" @click="cancelHandle()">{{ $t('cancel') }}</el-button>
<el-button type="primary" @click="commitHandle()">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</template>
<script>
import mixinViewModule from '@/mixins/view-module'
export default {
mixins: [mixinViewModule],
data () {
return {
visibleSelect: false,
mixinViewModuleOptions: {
getDataListURL: '/sys/user/page',
getDataListIsPage: true
},
dataForm: {
username: ''
},
callback: null
}
},
components: {},
methods: {
init (callback) {
this.visibleSelect = true
this.callback = callback
this.$nextTick(() => {
this.getDataList()
})
},
cancelHandle () {
this.visibleSelect = false
},
commitHandle () {
if (this.callback) {
if (this.dataListSelections.length !== 1) {
this.$message.error(this.$t('user.selecterror'))
return
} else {
this.callback(this.dataListSelections[0])
}
}
this.visibleSelect = false
}
}
}
</script>

7
epmet-oper-web/src/components/ren-process-start/index.js

@ -0,0 +1,7 @@
import RenProcessStart from './src/ren-process-start'
RenProcessStart.install = function (Vue) {
Vue.component(RenProcessStart.name, RenProcessStart)
}
export default RenProcessStart

134
epmet-oper-web/src/components/ren-process-start/src/ren-process-start.vue

@ -0,0 +1,134 @@
<template>
<el-button type="primary" @click="processStartHandle()">{{ $t('process.createInstance') }}</el-button>
</template>
<script>
import qs from 'qs'
export default {
name: 'RenProcessStart',
data () {
return {
formUrl: '',
instanceIdUrl: '',
formName: null,
rootObj: null,
dataForm: {
processDefinitionKey: ''
},
//
callbacks: {
startProcessSuccessCallback: null,
startProcessErrorCallback: null,
formSaveSuccessCallback: null,
formSaveErrorCallback: null
}
}
},
components: {
},
created () {
this.$nextTick(() => {
this.formUrl = this.saveFormUrl
this.instanceIdUrl = this.updateInstanceIdUrl
this.formName = this.dataFormName
})
},
props: {
saveFormUrl: String,
updateInstanceIdUrl: String,
dataFormName: String
},
watch: {
saveFormUrl (val) {
this.formUrl = val
},
updateInstanceIdUrl (val) {
this.instanceIdUrl = val
},
dataFormName (val) {
this.formName = val
}
},
methods: {
//
processStartHandle () {
if (!this.formUrl) {
return this.$message.error(this.$t('process.formURLError'))
}
if (!this.dataForm.processDefinitionKey) {
return this.$message.error(this.$t('process.keyError'))
}
if (!this.formName) {
return this.$message.error(this.$t('process.formNameError'))
}
this.rootObj.$refs[this.formName].validate((valid) => {
if (!valid) {
return false
}
this.$http.get(`/activiti/process/lastestPage`, {
params: {
key: this.dataForm.processDefinitionKey
}
}).then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
if (!res.data.list || res.data.list.length <= 0) {
return this.$message.error(this.$t('process.notExistError'))
}
this.$http['post'](this.formUrl, this.rootObj[this.formName]).then(({ data: res }) => {
if (res.code !== 0) {
this.$message.error(res.msg)
if (this.callbacks.formSaveErrorCallback) {
this.callbacks.formSaveErrorCallback(res)
}
}
if (this.callbacks.formSaveSuccessCallback) {
this.callbacks.formSaveSuccessCallback(res)
}
if (!res.data.businessKey) {
return this.$message.error(this.$t('process.businessKeyError'))
// this.startProcess(this.dataForm.processDefinitionKey, null, this.rootObj[this.formName])
} else {
this.startProcess(this.dataForm.processDefinitionKey, res.data.businessKey, this.rootObj[this.formName])
}
}).catch(() => {})
}).catch(() => {})
})
},
//
startProcess (processDefinitionKey, businessKey, formData) {
var data = {
processDefinitionKey: processDefinitionKey,
businessKey: businessKey,
variables: formData
}
this.$http['post']('/activiti/running/startOfBusinessKey', data).then(({ data: res }) => {
if (res.code !== 0) {
if (this.callbacks.startProcessErrorCallback) {
this.callbacks.startProcessErrorCallback(res.data)
}
}
this.$message({
message: this.$t('prompt.success'),
type: 'success',
duration: 500,
onClose: () => {
if (this.callbacks.startProcessSuccessCallback) {
this.callbacks.startProcessSuccessCallback(res.data)
}
}
})
if (this.instanceIdUrl) {
var params = qs.stringify({
processInstanceId: res.data.processInstanceId,
processDefinitionKey: processDefinitionKey,
businessKey: businessKey
})
this.$http['post'](this.instanceIdUrl + '?' + params).then(({ data: res }) => {})
}
}).catch(() => {})
}
}
}
</script>

7
epmet-oper-web/src/components/ren-radio-group/index.js

@ -0,0 +1,7 @@
import RenRadioGroup from './src/ren-radio-group'
RenRadioGroup.install = function (Vue) {
Vue.component(RenRadioGroup.name, RenRadioGroup)
}
export default RenRadioGroup

20
epmet-oper-web/src/components/ren-radio-group/src/ren-radio-group.vue

@ -0,0 +1,20 @@
<template>
<el-radio-group :value="value+''" @input="$emit('input', $event)">
<el-radio :label="data.dictValue" v-for="data in dataList" :key="data.dictValue">{{data.dictLabel}}</el-radio>
</el-radio-group>
</template>
<script>
import { getDictDataList } from '@/utils'
export default {
name: 'RenRadioGroup',
data () {
return {
dataList: getDictDataList(this.dictType)
}
},
props: {
value: [Number, String],
dictType: String
}
}
</script>

7
epmet-oper-web/src/components/ren-region-tree/index.js

@ -0,0 +1,7 @@
import RenRegionTree from './src/ren-region-tree'
RenRegionTree.install = function (Vue) {
Vue.component(RenRegionTree.name, RenRegionTree)
}
export default RenRegionTree

132
epmet-oper-web/src/components/ren-region-tree/src/ren-region-tree.vue

@ -0,0 +1,132 @@
<template>
<div class="ren-region">
<el-input v-model="showName" :placeholder="placeholder" @focus="treeDialog">
<el-button slot="append" icon="el-icon-search" @click="treeDialog"></el-button>
</el-input>
<el-input :value="value" style="display: none"></el-input>
<el-dialog :visible.sync="visibleTree" width="360px" :modal="false" :title="placeholder" :close-on-click-modal="false" :close-on-press-escape="false">
<el-form size="mini" :inline="true">
<el-form-item :label="$t('keyword')">
<el-input v-model="filterText"></el-input>
</el-form-item>
<el-form-item>
<el-button type="default">{{ $t('query') }}</el-button>
</el-form-item>
</el-form>
<el-tree
class="filter-tree"
:data="dataList"
:default-expanded-keys="expandedKeys"
:props="{ label: 'name', children: 'children' }"
:expand-on-click-node="false"
:filter-node-method="filterNode"
:highlight-current="true"
node-key="id"
ref="tree">
</el-tree>
<template slot="footer">
<el-button type="default" @click="cancelHandle()" size="mini">{{ $t('cancel') }}</el-button>
<el-button type="info" @click="clearHandle()" size="mini">{{ $t('clear') }}</el-button>
<el-button type="primary" @click="commitHandle()" size="mini">{{ $t('confirm') }}</el-button>
</template>
</el-dialog>
</div>
</template>
<style lang="scss">
.ren-region {
.filter-tree {
max-height: 230px;
overflow: auto;
}
.el-dialog__body {
padding: 0px 0px 0px 20px;
}
.el-dialog__footer {
padding: 10px 20px 8px 20px;
}
}
</style>
<script>
import { treeDataTranslate } from '@/utils'
export default {
name: 'RenRegionTree',
data () {
return {
filterText: '',
visibleTree: false,
dataList: [],
showName: '',
expandedKeys: null,
defaultProps: {
children: 'children',
label: 'name'
}
}
},
props: {
value: [Number, String],
parentName: String,
placeholder: String
},
watch: {
filterText (val) {
this.$refs.tree.filter(val)
},
parentName (val) {
this.showName = val
}
},
methods: {
treeDialog () {
this.expandedKeys = null
if (this.$refs.tree) {
this.$refs.tree.setCurrentKey(null)
}
this.visibleTree = true
this.getDataList(this.value)
},
filterNode (value, data) {
if (!value) return true
return data.name.indexOf(value) !== -1
},
getDataList (id) {
return this.$http.get('/sys/region/tree').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.dataList = treeDataTranslate(res.data)
this.$nextTick(() => {
this.$refs.tree.setCurrentKey(id)
this.expandedKeys = [id]
})
}).catch(() => {})
},
cancelHandle () {
this.visibleTree = false
this.dataList = []
this.filterText = ''
},
clearHandle () {
this.$emit('input', '0')
this.$emit('update:parentName', '')
this.showName = ''
this.visibleTree = false
this.dataList = []
this.filterText = ''
},
commitHandle () {
const node = this.$refs.tree.getCurrentNode()
if (!node) {
this.$message.error(this.$t('choose'))
return
}
this.$emit('input', node.id)
this.$emit('update:parentName', node.name)
this.showName = node.name
this.visibleTree = false
this.dataList = []
this.filterText = ''
}
}
}
</script>

7
epmet-oper-web/src/components/ren-select/index.js

@ -0,0 +1,7 @@
import RenSelect from './src/ren-select'
RenSelect.install = function (Vue) {
Vue.component(RenSelect.name, RenSelect)
}
export default RenSelect

21
epmet-oper-web/src/components/ren-select/src/ren-select.vue

@ -0,0 +1,21 @@
<template>
<el-select :value="value+''" @input="$emit('input', $event)" :placeholder="placeholder" clearable>
<el-option :label="data.dictLabel" v-for="data in dataList" :key="data.dictValue" :value ="data.dictValue">{{data.dictLabel}}</el-option>
</el-select>
</template>
<script>
import { getDictDataList } from '@/utils'
export default {
name: 'RenSelect',
data () {
return {
dataList: getDictDataList(this.dictType)
}
},
props: {
value: [Number, String],
dictType: String,
placeholder: String
}
}
</script>

23
epmet-oper-web/src/element-ui/config.js

@ -0,0 +1,23 @@
/* eslint-disable */
/**
* 主题配置信息
*
* hasBuild 是否已构建
* true 已构建不再构建
* false未构建执行命令后会自动构建
*/
module.exports = [
{ name: 'default', color: '#409EFF', desc: '默认色', hasBuild: false },
{ name: 'cyan', color: '#0BB2D4', desc: '青色', hasBuild: false },
{ name: 'blue', color: '#3E8EF7', desc: '蓝色', hasBuild: false },
{ name: 'green', color: '#11C26D', desc: '绿色', hasBuild: false },
{ name: 'turquoise', color: '#17B3A3', desc: '蓝绿色', hasBuild: false },
{ name: 'indigo', color: '#667AFA', desc: '靛青色', hasBuild: false },
{ name: 'brown', color: '#997B71', desc: '棕色', hasBuild: false },
{ name: 'purple', color: '#9463F7', desc: '紫色', hasBuild: false },
{ name: 'gray', color: '#757575', desc: '灰色', hasBuild: false },
{ name: 'orange', color: '#EB6709', desc: '橙色', hasBuild: false },
{ name: 'pink', color: '#F74584', desc: '粉红色', hasBuild: false },
{ name: 'yellow', color: '#FCB900', desc: '黄色', hasBuild: false },
{ name: 'red', color: '#FF4C52', desc: '红色', hasBuild: false }
]

994
epmet-oper-web/src/element-ui/theme-variables.scss

@ -0,0 +1,994 @@
/* Element Chalk Variables */
// Special comment for theme configurator
// type|skipAutoTranslation|Category|Order
// skipAutoTranslation 1
/* Transition
-------------------------- */
$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default;
$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default;
$--fade-linear-transition: opacity 200ms linear !default;
$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default;
$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default;
$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default;
/* Color
-------------------------- */
/// color|1|Brand Color|0
$--color-primary: #17B3A3 !default;
/// color|1|Background Color|4
$--color-white: #FFFFFF !default;
/// color|1|Background Color|4
$--color-black: #000000 !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
/// color|1|Functional Color|1
$--color-success: #67C23A !default;
/// color|1|Functional Color|1
$--color-warning: #E6A23C !default;
/// color|1|Functional Color|1
$--color-danger: #F56C6C !default;
/// color|1|Functional Color|1
$--color-info: #909399 !default;
$--color-success-light: mix($--color-white, $--color-success, 80%) !default;
$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default;
$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default;
$--color-info-light: mix($--color-white, $--color-info, 80%) !default;
$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default;
$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default;
$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default;
$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default;
/// color|1|Font Color|2
$--color-text-primary: #303133 !default;
/// color|1|Font Color|2
$--color-text-regular: #606266 !default;
/// color|1|Font Color|2
$--color-text-secondary: #909399 !default;
/// color|1|Font Color|2
$--color-text-placeholder: #C0C4CC !default;
/// color|1|Border Color|3
$--border-color-base: #DCDFE6 !default;
/// color|1|Border Color|3
$--border-color-light: #E4E7ED !default;
/// color|1|Border Color|3
$--border-color-lighter: #EBEEF5 !default;
/// color|1|Border Color|3
$--border-color-extra-light: #F2F6FC !default;
// Background
/// color|1|Background Color|4
$--background-color-base: #F5F7FA !default;
/* Link
-------------------------- */
$--link-color: $--color-primary-light-2 !default;
$--link-hover-color: $--color-primary !default;
/* Border
-------------------------- */
$--border-width-base: 1px !default;
$--border-style-base: solid !default;
$--border-color-hover: $--color-text-placeholder !default;
$--border-base: $--border-width-base $--border-style-base $--border-color-base !default;
/// borderRadius|1|Radius|0
$--border-radius-base: 4px !default;
/// borderRadius|1|Radius|0
$--border-radius-small: 2px !default;
/// borderRadius|1|Radius|0
$--border-radius-circle: 100% !default;
/// borderRadius|1|Radius|0
$--border-radius-zero: 0 !default;
// Box-shadow
/// boxShadow|1|Shadow|1
$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default;
// boxShadow|1|Shadow|1
$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default;
/// boxShadow|1|Shadow|1
$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default;
/* Fill
-------------------------- */
$--fill-base: $--color-white !default;
/* Typography
-------------------------- */
$--font-path: 'fonts' !default;
$--font-display: 'auto' !default;
/// fontSize|1|Font Size|0
$--font-size-extra-large: 20px !default;
/// fontSize|1|Font Size|0
$--font-size-large: 18px !default;
/// fontSize|1|Font Size|0
$--font-size-medium: 16px !default;
/// fontSize|1|Font Size|0
$--font-size-base: 14px !default;
/// fontSize|1|Font Size|0
$--font-size-small: 13px !default;
/// fontSize|1|Font Size|0
$--font-size-extra-small: 12px !default;
/// fontWeight|1|Font Weight|1
$--font-weight-primary: 500 !default;
/// fontWeight|1|Font Weight|1
$--font-weight-secondary: 100 !default;
/// fontLineHeight|1|Line Height|2
$--font-line-height-primary: 24px !default;
/// fontLineHeight|1|Line Height|2
$--font-line-height-secondary: 16px !default;
$--font-color-disabled-base: #bbb !default;
/* Size
-------------------------- */
$--size-base: 14px !default;
/* z-index
-------------------------- */
$--index-normal: 1 !default;
$--index-top: 1000 !default;
$--index-popper: 2000 !default;
/* Disable base
-------------------------- */
$--disabled-fill-base: $--background-color-base !default;
$--disabled-color-base: $--color-text-placeholder !default;
$--disabled-border-base: $--border-color-light !default;
/* Icon
-------------------------- */
$--icon-color: #666 !default;
$--icon-color-base: $--color-info !default;
/* Checkbox
-------------------------- */
/// fontSize||Font|1
$--checkbox-font-size: 14px !default;
/// fontWeight||Font|1
$--checkbox-font-weight: $--font-weight-primary !default;
/// color||Color|0
$--checkbox-font-color: $--color-text-regular !default;
$--checkbox-input-height: 14px !default;
$--checkbox-input-width: 14px !default;
/// borderRadius||Border|2
$--checkbox-border-radius: $--border-radius-small !default;
/// color||Color|0
$--checkbox-background-color: $--color-white !default;
$--checkbox-input-border: $--border-base !default;
/// color||Color|0
$--checkbox-disabled-border-color: $--border-color-base !default;
$--checkbox-disabled-input-fill: #edf2fc !default;
$--checkbox-disabled-icon-color: $--color-text-placeholder !default;
$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default;
$--checkbox-disabled-checked-input-border-color: $--border-color-base !default;
$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default;
/// color||Color|0
$--checkbox-checked-font-color: $--color-primary !default;
$--checkbox-checked-input-border-color: $--color-primary !default;
/// color||Color|0
$--checkbox-checked-background-color: $--color-primary !default;
$--checkbox-checked-icon-color: $--fill-base !default;
$--checkbox-input-border-color-hover: $--color-primary !default;
/// height||Other|4
$--checkbox-bordered-height: 40px !default;
/// padding||Spacing|3
$--checkbox-bordered-padding: 9px 20px 9px 10px !default;
/// padding||Spacing|3
$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default;
/// padding||Spacing|3
$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default;
/// padding||Spacing|3
$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default;
$--checkbox-bordered-medium-input-height: 14px !default;
$--checkbox-bordered-medium-input-width: 14px !default;
/// height||Other|4
$--checkbox-bordered-medium-height: 36px !default;
$--checkbox-bordered-small-input-height: 12px !default;
$--checkbox-bordered-small-input-width: 12px !default;
/// height||Other|4
$--checkbox-bordered-small-height: 32px !default;
$--checkbox-bordered-mini-input-height: 12px !default;
$--checkbox-bordered-mini-input-width: 12px !default;
/// height||Other|4
$--checkbox-bordered-mini-height: 28px !default;
/// color||Color|0
$--checkbox-button-checked-background-color: $--color-primary !default;
/// color||Color|0
$--checkbox-button-checked-font-color: $--color-white !default;
/// color||Color|0
$--checkbox-button-checked-border-color: $--color-primary !default;
/* Radio
-------------------------- */
/// fontSize||Font|1
$--radio-font-size: $--font-size-base !default;
/// fontWeight||Font|1
$--radio-font-weight: $--font-weight-primary !default;
/// color||Color|0
$--radio-font-color: $--color-text-regular !default;
$--radio-input-height: 14px !default;
$--radio-input-width: 14px !default;
/// borderRadius||Border|2
$--radio-input-border-radius: $--border-radius-circle !default;
/// color||Color|0
$--radio-input-background-color: $--color-white !default;
$--radio-input-border: $--border-base !default;
/// color||Color|0
$--radio-input-border-color: $--border-color-base !default;
/// color||Color|0
$--radio-icon-color: $--color-white !default;
$--radio-disabled-input-border-color: $--disabled-border-base !default;
$--radio-disabled-input-fill: $--disabled-fill-base !default;
$--radio-disabled-icon-color: $--disabled-fill-base !default;
$--radio-disabled-checked-input-border-color: $--disabled-border-base !default;
$--radio-disabled-checked-input-fill: $--disabled-fill-base !default;
$--radio-disabled-checked-icon-color: $--color-text-placeholder !default;
/// color||Color|0
$--radio-checked-font-color: $--color-primary !default;
/// color||Color|0
$--radio-checked-input-border-color: $--color-primary !default;
/// color||Color|0
$--radio-checked-input-background-color: $--color-white !default;
/// color||Color|0
$--radio-checked-icon-color: $--color-primary !default;
$--radio-input-border-color-hover: $--color-primary !default;
$--radio-bordered-height: 40px !default;
$--radio-bordered-padding: 12px 20px 0 10px !default;
$--radio-bordered-medium-padding: 10px 20px 0 10px !default;
$--radio-bordered-small-padding: 8px 15px 0 10px !default;
$--radio-bordered-mini-padding: 6px 15px 0 10px !default;
$--radio-bordered-medium-input-height: 14px !default;
$--radio-bordered-medium-input-width: 14px !default;
$--radio-bordered-medium-height: 36px !default;
$--radio-bordered-small-input-height: 12px !default;
$--radio-bordered-small-input-width: 12px !default;
$--radio-bordered-small-height: 32px !default;
$--radio-bordered-mini-input-height: 12px !default;
$--radio-bordered-mini-input-width: 12px !default;
$--radio-bordered-mini-height: 28px !default;
/// fontSize||Font|1
$--radio-button-font-size: $--font-size-base !default;
/// color||Color|0
$--radio-button-checked-background-color: $--color-primary !default;
/// color||Color|0
$--radio-button-checked-font-color: $--color-white !default;
/// color||Color|0
$--radio-button-checked-border-color: $--color-primary !default;
$--radio-button-disabled-checked-fill: $--border-color-extra-light !default;
/* Select
-------------------------- */
$--select-border-color-hover: $--border-color-hover !default;
$--select-disabled-border: $--disabled-border-base !default;
/// fontSize||Font|1
$--select-font-size: $--font-size-base !default;
$--select-close-hover-color: $--color-text-secondary !default;
$--select-input-color: $--color-text-placeholder !default;
$--select-multiple-input-color: #666 !default;
/// color||Color|0
$--select-input-focus-border-color: $--color-primary !default;
/// fontSize||Font|1
$--select-input-font-size: 14px !default;
$--select-option-color: $--color-text-regular !default;
$--select-option-disabled-color: $--color-text-placeholder !default;
$--select-option-disabled-background: $--color-white !default;
/// height||Other|4
$--select-option-height: 34px !default;
$--select-option-hover-background: $--background-color-base !default;
/// color||Color|0
$--select-option-selected-font-color: $--color-primary !default;
$--select-option-selected-hover: $--background-color-base !default;
$--select-group-color: $--color-info !default;
$--select-group-height: 30px !default;
$--select-group-font-size: 12px !default;
$--select-dropdown-background: $--color-white !default;
$--select-dropdown-shadow: $--box-shadow-light !default;
$--select-dropdown-empty-color: #999 !default;
/// height||Other|4
$--select-dropdown-max-height: 274px !default;
$--select-dropdown-padding: 6px 0 !default;
$--select-dropdown-empty-padding: 10px 0 !default;
$--select-dropdown-border: solid 1px $--border-color-light !default;
/* Alert
-------------------------- */
$--alert-padding: 8px 16px !default;
/// borderRadius||Border|2
$--alert-border-radius: $--border-radius-base !default;
/// fontSize||Font|1
$--alert-title-font-size: 13px !default;
/// fontSize||Font|1
$--alert-description-font-size: 12px !default;
/// fontSize||Font|1
$--alert-close-font-size: 12px !default;
/// fontSize||Font|1
$--alert-close-customed-font-size: 13px !default;
$--alert-success-color: $--color-success-lighter !default;
$--alert-info-color: $--color-info-lighter !default;
$--alert-warning-color: $--color-warning-lighter !default;
$--alert-danger-color: $--color-danger-lighter !default;
/// height||Other|4
$--alert-icon-size: 16px !default;
/// height||Other|4
$--alert-icon-large-size: 28px !default;
/* MessageBox
-------------------------- */
/// color||Color|0
$--messagebox-title-color: $--color-text-primary !default;
$--msgbox-width: 420px !default;
$--msgbox-border-radius: 4px !default;
/// fontSize||Font|1
$--messagebox-font-size: $--font-size-large !default;
/// fontSize||Font|1
$--messagebox-content-font-size: $--font-size-base !default;
/// color||Color|0
$--messagebox-content-color: $--color-text-regular !default;
/// fontSize||Font|1
$--messagebox-error-font-size: 12px !default;
$--msgbox-padding-primary: 15px !default;
/// color||Color|0
$--messagebox-success-color: $--color-success !default;
/// color||Color|0
$--messagebox-info-color: $--color-info !default;
/// color||Color|0
$--messagebox-warning-color: $--color-warning !default;
/// color||Color|0
$--messagebox-danger-color: $--color-danger !default;
/* Message
-------------------------- */
$--message-shadow: $--box-shadow-base !default;
$--message-min-width: 380px !default;
$--message-background-color: #edf2fc !default;
$--message-padding: 15px 15px 15px 20px !default;
/// color||Color|0
$--message-close-icon-color: $--color-text-placeholder !default;
/// height||Other|4
$--message-close-size: 16px !default;
/// color||Color|0
$--message-close-hover-color: $--color-text-secondary !default;
/// color||Color|0
$--message-success-font-color: $--color-success !default;
/// color||Color|0
$--message-info-font-color: $--color-info !default;
/// color||Color|0
$--message-warning-font-color: $--color-warning !default;
/// color||Color|0
$--message-danger-font-color: $--color-danger !default;
/* Notification
-------------------------- */
$--notification-width: 330px !default;
/// padding||Spacing|3
$--notification-padding: 14px 26px 14px 13px !default;
$--notification-radius: 8px !default;
$--notification-shadow: $--box-shadow-light !default;
/// color||Color|0
$--notification-border-color: $--border-color-lighter !default;
$--notification-icon-size: 24px !default;
$--notification-close-font-size: $--message-close-size !default;
$--notification-group-margin-left: 13px !default;
$--notification-group-margin-right: 8px !default;
/// fontSize||Font|1
$--notification-content-font-size: $--font-size-base !default;
/// color||Color|0
$--notification-content-color: $--color-text-regular !default;
/// fontSize||Font|1
$--notification-title-font-size: 16px !default;
/// color||Color|0
$--notification-title-color: $--color-text-primary !default;
/// color||Color|0
$--notification-close-color: $--color-text-secondary !default;
/// color||Color|0
$--notification-close-hover-color: $--color-text-regular !default;
/// color||Color|0
$--notification-success-icon-color: $--color-success !default;
/// color||Color|0
$--notification-info-icon-color: $--color-info !default;
/// color||Color|0
$--notification-warning-icon-color: $--color-warning !default;
/// color||Color|0
$--notification-danger-icon-color: $--color-danger !default;
/* Input
-------------------------- */
$--input-font-size: $--font-size-base !default;
/// color||Color|0
$--input-font-color: $--color-text-regular !default;
/// height||Other|4
$--input-width: 140px !default;
/// height||Other|4
$--input-height: 40px !default;
$--input-border: $--border-base !default;
$--input-border-color: $--border-color-base !default;
/// borderRadius||Border|2
$--input-border-radius: $--border-radius-base !default;
$--input-border-color-hover: $--border-color-hover !default;
/// color||Color|0
$--input-background-color: $--color-white !default;
$--input-fill-disabled: $--disabled-fill-base !default;
$--input-color-disabled: $--font-color-disabled-base !default;
/// color||Color|0
$--input-icon-color: $--color-text-placeholder !default;
/// color||Color|0
$--input-placeholder-color: $--color-text-placeholder !default;
$--input-max-width: 314px !default;
$--input-hover-border: $--border-color-hover !default;
$--input-clear-hover-color: $--color-text-secondary !default;
$--input-focus-border: $--color-primary !default;
$--input-focus-fill: $--color-white !default;
$--input-disabled-fill: $--disabled-fill-base !default;
$--input-disabled-border: $--disabled-border-base !default;
$--input-disabled-color: $--disabled-color-base !default;
$--input-disabled-placeholder-color: $--color-text-placeholder !default;
/// fontSize||Font|1
$--input-medium-font-size: 14px !default;
/// height||Other|4
$--input-medium-height: 36px !default;
/// fontSize||Font|1
$--input-small-font-size: 13px !default;
/// height||Other|4
$--input-small-height: 32px !default;
/// fontSize||Font|1
$--input-mini-font-size: 12px !default;
/// height||Other|4
$--input-mini-height: 28px !default;
/* Cascader
-------------------------- */
/// color||Color|0
$--cascader-menu-font-color: $--color-text-regular !default;
/// color||Color|0
$--cascader-menu-selected-font-color: $--color-primary !default;
$--cascader-menu-fill: $--fill-base !default;
$--cascader-menu-font-size: $--font-size-base !default;
$--cascader-menu-radius: $--border-radius-base !default;
$--cascader-menu-border: solid 1px $--border-color-light !default;
$--cascader-menu-shadow: $--box-shadow-light !default;
$--cascader-node-background-hover: $--background-color-base !default;
$--cascader-node-color-disabled:$--color-text-placeholder !default;
$--cascader-color-empty:$--color-text-placeholder !default;
$--cascader-tag-background: #f0f2f5;
/* Group
-------------------------- */
$--group-option-flex: 0 0 (1/5) * 100% !default;
$--group-option-offset-bottom: 12px !default;
$--group-option-fill-hover: rgba($--color-black, 0.06) !default;
$--group-title-color: $--color-black !default;
$--group-title-font-size: $--font-size-base !default;
$--group-title-width: 66px !default;
/* Tab
-------------------------- */
$--tab-font-size: $--font-size-base !default;
$--tab-border-line: 1px solid #e4e4e4 !default;
$--tab-header-color-active: $--color-text-secondary !default;
$--tab-header-color-hover: $--color-text-regular !default;
$--tab-header-color: $--color-text-regular !default;
$--tab-header-fill-active: rgba($--color-black, 0.06) !default;
$--tab-header-fill-hover: rgba($--color-black, 0.06) !default;
$--tab-vertical-header-width: 90px !default;
$--tab-vertical-header-count-color: $--color-white !default;
$--tab-vertical-header-count-fill: $--color-text-secondary !default;
/* Button
-------------------------- */
/// fontSize||Font|1
$--button-font-size: $--font-size-base !default;
/// fontWeight||Font|1
$--button-font-weight: $--font-weight-primary !default;
/// borderRadius||Border|2
$--button-border-radius: $--border-radius-base !default;
/// padding||Spacing|3
$--button-padding-vertical: 12px !default;
/// padding||Spacing|3
$--button-padding-horizontal: 20px !default;
/// fontSize||Font|1
$--button-medium-font-size: $--font-size-base !default;
/// borderRadius||Border|2
$--button-medium-border-radius: $--border-radius-base !default;
/// padding||Spacing|3
$--button-medium-padding-vertical: 10px !default;
/// padding||Spacing|3
$--button-medium-padding-horizontal: 20px !default;
/// fontSize||Font|1
$--button-small-font-size: 12px !default;
$--button-small-border-radius: #{$--border-radius-base - 1} !default;
/// padding||Spacing|3
$--button-small-padding-vertical: 9px !default;
/// padding||Spacing|3
$--button-small-padding-horizontal: 15px !default;
/// fontSize||Font|1
$--button-mini-font-size: 12px !default;
$--button-mini-border-radius: #{$--border-radius-base - 1} !default;
/// padding||Spacing|3
$--button-mini-padding-vertical: 7px !default;
/// padding||Spacing|3
$--button-mini-padding-horizontal: 15px !default;
/// color||Color|0
$--button-default-font-color: $--color-text-regular !default;
/// color||Color|0
$--button-default-background-color: $--color-white !default;
/// color||Color|0
$--button-default-border-color: $--border-color-base !default;
/// color||Color|0
$--button-disabled-font-color: $--color-text-placeholder !default;
/// color||Color|0
$--button-disabled-background-color: $--color-white !default;
/// color||Color|0
$--button-disabled-border-color: $--border-color-lighter !default;
/// color||Color|0
$--button-primary-border-color: $--color-primary !default;
/// color||Color|0
$--button-primary-font-color: $--color-white !default;
/// color||Color|0
$--button-primary-background-color: $--color-primary !default;
/// color||Color|0
$--button-success-border-color: $--color-success !default;
/// color||Color|0
$--button-success-font-color: $--color-white !default;
/// color||Color|0
$--button-success-background-color: $--color-success !default;
/// color||Color|0
$--button-warning-border-color: $--color-warning !default;
/// color||Color|0
$--button-warning-font-color: $--color-white !default;
/// color||Color|0
$--button-warning-background-color: $--color-warning !default;
/// color||Color|0
$--button-danger-border-color: $--color-danger !default;
/// color||Color|0
$--button-danger-font-color: $--color-white !default;
/// color||Color|0
$--button-danger-background-color: $--color-danger !default;
/// color||Color|0
$--button-info-border-color: $--color-info !default;
/// color||Color|0
$--button-info-font-color: $--color-white !default;
/// color||Color|0
$--button-info-background-color: $--color-info !default;
$--button-hover-tint-percent: 20% !default;
$--button-active-shade-percent: 10% !default;
/* cascader
-------------------------- */
$--cascader-height: 200px !default;
/* Switch
-------------------------- */
/// color||Color|0
$--switch-on-color: $--color-primary !default;
/// color||Color|0
$--switch-off-color: $--border-color-base !default;
/// fontSize||Font|1
$--switch-font-size: $--font-size-base !default;
$--switch-core-border-radius: 10px !default;
// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义
$--switch-width: 40px !default;
// height||Other|4
$--switch-height: 20px !default;
// height||Other|4
$--switch-button-size: 16px !default;
/* Dialog
-------------------------- */
$--dialog-background-color: $--color-white !default;
$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default;
/// fontSize||Font|1
$--dialog-title-font-size: $--font-size-large !default;
/// fontSize||Font|1
$--dialog-content-font-size: 14px !default;
/// fontLineHeight||LineHeight|2
$--dialog-font-line-height: $--font-line-height-primary !default;
/// padding||Spacing|3
$--dialog-padding-primary: 20px !default;
/* Table
-------------------------- */
/// color||Color|0
$--table-border-color: $--border-color-lighter !default;
$--table-border: 1px solid $--table-border-color !default;
/// color||Color|0
$--table-font-color: $--color-text-regular !default;
/// color||Color|0
$--table-header-font-color: $--color-text-secondary !default;
/// color||Color|0
$--table-row-hover-background-color: $--background-color-base !default;
$--table-current-row-background-color: $--color-primary-light-9 !default;
/// color||Color|0
$--table-header-background-color: $--color-white !default;
$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default;
/* Pagination
-------------------------- */
/// fontSize||Font|1
$--pagination-font-size: 13px !default;
/// color||Color|0
$--pagination-background-color: $--color-white !default;
/// color||Color|0
$--pagination-font-color: $--color-text-primary !default;
$--pagination-border-radius: 3px !default;
/// color||Color|0
$--pagination-button-color: $--color-text-primary !default;
/// height||Other|4
$--pagination-button-width: 35.5px !default;
/// height||Other|4
$--pagination-button-height: 28px !default;
/// color||Color|0
$--pagination-button-disabled-color: $--color-text-placeholder !default;
/// color||Color|0
$--pagination-button-disabled-background-color: $--color-white !default;
/// color||Color|0
$--pagination-hover-color: $--color-primary !default;
/* Popup
-------------------------- */
/// color||Color|0
$--popup-modal-background-color: $--color-black !default;
/// opacity||Other|1
$--popup-modal-opacity: 0.5 !default;
/* Popover
-------------------------- */
/// color||Color|0
$--popover-background-color: $--color-white !default;
/// fontSize||Font|1
$--popover-font-size: $--font-size-base !default;
/// color||Color|0
$--popover-border-color: $--border-color-lighter !default;
$--popover-arrow-size: 6px !default;
/// padding||Spacing|3
$--popover-padding: 12px !default;
$--popover-padding-large: 18px 20px !default;
/// fontSize||Font|1
$--popover-title-font-size: 16px !default;
/// color||Color|0
$--popover-title-font-color: $--color-text-primary !default;
/* Tooltip
-------------------------- */
/// color|1|Color|0
$--tooltip-fill: $--color-text-primary !default;
/// color|1|Color|0
$--tooltip-color: $--color-white !default;
/// fontSize||Font|1
$--tooltip-font-size: 12px !default;
/// color||Color|0
$--tooltip-border-color: $--color-text-primary !default;
$--tooltip-arrow-size: 6px !default;
/// padding||Spacing|3
$--tooltip-padding: 10px !default;
/* Tag
-------------------------- */
/// color||Color|0
$--tag-info-color: $--color-info !default;
/// color||Color|0
$--tag-primary-color: $--color-primary !default;
/// color||Color|0
$--tag-success-color: $--color-success !default;
/// color||Color|0
$--tag-warning-color: $--color-warning !default;
/// color||Color|0
$--tag-danger-color: $--color-danger !default;
/// fontSize||Font|1
$--tag-font-size: 12px !default;
$--tag-border-radius: 4px !default;
$--tag-padding: 0 10px !default;
/* Tree
-------------------------- */
/// color||Color|0
$--tree-node-hover-background-color: $--background-color-base !default;
/// color||Color|0
$--tree-font-color: $--color-text-regular !default;
/// color||Color|0
$--tree-expand-icon-color: $--color-text-placeholder !default;
/* Dropdown
-------------------------- */
$--dropdown-menu-box-shadow: $--box-shadow-light !default;
$--dropdown-menuItem-hover-fill: $--color-primary-light-9 !default;
$--dropdown-menuItem-hover-color: $--link-color !default;
/* Badge
-------------------------- */
/// color||Color|0
$--badge-background-color: $--color-danger !default;
$--badge-radius: 10px !default;
/// fontSize||Font|1
$--badge-font-size: 12px !default;
/// padding||Spacing|3
$--badge-padding: 6px !default;
/// height||Other|4
$--badge-size: 18px !default;
/* Card
--------------------------*/
/// color||Color|0
$--card-border-color: $--border-color-lighter !default;
$--card-border-radius: 4px !default;
/// padding||Spacing|3
$--card-padding: 20px !default;
/* Slider
--------------------------*/
/// color||Color|0
$--slider-main-background-color: $--color-primary !default;
/// color||Color|0
$--slider-runway-background-color: $--border-color-light !default;
$--slider-button-hover-color: mix($--color-primary, black, 97%) !default;
$--slider-stop-background-color: $--color-white !default;
$--slider-disable-color: $--color-text-placeholder !default;
$--slider-margin: 16px 0 !default;
$--slider-border-radius: 3px !default;
/// height|1|Other|4
$--slider-height: 6px !default;
/// height||Other|4
$--slider-button-size: 16px !default;
$--slider-button-wrapper-size: 36px !default;
$--slider-button-wrapper-offset: -15px !default;
/* Steps
--------------------------*/
$--steps-border-color: $--disabled-border-base !default;
$--steps-border-radius: 4px !default;
$--steps-padding: 20px !default;
/* Menu
--------------------------*/
/// fontSize||Font|1
$--menu-item-font-size: $--font-size-base !default;
/// color||Color|0
$--menu-item-font-color: $--color-text-primary !default;
/// color||Color|0
$--menu-background-color: $--color-white !default;
$--menu-item-hover-fill: $--color-primary-light-9 !default;
/* Rate
--------------------------*/
$--rate-height: 20px !default;
/// fontSize||Font|1
$--rate-font-size: $--font-size-base !default;
/// height||Other|3
$--rate-icon-size: 18px !default;
/// margin||Spacing|2
$--rate-icon-margin: 6px !default;
$--rate-icon-color: $--color-text-placeholder !default;
/* DatePicker
--------------------------*/
$--datepicker-font-color: $--color-text-regular !default;
/// color|1|Color|0
$--datepicker-off-font-color: $--color-text-placeholder !default;
/// color||Color|0
$--datepicker-header-font-color: $--color-text-regular !default;
$--datepicker-icon-color: $--color-text-primary !default;
$--datepicker-border-color: $--disabled-border-base !default;
$--datepicker-inner-border-color: #e4e4e4 !default;
/// color||Color|0
$--datepicker-inrange-background-color: $--border-color-extra-light !default;
/// color||Color|0
$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default;
/// color||Color|0
$--datepicker-active-color: $--color-primary !default;
/// color||Color|0
$--datepicker-hover-font-color: $--color-primary !default;
$--datepicker-cell-hover-color: #fff !default;
/* Loading
--------------------------*/
/// height||Other|4
$--loading-spinner-size: 42px !default;
/// height||Other|4
$--loading-fullscreen-spinner-size: 50px !default;
/* Scrollbar
--------------------------*/
$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default;
$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default;
/* Carousel
--------------------------*/
/// fontSize||Font|1
$--carousel-arrow-font-size: 12px !default;
$--carousel-arrow-size: 36px !default;
$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default;
$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default;
/// width||Other|4
$--carousel-indicator-width: 30px !default;
/// height||Other|4
$--carousel-indicator-height: 2px !default;
$--carousel-indicator-padding-horizontal: 4px !default;
$--carousel-indicator-padding-vertical: 12px !default;
$--carousel-indicator-out-color: $--border-color-hover !default;
/* Collapse
--------------------------*/
/// color||Color|0
$--collapse-border-color: $--border-color-lighter !default;
/// height||Other|4
$--collapse-header-height: 48px !default;
/// color||Color|0
$--collapse-header-background-color: $--color-white !default;
/// color||Color|0
$--collapse-header-font-color: $--color-text-primary !default;
/// fontSize||Font|1
$--collapse-header-font-size: 13px !default;
/// color||Color|0
$--collapse-content-background-color: $--color-white !default;
/// fontSize||Font|1
$--collapse-content-font-size: 13px !default;
/// color||Color|0
$--collapse-content-font-color: $--color-text-primary !default;
/* Transfer
--------------------------*/
$--transfer-border-color: $--border-color-lighter !default;
$--transfer-border-radius: $--border-radius-base !default;
/// height||Other|4
$--transfer-panel-width: 200px !default;
/// height||Other|4
$--transfer-panel-header-height: 40px !default;
/// color||Color|0
$--transfer-panel-header-background-color: $--background-color-base !default;
/// height||Other|4
$--transfer-panel-footer-height: 40px !default;
/// height||Other|4
$--transfer-panel-body-height: 246px !default;
/// height||Other|4
$--transfer-item-height: 30px !default;
/// height||Other|4
$--transfer-filter-height: 32px !default;
/* Header
--------------------------*/
$--header-padding: 0 20px !default;
/* Footer
--------------------------*/
$--footer-padding: 0 20px !default;
/* Main
--------------------------*/
$--main-padding: 20px !default;
/* Timeline
--------------------------*/
$--timeline-node-size-normal: 12px !default;
$--timeline-node-size-large: 14px !default;
$--timeline-node-color: $--border-color-light !default;
/* Backtop
--------------------------*/
/// color||Color|0
$--backtop-background-color: $--color-white !default;
/// color||Color|0
$--backtop-font-color: $--color-primary !default;
/// color||Color|0
$--backtop-hover-background-color: $--border-color-extra-light !default;
/* Link
--------------------------*/
/// fontSize||Font|1
$--link-font-size: $--font-size-base !default;
/// fontWeight||Font|1
$--link-font-weight: $--font-weight-primary !default;
/// color||Color|0
$--link-default-font-color: $--color-text-regular !default;
/// color||Color|0
$--link-default-active-color: $--color-primary !default;
/// color||Color|0
$--link-disabled-font-color: $--color-text-placeholder !default;
/// color||Color|0
$--link-primary-font-color: $--color-primary !default;
/// color||Color|0
$--link-success-font-color: $--color-success !default;
/// color||Color|0
$--link-warning-font-color: $--color-warning !default;
/// color||Color|0
$--link-danger-font-color: $--color-danger !default;
/// color||Color|0
$--link-info-font-color: $--color-info !default;
/* Calendar
--------------------------*/
/// border||Other|4
$--calendar-border: $--table-border !default;
/// color||Other|4
$--calendar-selected-background-color: #F2F8FE !default;
$--calendar-cell-width: 85px !default;
/* Form
-------------------------- */
/// fontSize||Font|1
$--form-label-font-size: $--font-size-base !default;
/* Avatar
--------------------------*/
/// color||Color|0
$--avatar-font-color: #fff !default;
/// color||Color|0
$--avatar-background-color: #C0C4CC !default;
/// fontSize||Font Size|1
$--avatar-text-font-size: 14px !default;
/// fontSize||Font Size|1
$--avatar-icon-font-size: 18px !default;
/// borderRadius||Border|2
$--avatar-border-radius: $--border-radius-base !default;
/// size|1|Avatar Size|3
$--avatar-large-size: 40px !default;
/// size|1|Avatar Size|3
$--avatar-medium-size: 36px !default;
/// size|1|Avatar Size|3
$--avatar-small-size: 28px !default;
/* Break-point
--------------------------*/
$--sm: 768px !default;
$--md: 992px !default;
$--lg: 1200px !default;
$--xl: 1920px !default;
$--breakpoints: (
'xs' : (max-width: $--sm - 1),
'sm' : (min-width: $--sm),
'md' : (min-width: $--md),
'lg' : (min-width: $--lg),
'xl' : (min-width: $--xl)
);
$--breakpoints-spec: (
'xs-only' : (max-width: $--sm - 1),
'sm-and-up' : (min-width: $--sm),
'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})",
'sm-and-down': (max-width: $--md - 1),
'md-and-up' : (min-width: $--md),
'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})",
'md-and-down': (max-width: $--lg - 1),
'lg-and-up' : (min-width: $--lg),
'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})",
'lg-and-down': (max-width: $--xl - 1),
'xl-only' : (min-width: $--xl),
);

1
epmet-oper-web/src/element-ui/theme/alert.css

@ -0,0 +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-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.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;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}

1
epmet-oper-web/src/element-ui/theme/aside.css

@ -0,0 +1 @@
.el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save