@ -0,0 +1,3 @@ |
|||||
|
> 1% |
||||
|
last 2 versions |
||||
|
not dead |
@ -0,0 +1,2 @@ |
|||||
|
VUE_APP_URL="http://121.36.63.12:8085" |
||||
|
VUE_APP_LOGIN_URL="http://www.fatoaniic.com/#/login" |
@ -0,0 +1,2 @@ |
|||||
|
VUE_APP_URL="http://121.36.63.12:8085" |
||||
|
VUE_APP_LOGIN_URL="http://www.fatoaniic.com/#/login" |
@ -0,0 +1,17 @@ |
|||||
|
module.exports = { |
||||
|
root: true, |
||||
|
env: { |
||||
|
node: true |
||||
|
}, |
||||
|
'extends': [ |
||||
|
'plugin:vue/essential', |
||||
|
'eslint:recommended' |
||||
|
], |
||||
|
parserOptions: { |
||||
|
parser: 'babel-eslint' |
||||
|
}, |
||||
|
rules: { |
||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', |
||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off' |
||||
|
} |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
.DS_Store |
||||
|
node_modules |
||||
|
/dist |
||||
|
|
||||
|
# local env files |
||||
|
.env.local |
||||
|
.env.*.local |
||||
|
|
||||
|
# Log files |
||||
|
npm-debug.log* |
||||
|
yarn-debug.log* |
||||
|
yarn-error.log* |
||||
|
|
||||
|
# Editor directories and files |
||||
|
.idea |
||||
|
.vscode |
||||
|
*.suo |
||||
|
*.ntvs* |
||||
|
*.njsproj |
||||
|
*.sln |
||||
|
*.sw? |
@ -0,0 +1,5 @@ |
|||||
|
module.exports = { |
||||
|
presets: [ |
||||
|
'@vue/cli-plugin-babel/preset' |
||||
|
] |
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
{ |
||||
|
"compilerOptions": { |
||||
|
"target": "ES6", |
||||
|
"module": "commonjs", |
||||
|
"allowSyntheticDefaultImports": true, |
||||
|
"baseUrl": "./", |
||||
|
"paths": { |
||||
|
"@/*": ["src/*"] |
||||
|
} |
||||
|
}, |
||||
|
"exclude": [ |
||||
|
"node_modules" |
||||
|
] |
||||
|
} |
@ -0,0 +1,40 @@ |
|||||
|
{ |
||||
|
"name": "website", |
||||
|
"version": "0.1.0", |
||||
|
"private": true, |
||||
|
"scripts": { |
||||
|
"serve": "vue-cli-service serve", |
||||
|
"build": "vue-cli-service build", |
||||
|
"lint": "vue-cli-service lint" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"animate.css": "^4.1.0", |
||||
|
"axios": "^0.19.2", |
||||
|
"babel-polyfill": "^6.26.0", |
||||
|
"core-js": "^3.6.4", |
||||
|
"echarts": "^4.6.0", |
||||
|
"echarts-map": "^3.0.1", |
||||
|
"element-ui": "^2.13.1", |
||||
|
"jquery": "^3.5.1", |
||||
|
"js-cookie": "^2.2.1", |
||||
|
"jsencrypt": "^3.0.0-rc.1", |
||||
|
"qs": "^6.9.4", |
||||
|
"vue": "^2.6.11", |
||||
|
"vue-loader": "^15.9.2", |
||||
|
"vue-router": "^3.1.6", |
||||
|
"vuex": "^3.1.3" |
||||
|
}, |
||||
|
"devDependencies": { |
||||
|
"@vue/cli-plugin-babel": "~4.3.0", |
||||
|
"@vue/cli-plugin-eslint": "~4.3.0", |
||||
|
"@vue/cli-plugin-router": "~4.3.0", |
||||
|
"@vue/cli-plugin-vuex": "~4.3.0", |
||||
|
"@vue/cli-service": "~4.3.0", |
||||
|
"babel-eslint": "^10.1.0", |
||||
|
"eslint": "^6.7.2", |
||||
|
"eslint-plugin-vue": "^6.2.2", |
||||
|
"node-sass": "^4.12.0", |
||||
|
"sass-loader": "^8.0.2", |
||||
|
"vue-template-compiler": "^2.6.11" |
||||
|
} |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
config = { |
||||
|
API_URL: 'http://121.36.65.171:8204', |
||||
|
COCKPIT_API_URL: 'http://www.fatoaniic.com/api', |
||||
|
LOGIN_URL: 'http://www.fatoaniic.com/#/login', |
||||
|
APP_URL:'http://nmsj.org.cn/', |
||||
|
SHOW_URL: "http://121.36.65.171:8787/file/", |
||||
|
} |
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1,29 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<script type="text/javascript"> |
||||
|
//判断浏览器,如果是IE11以下则不加载‘vue-quill-editor 富文本编辑器’并提示浏览器版本过低 |
||||
|
var userAgent = window.navigator.userAgent; |
||||
|
var version = userAgent.indexOf('MSIE') != -1 ? userAgent.substr(userAgent.indexOf('MSIE') + 5, 3) : '' |
||||
|
if (version && parseInt(version) < 9) { |
||||
|
alert('您使用的是IE 9以下版本的浏览器,部分功能将不支持,请更换浏览器。') |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
||||
|
<title>工业互联网二级节点-食品行业</title> |
||||
|
<script src="./config.js"></script> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<noscript> |
||||
|
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> |
||||
|
</noscript> |
||||
|
<div id="app"></div> |
||||
|
<!-- built files will be auto injected --> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 574 B |
After Width: | Height: | Size: 576 B |
After Width: | Height: | Size: 495 B |
After Width: | Height: | Size: 642 B |
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 557 B |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 419 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 474 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 571 B |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,228 @@ |
|||||
|
|
||||
|
$bg: #2d3a4b; |
||||
|
$light_gray: #eee; |
||||
|
|
||||
|
/* reset element-ui css */ |
||||
|
.login-container { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
background: url("../../img/login/bg.png") no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
.platform-select .el-input{ |
||||
|
width:100%; |
||||
|
} |
||||
|
.el-input { |
||||
|
display: inline-block; |
||||
|
height: 34px; |
||||
|
width: 80%; |
||||
|
|
||||
|
input { |
||||
|
background: transparent; |
||||
|
border: 0px; |
||||
|
-webkit-appearance: none; |
||||
|
border-radius: 0px; |
||||
|
padding: 0 10px; |
||||
|
color: #333; |
||||
|
height: 32px; |
||||
|
font-size: 16px; |
||||
|
|
||||
|
/**&:-webkit-autofill { |
||||
|
-webkit-box-shadow: 0 0 0px 1000px $bg inset !important; |
||||
|
-webkit-text-fill-color: #fff !important; |
||||
|
}**/ |
||||
|
} |
||||
|
.el-input__inner { |
||||
|
line-height: normal; |
||||
|
} |
||||
|
input::-webkit-input-placeholder { /* WebKit browsers */ |
||||
|
color: rgba(153,153,153,1); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
input::-moz-placeholder { /* Mozilla Firefox 19+ */ |
||||
|
color: rgba(153,153,153,1); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
input:-ms-input-placeholder { /* Internet Explorer 10+ */ |
||||
|
color: rgba(153,153,153,1); |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-form-item { |
||||
|
// width:407px; |
||||
|
max-width: 100%; |
||||
|
height:34px; |
||||
|
background:rgba(255,255,255,1); |
||||
|
border:1px solid rgba(220,220,220,1); |
||||
|
border-radius:4px; |
||||
|
margin-bottom: 25px; |
||||
|
.el-form-item__content{ |
||||
|
line-height: normal; |
||||
|
} |
||||
|
} |
||||
|
.login-btn{ |
||||
|
font-size:18px; |
||||
|
padding: 0; |
||||
|
color:rgba(255,255,255,1); |
||||
|
width:405px; |
||||
|
height:35px; |
||||
|
background:linear-gradient(-24deg,rgba(223,52,52,1),rgba(255,108,88,1)); |
||||
|
border:1px solid rgba(220, 220, 220, 1); |
||||
|
border-radius:4px; |
||||
|
} |
||||
|
a.click_link { |
||||
|
font-size: 14px; |
||||
|
color: #2788CC; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
$bg: #2d3a4b; |
||||
|
$dark_blue:#2788CC; |
||||
|
$dark_gray: #889aa4; |
||||
|
$light_gray: #eee; |
||||
|
.login-container { |
||||
|
position: relative; |
||||
|
height: 100%; |
||||
|
min-height: 700px; |
||||
|
width: 100%; |
||||
|
min-width: 700px; |
||||
|
background-color: $bg; |
||||
|
|
||||
|
.login-form { |
||||
|
background:rgba(255,255,255,1); |
||||
|
box-shadow:0px 3px 40px 0px rgba(143, 143, 143, 0.35); |
||||
|
border-radius:4px; |
||||
|
position: absolute; |
||||
|
width: 450px; |
||||
|
left: 50%; |
||||
|
top:calc(15vh + 130px); |
||||
|
z-index: 100; |
||||
|
padding: 50px 70px; |
||||
|
transform: translateX(-50%); |
||||
|
.platform-select{ |
||||
|
width:100%; |
||||
|
} |
||||
|
} |
||||
|
.title-form { |
||||
|
font-size:24px; |
||||
|
font-family:PingFang SC; |
||||
|
font-weight:500; |
||||
|
color:rgba(51,51,51,1); |
||||
|
line-height:45px; |
||||
|
margin-bottom: 20px; |
||||
|
.title-regiter{ |
||||
|
float: right; |
||||
|
font-size:14px; |
||||
|
// a { |
||||
|
// font-size: 14px; |
||||
|
// color: #2788CC; |
||||
|
// cursor: pointer; |
||||
|
// } |
||||
|
} |
||||
|
} |
||||
|
.svg-container { |
||||
|
padding: 5px 5px 5px 10px; |
||||
|
color: $dark_gray; |
||||
|
display: inline-block; |
||||
|
position: relative; |
||||
|
vertical-align: top; |
||||
|
.user-img{ |
||||
|
width:19px; |
||||
|
height:21px; |
||||
|
} |
||||
|
.pass-img{ |
||||
|
width:19px; |
||||
|
height:21px; |
||||
|
// margin-left: 4px; |
||||
|
} |
||||
|
} |
||||
|
.code-refresh { |
||||
|
position: absolute; |
||||
|
right: 2px; |
||||
|
top: 5px; |
||||
|
width: 25px; |
||||
|
height: 20px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.code-pic { |
||||
|
margin: 0 5px; |
||||
|
border:1px solid rgba(220, 220, 220, 1); |
||||
|
border-radius:3px; |
||||
|
width: 90px; |
||||
|
height: 34px; |
||||
|
// cursor: pointer; |
||||
|
} |
||||
|
.header { |
||||
|
position: relative; |
||||
|
text-align: center; |
||||
|
top: 15vh; |
||||
|
font-weight:bold; |
||||
|
color:rgba(255,255,255,1); |
||||
|
letter-spacing:5px; |
||||
|
.title-cn { |
||||
|
font-size:48px; |
||||
|
height: 48px; |
||||
|
line-height: 48px; |
||||
|
font-family:Microsoft YaHei; |
||||
|
text-shadow:0px 1px 3px rgba(0, 0, 0, 0.4); |
||||
|
} |
||||
|
.title-en { |
||||
|
margin-top: 15px; |
||||
|
height:22px; |
||||
|
font-size:22px; |
||||
|
line-height:22px; |
||||
|
font-family:Arial; |
||||
|
text-shadow:0px 1px 2px rgba(0, 0, 0, 0.4); |
||||
|
letter-spacing: 3px; |
||||
|
word-spacing: 2px; |
||||
|
} |
||||
|
} |
||||
|
.remember-block { |
||||
|
margin-bottom: 20px; |
||||
|
// a { |
||||
|
// font-size: 14px; |
||||
|
// color: #2788CC; |
||||
|
// cursor: pointer; |
||||
|
// } |
||||
|
} |
||||
|
|
||||
|
.show-pwd { |
||||
|
position: absolute; |
||||
|
width: 20px; |
||||
|
height: 15px; |
||||
|
right: 10px; |
||||
|
top: 9px; |
||||
|
font-size: 16px; |
||||
|
color: $dark_gray; |
||||
|
cursor: pointer; |
||||
|
user-select: none; |
||||
|
.eye { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
background: url("../../img/login/show-P.png") no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
.eye-open { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
background: url("../../img/login/hide-P.png") no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.login_copyright{ |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
|
||||
|
width: 100vw; |
||||
|
height:56px; |
||||
|
font-size: 14px; |
||||
|
line-height: 56px; |
||||
|
text-align: center; |
||||
|
color:#000; |
||||
|
background-color: rgba(255, 255, 255, 0.2); |
||||
|
} |
@ -0,0 +1,166 @@ |
|||||
|
//to reset element-ui default css |
||||
|
//table header reset css |
||||
|
.el-table thead { |
||||
|
color: #333333; |
||||
|
font-weight: 500; |
||||
|
font-size: 15px; |
||||
|
} |
||||
|
.el-table__header-wrapper tr { |
||||
|
background-color: #ececec !important; |
||||
|
} |
||||
|
.el-table th, |
||||
|
.el-table tr { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
//分页器reset css |
||||
|
.el-pagination { |
||||
|
padding: 30px 5px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
// .el-pagination.is-background .btn-next, |
||||
|
// .el-pagination.is-background .btn-prev, |
||||
|
// .el-pagination.is-background .el-pager li { |
||||
|
// background-color: #ffffff; |
||||
|
// border: 1px solid #ececec; |
||||
|
// color: #606266; |
||||
|
// } |
||||
|
// .el-pagination.is-background .el-pager li:not(.disabled):hover { |
||||
|
// color: #df3434; |
||||
|
// } |
||||
|
// .el-pagination.is-background .el-pager li:not(.disabled).active { |
||||
|
// background-color: #df3434; |
||||
|
// color: #fff; |
||||
|
// } |
||||
|
// .el-pagination__sizes .el-input .el-input__inner:hover { |
||||
|
// border-color: #df3434; |
||||
|
// } |
||||
|
.el-select .el-input.is-focus .el-input__inner { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
.el-select-dropdown__item.selected { |
||||
|
color: #df3434; |
||||
|
} |
||||
|
.el-input.is-active .el-input__inner, |
||||
|
.el-input__inner:focus { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
|
||||
|
.el-dialog__header { |
||||
|
background-color:rgba(248,248,248,1); |
||||
|
} |
||||
|
//下拉条 |
||||
|
.avatar-uploader .el-upload { |
||||
|
border: 1px dashed #929292; |
||||
|
border-radius: 6px; |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.avatar-uploader .el-upload:hover { |
||||
|
border-color: #409EFF; |
||||
|
} |
||||
|
.avatar-uploader-icon { |
||||
|
font-size: 28px; |
||||
|
color: #8c939d; |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
line-height: 120px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.avatar { |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
//下拉菜单 |
||||
|
.el-dropdown-menu { |
||||
|
background-color: #F7F7F7 !important; |
||||
|
.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover { |
||||
|
background-color:#014a6e21 !important; |
||||
|
color: #606266; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//步骤条 |
||||
|
.el-step__head.is-process { |
||||
|
color: #DF3434; |
||||
|
border-color: #DF3434; |
||||
|
} |
||||
|
.el-step__title.is-process { |
||||
|
font-weight: 700; |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
.el-step__description.is-process { |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
|
||||
|
//文字链接 |
||||
|
.el-link { |
||||
|
vertical-align: unset; |
||||
|
} |
||||
|
|
||||
|
.el-header{ |
||||
|
position: relative; |
||||
|
width:100%; |
||||
|
padding: 0; |
||||
|
height:84px; |
||||
|
// background-color: #01496E; |
||||
|
z-index: 100; |
||||
|
} |
||||
|
|
||||
|
//el-dialog样式 |
||||
|
.el-dialog__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-dialog__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
.el-dialog__footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
//el-message-box样式 |
||||
|
.el-message-box__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-message-box__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
// .el-upload { |
||||
|
// input[type="file"] { |
||||
|
// display: none !important; |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
// .el-upload__input { |
||||
|
// display: none; |
||||
|
// } |
||||
|
|
||||
|
// //暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461 |
||||
|
// .el-dialog { |
||||
|
// transform: none; |
||||
|
// left: 0; |
||||
|
// position: relative; |
||||
|
// margin: 0 auto; |
||||
|
// } |
||||
|
|
||||
|
// //element ui upload |
||||
|
// .upload-container { |
||||
|
// .el-upload { |
||||
|
// width: 100%; |
||||
|
// .el-upload-dragger { |
||||
|
// width: 100%; |
||||
|
// height: 200px; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// //树形节点 |
||||
|
// .custom-tree-node { |
||||
|
// flex: 1; |
||||
|
// display: flex; |
||||
|
// align-items: center; |
||||
|
// justify-content: space-between; |
||||
|
// font-size: 14px; |
||||
|
// padding-right: 8px; |
||||
|
// } |
@ -0,0 +1,312 @@ |
|||||
|
@import './variables.scss'; |
||||
|
// @import './mixin.scss'; |
||||
|
// @import './transition.scss'; |
||||
|
@import './element-ui.scss'; |
||||
|
@import './sidebar.scss'; |
||||
|
// @import './button.scss'; |
||||
|
// @import './header.scss'; |
||||
|
// @import './reset-el';//覆盖element 表单和表格样式 |
||||
|
html, |
||||
|
body, |
||||
|
h1, |
||||
|
h2, |
||||
|
h3, |
||||
|
h4, |
||||
|
h5, |
||||
|
h6, |
||||
|
div, |
||||
|
dl, |
||||
|
dt, |
||||
|
dd, |
||||
|
ul, |
||||
|
ol, |
||||
|
li, |
||||
|
p, |
||||
|
blockquote, |
||||
|
pre, |
||||
|
hr, |
||||
|
figure, |
||||
|
table, |
||||
|
caption, |
||||
|
th, |
||||
|
td, |
||||
|
form, |
||||
|
fieldset, |
||||
|
legend, |
||||
|
input, |
||||
|
button, |
||||
|
textarea, |
||||
|
menu { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100%; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
text-rendering: optimizeLegibility; |
||||
|
font-family: Helvetica Neue, Helvetica, Arial, Microsoft Yahei, Hiragino Sans GB, Heiti SC, WenQuanYi Micro Hei, sans-serif; |
||||
|
} |
||||
|
|
||||
|
label { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
height: 100%; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
#app { |
||||
|
height: 100%; |
||||
|
background: #203673f7; //临时 |
||||
|
} |
||||
|
*, |
||||
|
*:before, |
||||
|
*:after { |
||||
|
box-sizing: inherit; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
outline: none; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
div:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a:focus, |
||||
|
a:active { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.clearfix { |
||||
|
&:after { |
||||
|
visibility: hidden; |
||||
|
display: block; |
||||
|
font-size: 0; |
||||
|
content: " "; |
||||
|
clear: both; |
||||
|
height: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.flex-box { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-space-between { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column-reverse { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column-reverse; |
||||
|
} |
||||
|
|
||||
|
.font-size-21 { |
||||
|
font-size: 21px; |
||||
|
} |
||||
|
|
||||
|
.font-size-13 { |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
|
||||
|
.font-size-16 { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.font-weight-bold { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.line-height-2em { |
||||
|
line-height: 2em; |
||||
|
} |
||||
|
|
||||
|
.text-center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.flex-1 { |
||||
|
-webkit-box-flex: 1; |
||||
|
-webkit-flex: 1; |
||||
|
flex: 1; |
||||
|
} |
||||
|
.color-white { |
||||
|
color: #fff; |
||||
|
} |
||||
|
.color-success { |
||||
|
color: #5CB959; |
||||
|
} |
||||
|
|
||||
|
.color-error { |
||||
|
color: #EA6356; |
||||
|
} |
||||
|
|
||||
|
.color-wait { |
||||
|
color: #FFBF00; |
||||
|
} |
||||
|
|
||||
|
.float-left { |
||||
|
float: left; |
||||
|
} |
||||
|
|
||||
|
.float-right { |
||||
|
float: right; |
||||
|
} |
||||
|
|
||||
|
// ul,ol,li{ |
||||
|
// list-style: none; |
||||
|
// } |
||||
|
//main-container全局样式 |
||||
|
.app-main { |
||||
|
min-height: 100% |
||||
|
} |
||||
|
|
||||
|
.app-container { |
||||
|
padding: 20px; |
||||
|
background-color: #fff; |
||||
|
.input-suffix { |
||||
|
line-height: 60px; |
||||
|
display: inline; |
||||
|
margin: 0 1em; |
||||
|
} |
||||
|
.filter-container { |
||||
|
line-height: 50px; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//处理浏览器输入框记住账号密码后的背景色 |
||||
|
input:-webkit-autofill, |
||||
|
textarea:-webkit-autofill, |
||||
|
select:-webkit-autofill { |
||||
|
-webkit-text-fill-color: #333 !important; |
||||
|
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important; |
||||
|
background-color: transparent; |
||||
|
background-image: none; |
||||
|
transition: background-color 50000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间 |
||||
|
} |
||||
|
|
||||
|
input { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
// .container-box{ |
||||
|
// .query-box{ |
||||
|
// background: #fff; |
||||
|
// margin-bottom:20px; |
||||
|
// border-radius: 5px; |
||||
|
// .title{ |
||||
|
// padding: 20px; |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(52,123,229,1); |
||||
|
// border-bottom:1px solid #DEDEDE; |
||||
|
// } |
||||
|
// } |
||||
|
// .table-box{ |
||||
|
// background: #fff; |
||||
|
// border-radius: 5px; |
||||
|
// padding-bottom: 50px; |
||||
|
// .title-box{ |
||||
|
// .title{ |
||||
|
// padding: 21px 0 21px 21px; |
||||
|
// p{ |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(68,138,231,1); |
||||
|
// border-left:3px solid #448AE7; |
||||
|
// padding-left: 8px; |
||||
|
// } |
||||
|
// } |
||||
|
// .btn{ |
||||
|
// padding: 11px 54px 11px 0; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// input:-webkit-autofill { |
||||
|
// -webkit-box-shadow: 0 0 0 1000px white inset !important; |
||||
|
// } |
||||
|
.header-banner { |
||||
|
position: relative; |
||||
|
height: 600px; |
||||
|
width: 100%; |
||||
|
padding-left: 20%; |
||||
|
padding-top: 100px; |
||||
|
margin-bottom: -84px; |
||||
|
.header-bg1 { |
||||
|
top: -84px; |
||||
|
left: 0; |
||||
|
// margin-left: -952px; |
||||
|
// right: 0; |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
z-index: -1; |
||||
|
} |
||||
|
.header-title-cn { |
||||
|
font-size: 64px; |
||||
|
line-height: 100px; |
||||
|
font-family: Source Han Sans CN; |
||||
|
font-weight: bold; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.header-title-en { |
||||
|
font-size: 24px; |
||||
|
line-height: 50px; |
||||
|
font-family: Microsoft YaHei UI; |
||||
|
font-weight: 400; |
||||
|
color: #fff; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.header-download { |
||||
|
position: absolute; |
||||
|
bottom: 207px; |
||||
|
width: 74px; |
||||
|
height: 74px; |
||||
|
} |
||||
|
} |
@ -0,0 +1,233 @@ |
|||||
|
|
||||
|
@import './variables.scss'; |
||||
|
#app { |
||||
|
// 主体区域 |
||||
|
.main-container { |
||||
|
position: relative; |
||||
|
min-height: 100%; |
||||
|
width: calc(100% -180px); |
||||
|
background-color: #EFEFEF; |
||||
|
transition: margin-left .28s; |
||||
|
margin-left: 180px; |
||||
|
} |
||||
|
.main-content { |
||||
|
width: 1200px; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
.header-content { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
padding: 0 20px; |
||||
|
background: rgba(255,255,255,.1); |
||||
|
} |
||||
|
// 顶边栏 |
||||
|
.header-sidebar-container { |
||||
|
width: 100%; |
||||
|
// height: 60px; |
||||
|
position: fixed; |
||||
|
// background-color: #DF3434; |
||||
|
color: #fff; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
font-size: 18px; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
.svg-icon { |
||||
|
color: #000; |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
display: inline-block; |
||||
|
border: none; |
||||
|
height: 84px; |
||||
|
vertical-align: bottom; |
||||
|
a,.el-submenu { |
||||
|
display: inline-block; |
||||
|
float: left; |
||||
|
} |
||||
|
.el-submenu__icon-arrow { |
||||
|
position: static; |
||||
|
vertical-align: middle; |
||||
|
margin-left: 8px; |
||||
|
margin-top: -3px; |
||||
|
} |
||||
|
.el-menu-item, .el-submenu__title { |
||||
|
i { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
height: 84px; |
||||
|
line-height: 84px; |
||||
|
font-size: 16px; |
||||
|
padding:0 25px; |
||||
|
&:hover { |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
// border-bottom: 3px solid #fff; |
||||
|
// border-bottom:0; |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
// menu hover |
||||
|
// .submenu-title-noDropdown, |
||||
|
// .el-submenu__title { |
||||
|
// i { |
||||
|
// color: #ffffff; |
||||
|
// } |
||||
|
// &:hover { |
||||
|
// background-color: $menuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
// .is-active>.el-submenu__title { |
||||
|
// color: $subMenuActiveText !important; |
||||
|
// } |
||||
|
|
||||
|
// & .nest-menu .el-submenu>.el-submenu__title, |
||||
|
// & .el-submenu .el-menu-item { |
||||
|
// min-width: $sideBarWidth !important; |
||||
|
// background-color: $subMenuBg !important; |
||||
|
|
||||
|
// &:hover { |
||||
|
// background-color: $subMenuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
} |
||||
|
// 侧边栏 |
||||
|
.sidebar-container { |
||||
|
transition: width 0.28s; |
||||
|
width: 180px !important; |
||||
|
height: calc(100% - 84px); |
||||
|
position: absolute; |
||||
|
font-size: 0px; |
||||
|
top: 84px; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
//reset element-ui css |
||||
|
.horizontal-collapse-transition { |
||||
|
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; |
||||
|
} |
||||
|
.scrollbar-wrapper { |
||||
|
height: calc(100% + 15px); |
||||
|
.el-scrollbar__view { |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
.is-horizontal { |
||||
|
display: none; |
||||
|
} |
||||
|
a { |
||||
|
display: inline-block; |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.svg-icon { |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
border: none; |
||||
|
height: 100%; |
||||
|
width: 100% !important; |
||||
|
// background-image: url("../../static/bg.png"); |
||||
|
background-repeat: no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
li { |
||||
|
&:hover { |
||||
|
color: #DF3434; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
border-left: 3px solid #DF3434; |
||||
|
color: #DF3434; |
||||
|
border-bottom:0; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
.openSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
} |
||||
|
.hideSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
.sidebar-container { |
||||
|
width: 60px !important; |
||||
|
} |
||||
|
.main-container { |
||||
|
margin-left: 60px; |
||||
|
} |
||||
|
.submenu-title-noDropdown { |
||||
|
padding-left: 10px !important; |
||||
|
position: relative; |
||||
|
.el-tooltip { |
||||
|
padding: 0 10px !important; |
||||
|
} |
||||
|
} |
||||
|
.el-submenu { |
||||
|
overflow: hidden; |
||||
|
&>.el-submenu__title { |
||||
|
padding-left: 10px !important; |
||||
|
.el-submenu__icon-arrow { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--collapse { |
||||
|
.el-submenu { |
||||
|
&>.el-submenu__title { |
||||
|
&>span { |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
overflow: hidden; |
||||
|
visibility: hidden; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//适配移动端 |
||||
|
.mobile { |
||||
|
.main-container { |
||||
|
margin-left: 0px; |
||||
|
} |
||||
|
.sidebar-container { |
||||
|
transition: transform .28s; |
||||
|
width: 180px !important; |
||||
|
} |
||||
|
&.hideSidebar { |
||||
|
.sidebar-container { |
||||
|
transition-duration: 0.3s; |
||||
|
transform: translate3d(-180px, 0, 0); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.withoutAnimation { |
||||
|
.main-container, |
||||
|
.sidebar-container { |
||||
|
transition: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--horizontal { |
||||
|
// width: 100% !important; |
||||
|
// left: 0 !important; |
||||
|
|
||||
|
background-color: #F7F7F7; |
||||
|
.el-menu--popup { |
||||
|
min-width: 120px; |
||||
|
.is-active { |
||||
|
// border-bottom: 2px solid #fff; |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
.el-menu-item { |
||||
|
color: #000 !important; |
||||
|
&:hover { |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
//sidebar |
||||
|
$menuText:#fff; |
||||
|
$menuText2:#212121; |
||||
|
$menuActiveText:#fff; |
||||
|
$menuActiveText2:rgb(217, 52, 223); |
||||
|
$subMenuActiveText:#4b4bce; //https://github.com/ElemeFE/element/issues/12951 |
||||
|
|
||||
|
$menuBg:rgba(0,0,0,0); |
||||
|
$menuHover: rgba(255,255,255,0.3); |
||||
|
|
||||
|
$subMenuBg:#000; |
||||
|
$subMenuHover:#ffffff33; |
||||
|
|
||||
|
$sideBarWidth: 200px; |
||||
|
|
||||
|
// the :export directive is the magic sauce for webpack |
||||
|
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass |
||||
|
:export { |
||||
|
menuText: $menuText; |
||||
|
menuActiveText: $menuActiveText; |
||||
|
subMenuActiveText: $subMenuActiveText; |
||||
|
menuBg: $menuBg; |
||||
|
menuHover: $menuHover; |
||||
|
subMenuBg: $subMenuBg; |
||||
|
subMenuHover: $subMenuHover; |
||||
|
sideBarWidth: $sideBarWidth; |
||||
|
} |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 474 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 571 B |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,87 @@ |
|||||
|
|
||||
|
.search-container { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 109.7%; |
||||
|
overflow: hidden; |
||||
|
margin-top: -84px; |
||||
|
.search-header { |
||||
|
width: 100%; |
||||
|
height: 90px; |
||||
|
padding: 0 20px; |
||||
|
// background:rgba(255,255,255,0.1); |
||||
|
.logo { |
||||
|
display: inline-block; |
||||
|
margin-top: 10px; |
||||
|
// width: 580px; |
||||
|
height: 70px; |
||||
|
border: 0; |
||||
|
} |
||||
|
.white-button { |
||||
|
position: relative; |
||||
|
float: right; |
||||
|
top: 30px; |
||||
|
background:transparent; |
||||
|
color: #fff; |
||||
|
border: 1px solid #fff; |
||||
|
&:active { |
||||
|
background-color: rgba(255, 255, 255, 0.3); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-footer { |
||||
|
position: fixed; |
||||
|
bottom: 0px; |
||||
|
width: 100%; |
||||
|
// background-color:rgba(255,255,255,0.1); |
||||
|
line-height: 60px; |
||||
|
font-size:14px; |
||||
|
font-family:PingFang-SC-Regular; |
||||
|
color:#fff; |
||||
|
z-index: 5; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-footer .copyright { |
||||
|
position: relative; |
||||
|
} |
||||
|
} |
||||
|
.search-form { |
||||
|
position: absolute; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
transform: translate(-50%,-50%); |
||||
|
width: 773px; |
||||
|
height: 100px; |
||||
|
label { |
||||
|
display: inline-block; |
||||
|
color: #fff; |
||||
|
margin: 10px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
} |
||||
|
.search-form { |
||||
|
.el-input-group__append { |
||||
|
background-color: rgba(205,36,29,1); |
||||
|
color: #fff; |
||||
|
border: none; |
||||
|
&:active { |
||||
|
background-color: rgba(205,36,29,0.8); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-input { |
||||
|
box-shadow: 0px 0px 15px #888888; |
||||
|
&::before { |
||||
|
position: absolute; |
||||
|
content: ' '; |
||||
|
width: 14px; |
||||
|
height: 14px; |
||||
|
top: -13px; |
||||
|
left: 30px; |
||||
|
border-bottom: 7px solid #fff; |
||||
|
border-top: 7px solid transparent; |
||||
|
border-left: 7px solid transparent; |
||||
|
border-right: 7px solid transparent; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,166 @@ |
|||||
|
//to reset element-ui default css |
||||
|
//table header reset css |
||||
|
.el-table thead { |
||||
|
color: #333333; |
||||
|
font-weight: 500; |
||||
|
font-size: 15px; |
||||
|
} |
||||
|
.el-table__header-wrapper tr { |
||||
|
background-color: #ececec !important; |
||||
|
} |
||||
|
.el-table th, |
||||
|
.el-table tr { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
//分页器reset css |
||||
|
.el-pagination { |
||||
|
padding: 30px 5px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-pagination.is-background .btn-next, |
||||
|
.el-pagination.is-background .btn-prev, |
||||
|
.el-pagination.is-background .el-pager li { |
||||
|
background-color: #ffffff; |
||||
|
border: 1px solid #ececec; |
||||
|
color: #606266; |
||||
|
} |
||||
|
.el-pagination.is-background .el-pager li:not(.disabled):hover { |
||||
|
color: #df3434; |
||||
|
} |
||||
|
.el-pagination.is-background .el-pager li:not(.disabled).active { |
||||
|
background-color: #df3434; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.el-pagination__sizes .el-input .el-input__inner:hover { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
.el-select .el-input.is-focus .el-input__inner { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
.el-select-dropdown__item.selected { |
||||
|
color: #df3434; |
||||
|
} |
||||
|
.el-input.is-active .el-input__inner, |
||||
|
.el-input__inner:focus { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
|
||||
|
.el-dialog__header { |
||||
|
background-color:rgba(248,248,248,1); |
||||
|
} |
||||
|
//下拉条 |
||||
|
.avatar-uploader .el-upload { |
||||
|
border: 1px dashed #929292; |
||||
|
border-radius: 6px; |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.avatar-uploader .el-upload:hover { |
||||
|
border-color: #409EFF; |
||||
|
} |
||||
|
.avatar-uploader-icon { |
||||
|
font-size: 28px; |
||||
|
color: #8c939d; |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
line-height: 120px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.avatar { |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
//下拉菜单 |
||||
|
.el-dropdown-menu { |
||||
|
background-color: #F7F7F7 !important; |
||||
|
.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover { |
||||
|
background-color: #ffe8e6 !important; |
||||
|
color: #606266; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//步骤条 |
||||
|
.el-step__head.is-process { |
||||
|
color: #DF3434; |
||||
|
border-color: #DF3434; |
||||
|
} |
||||
|
.el-step__title.is-process { |
||||
|
font-weight: 700; |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
.el-step__description.is-process { |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
|
||||
|
//文字链接 |
||||
|
.el-link { |
||||
|
vertical-align: unset; |
||||
|
} |
||||
|
|
||||
|
.el-header{ |
||||
|
position: relative; |
||||
|
width:100%; |
||||
|
padding: 0; |
||||
|
height:84px; |
||||
|
// background-color: #01496E; |
||||
|
z-index: 100; |
||||
|
} |
||||
|
|
||||
|
//el-dialog样式 |
||||
|
.el-dialog__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-dialog__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
.el-dialog__footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
//el-message-box样式 |
||||
|
.el-message-box__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-message-box__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
// .el-upload { |
||||
|
// input[type="file"] { |
||||
|
// display: none !important; |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
// .el-upload__input { |
||||
|
// display: none; |
||||
|
// } |
||||
|
|
||||
|
// //暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461 |
||||
|
// .el-dialog { |
||||
|
// transform: none; |
||||
|
// left: 0; |
||||
|
// position: relative; |
||||
|
// margin: 0 auto; |
||||
|
// } |
||||
|
|
||||
|
// //element ui upload |
||||
|
// .upload-container { |
||||
|
// .el-upload { |
||||
|
// width: 100%; |
||||
|
// .el-upload-dragger { |
||||
|
// width: 100%; |
||||
|
// height: 200px; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// //树形节点 |
||||
|
// .custom-tree-node { |
||||
|
// flex: 1; |
||||
|
// display: flex; |
||||
|
// align-items: center; |
||||
|
// justify-content: space-between; |
||||
|
// font-size: 14px; |
||||
|
// padding-right: 8px; |
||||
|
// } |
@ -0,0 +1,310 @@ |
|||||
|
@import './variables.scss'; |
||||
|
// @import './mixin.scss'; |
||||
|
// @import './transition.scss'; |
||||
|
@import './element-ui.scss'; |
||||
|
@import './sidebar.scss'; |
||||
|
// @import './button.scss'; |
||||
|
// @import './header.scss'; |
||||
|
// @import './reset-el';//覆盖element 表单和表格样式 |
||||
|
html, |
||||
|
body, |
||||
|
h1, |
||||
|
h2, |
||||
|
h3, |
||||
|
h4, |
||||
|
h5, |
||||
|
h6, |
||||
|
div, |
||||
|
dl, |
||||
|
dt, |
||||
|
dd, |
||||
|
ul, |
||||
|
ol, |
||||
|
li, |
||||
|
p, |
||||
|
blockquote, |
||||
|
pre, |
||||
|
hr, |
||||
|
figure, |
||||
|
table, |
||||
|
caption, |
||||
|
th, |
||||
|
td, |
||||
|
form, |
||||
|
fieldset, |
||||
|
legend, |
||||
|
input, |
||||
|
button, |
||||
|
textarea, |
||||
|
menu { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100%; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
text-rendering: optimizeLegibility; |
||||
|
font-family: Helvetica Neue, Helvetica, Arial, Microsoft Yahei, Hiragino Sans GB, Heiti SC, WenQuanYi Micro Hei, sans-serif; |
||||
|
} |
||||
|
|
||||
|
label { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
height: 100%; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
#app { |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
*, |
||||
|
*:before, |
||||
|
*:after { |
||||
|
box-sizing: inherit; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
outline: none; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
div:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a:focus, |
||||
|
a:active { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.clearfix { |
||||
|
&:after { |
||||
|
visibility: hidden; |
||||
|
display: block; |
||||
|
font-size: 0; |
||||
|
content: " "; |
||||
|
clear: both; |
||||
|
height: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.flex-box { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-space-between { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column-reverse { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column-reverse; |
||||
|
} |
||||
|
|
||||
|
.font-size-21 { |
||||
|
font-size: 21px; |
||||
|
} |
||||
|
|
||||
|
.font-size-13 { |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
|
||||
|
.font-size-16 { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.font-weight-bold { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.line-height-2em { |
||||
|
line-height: 2em; |
||||
|
} |
||||
|
|
||||
|
.text-center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.flex-1 { |
||||
|
-webkit-box-flex: 1; |
||||
|
-webkit-flex: 1; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.color-success { |
||||
|
color: #5CB959; |
||||
|
} |
||||
|
|
||||
|
.color-error { |
||||
|
color: #EA6356; |
||||
|
} |
||||
|
|
||||
|
.color-wait { |
||||
|
color: #FFBF00; |
||||
|
} |
||||
|
|
||||
|
.float-left { |
||||
|
float: left; |
||||
|
} |
||||
|
|
||||
|
.float-right { |
||||
|
float: right; |
||||
|
} |
||||
|
|
||||
|
// ul,ol,li{ |
||||
|
// list-style: none; |
||||
|
// } |
||||
|
//main-container全局样式 |
||||
|
.app-main { |
||||
|
min-height: 100% |
||||
|
} |
||||
|
|
||||
|
.app-container { |
||||
|
padding: 20px; |
||||
|
background-color: #fff; |
||||
|
.input-suffix { |
||||
|
line-height: 60px; |
||||
|
display: inline; |
||||
|
margin: 0 1em; |
||||
|
} |
||||
|
.filter-container { |
||||
|
line-height: 50px; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//处理浏览器输入框记住账号密码后的背景色 |
||||
|
input:-webkit-autofill, |
||||
|
textarea:-webkit-autofill, |
||||
|
select:-webkit-autofill { |
||||
|
-webkit-text-fill-color: #333 !important; |
||||
|
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important; |
||||
|
background-color: transparent; |
||||
|
background-image: none; |
||||
|
transition: background-color 50000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间 |
||||
|
} |
||||
|
|
||||
|
input { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
// .container-box{ |
||||
|
// .query-box{ |
||||
|
// background: #fff; |
||||
|
// margin-bottom:20px; |
||||
|
// border-radius: 5px; |
||||
|
// .title{ |
||||
|
// padding: 20px; |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(52,123,229,1); |
||||
|
// border-bottom:1px solid #DEDEDE; |
||||
|
// } |
||||
|
// } |
||||
|
// .table-box{ |
||||
|
// background: #fff; |
||||
|
// border-radius: 5px; |
||||
|
// padding-bottom: 50px; |
||||
|
// .title-box{ |
||||
|
// .title{ |
||||
|
// padding: 21px 0 21px 21px; |
||||
|
// p{ |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(68,138,231,1); |
||||
|
// border-left:3px solid #448AE7; |
||||
|
// padding-left: 8px; |
||||
|
// } |
||||
|
// } |
||||
|
// .btn{ |
||||
|
// padding: 11px 54px 11px 0; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// input:-webkit-autofill { |
||||
|
// -webkit-box-shadow: 0 0 0 1000px white inset !important; |
||||
|
// } |
||||
|
.header-banner { |
||||
|
position: relative; |
||||
|
height: 600px; |
||||
|
width: 100%; |
||||
|
padding-left: 20%; |
||||
|
padding-top: 100px; |
||||
|
margin-bottom: -84px; |
||||
|
.header-bg1 { |
||||
|
top: -84px; |
||||
|
left: 0; |
||||
|
// margin-left: -952px; |
||||
|
// right: 0; |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
z-index: -1; |
||||
|
} |
||||
|
.header-title-cn { |
||||
|
font-size: 64px; |
||||
|
line-height: 100px; |
||||
|
font-family: Source Han Sans CN; |
||||
|
font-weight: bold; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.header-title-en { |
||||
|
font-size: 24px; |
||||
|
line-height: 50px; |
||||
|
font-family: Microsoft YaHei UI; |
||||
|
font-weight: 400; |
||||
|
color: #fff; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.header-download { |
||||
|
position: absolute; |
||||
|
bottom: 207px; |
||||
|
width: 74px; |
||||
|
height: 74px; |
||||
|
} |
||||
|
} |
@ -0,0 +1,232 @@ |
|||||
|
|
||||
|
@import './variables.scss'; |
||||
|
#app { |
||||
|
// 主体区域 |
||||
|
.main-container { |
||||
|
position: relative; |
||||
|
min-height: 100%; |
||||
|
width: calc(100% -180px); |
||||
|
background-color: #EFEFEF; |
||||
|
transition: margin-left .28s; |
||||
|
margin-left: 180px; |
||||
|
} |
||||
|
.main-content { |
||||
|
width: 1200px; |
||||
|
margin: 0 15px; |
||||
|
} |
||||
|
.header-content { |
||||
|
width: 100%; |
||||
|
padding: 0 20px; |
||||
|
background: rgba(255,255,255,.1); |
||||
|
} |
||||
|
// 顶边栏 |
||||
|
.header-sidebar-container { |
||||
|
width: 100%; |
||||
|
// height: 60px; |
||||
|
position: fixed; |
||||
|
// background-color: #DF3434; |
||||
|
color: #fff; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
font-size: 18px; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
.svg-icon { |
||||
|
color: #000; |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
display: inline-block; |
||||
|
border: none; |
||||
|
height: 84px; |
||||
|
vertical-align: bottom; |
||||
|
a,.el-submenu { |
||||
|
display: inline-block; |
||||
|
float: left; |
||||
|
} |
||||
|
.el-submenu__icon-arrow { |
||||
|
position: static; |
||||
|
vertical-align: middle; |
||||
|
margin-left: 8px; |
||||
|
margin-top: -3px; |
||||
|
} |
||||
|
.el-menu-item, .el-submenu__title { |
||||
|
i { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
height: 84px; |
||||
|
line-height: 84px; |
||||
|
font-size: 16px; |
||||
|
padding:0 25px; |
||||
|
&:hover { |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
border-bottom: 3px solid #fff; |
||||
|
// border-bottom:0; |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
// menu hover |
||||
|
// .submenu-title-noDropdown, |
||||
|
// .el-submenu__title { |
||||
|
// i { |
||||
|
// color: #ffffff; |
||||
|
// } |
||||
|
// &:hover { |
||||
|
// background-color: $menuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
// .is-active>.el-submenu__title { |
||||
|
// color: $subMenuActiveText !important; |
||||
|
// } |
||||
|
|
||||
|
// & .nest-menu .el-submenu>.el-submenu__title, |
||||
|
// & .el-submenu .el-menu-item { |
||||
|
// min-width: $sideBarWidth !important; |
||||
|
// background-color: $subMenuBg !important; |
||||
|
|
||||
|
// &:hover { |
||||
|
// background-color: $subMenuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
} |
||||
|
// 侧边栏 |
||||
|
.sidebar-container { |
||||
|
transition: width 0.28s; |
||||
|
width: 180px !important; |
||||
|
height: calc(100% - 84px); |
||||
|
position: absolute; |
||||
|
font-size: 0px; |
||||
|
top: 84px; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
//reset element-ui css |
||||
|
.horizontal-collapse-transition { |
||||
|
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; |
||||
|
} |
||||
|
.scrollbar-wrapper { |
||||
|
height: calc(100% + 15px); |
||||
|
.el-scrollbar__view { |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
.is-horizontal { |
||||
|
display: none; |
||||
|
} |
||||
|
a { |
||||
|
display: inline-block; |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.svg-icon { |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
border: none; |
||||
|
height: 100%; |
||||
|
width: 100% !important; |
||||
|
// background-image: url("../../static/bg.png"); |
||||
|
background-repeat: no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
li { |
||||
|
&:hover { |
||||
|
color: #DF3434; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
border-left: 3px solid #DF3434; |
||||
|
color: #DF3434; |
||||
|
border-bottom:0; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
.openSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
} |
||||
|
.hideSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
.sidebar-container { |
||||
|
width: 60px !important; |
||||
|
} |
||||
|
.main-container { |
||||
|
margin-left: 60px; |
||||
|
} |
||||
|
.submenu-title-noDropdown { |
||||
|
padding-left: 10px !important; |
||||
|
position: relative; |
||||
|
.el-tooltip { |
||||
|
padding: 0 10px !important; |
||||
|
} |
||||
|
} |
||||
|
.el-submenu { |
||||
|
overflow: hidden; |
||||
|
&>.el-submenu__title { |
||||
|
padding-left: 10px !important; |
||||
|
.el-submenu__icon-arrow { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--collapse { |
||||
|
.el-submenu { |
||||
|
&>.el-submenu__title { |
||||
|
&>span { |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
overflow: hidden; |
||||
|
visibility: hidden; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//适配移动端 |
||||
|
.mobile { |
||||
|
.main-container { |
||||
|
margin-left: 0px; |
||||
|
} |
||||
|
.sidebar-container { |
||||
|
transition: transform .28s; |
||||
|
width: 180px !important; |
||||
|
} |
||||
|
&.hideSidebar { |
||||
|
.sidebar-container { |
||||
|
transition-duration: 0.3s; |
||||
|
transform: translate3d(-180px, 0, 0); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.withoutAnimation { |
||||
|
.main-container, |
||||
|
.sidebar-container { |
||||
|
transition: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--horizontal { |
||||
|
// width: 100% !important; |
||||
|
// left: 0 !important; |
||||
|
|
||||
|
background-color: #F7F7F7; |
||||
|
.el-menu--popup { |
||||
|
min-width: 120px; |
||||
|
.is-active { |
||||
|
// border-bottom: 2px solid #fff; |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
.el-menu-item { |
||||
|
color: #000 !important; |
||||
|
&:hover { |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
//sidebar |
||||
|
$menuText:#fff; |
||||
|
$menuText2:#212121; |
||||
|
$menuActiveText:#fff; |
||||
|
$menuActiveText2:rgb(217, 52, 223); |
||||
|
$subMenuActiveText:#4b4bce; //https://github.com/ElemeFE/element/issues/12951 |
||||
|
|
||||
|
$menuBg:rgba(0,0,0,0); |
||||
|
$menuHover: rgba(255,255,255,0.3); |
||||
|
|
||||
|
$subMenuBg:#000; |
||||
|
$subMenuHover:#ffffff33; |
||||
|
|
||||
|
$sideBarWidth: 200px; |
||||
|
|
||||
|
// the :export directive is the magic sauce for webpack |
||||
|
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass |
||||
|
:export { |
||||
|
menuText: $menuText; |
||||
|
menuActiveText: $menuActiveText; |
||||
|
subMenuActiveText: $subMenuActiveText; |
||||
|
menuBg: $menuBg; |
||||
|
menuHover: $menuHover; |
||||
|
subMenuBg: $subMenuBg; |
||||
|
subMenuHover: $subMenuHover; |
||||
|
sideBarWidth: $sideBarWidth; |
||||
|
} |
After Width: | Height: | Size: 374 KiB |
After Width: | Height: | Size: 487 B |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 474 B |
After Width: | Height: | Size: 329 B |
After Width: | Height: | Size: 571 B |
After Width: | Height: | Size: 18 KiB |
@ -0,0 +1,86 @@ |
|||||
|
|
||||
|
.search-container { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 109.7%; |
||||
|
overflow: hidden; |
||||
|
margin-top: -84px; |
||||
|
.search-header { |
||||
|
width: 100%; |
||||
|
height: 90px; |
||||
|
padding: 0 20px; |
||||
|
// background:rgba(255,255,255,0.1); |
||||
|
.logo { |
||||
|
display: inline-block; |
||||
|
margin-top: 10px; |
||||
|
// width: 580px; |
||||
|
height: 70px; |
||||
|
border: 0; |
||||
|
} |
||||
|
.white-button { |
||||
|
position: relative; |
||||
|
float: right; |
||||
|
top: 30px; |
||||
|
background:transparent; |
||||
|
color: #fff; |
||||
|
border: 1px solid #fff; |
||||
|
&:active { |
||||
|
background-color: rgba(255, 255, 255, 0.3); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-footer { |
||||
|
position: fixed; |
||||
|
bottom: 0px; |
||||
|
width: 100%; |
||||
|
// background-color:rgba(255,255,255,0.1); |
||||
|
line-height: 60px; |
||||
|
font-size:14px; |
||||
|
font-family:PingFang-SC-Regular; |
||||
|
color:#fff; |
||||
|
z-index: 5; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-footer .copyright { |
||||
|
position: relative; |
||||
|
} |
||||
|
} |
||||
|
.search-form { |
||||
|
position: absolute; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
transform: translate(-50%,-50%); |
||||
|
width: 773px; |
||||
|
height: 100px; |
||||
|
label { |
||||
|
display: inline-block; |
||||
|
margin: 10px; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
} |
||||
|
.search-form { |
||||
|
.el-input-group__append { |
||||
|
background-color: rgba(205,36,29,1); |
||||
|
color: #fff; |
||||
|
border: none; |
||||
|
&:active { |
||||
|
background-color: rgba(205,36,29,0.8); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.el-input { |
||||
|
box-shadow: 0px 0px 15px #888888; |
||||
|
&::before { |
||||
|
position: absolute; |
||||
|
content: ' '; |
||||
|
width: 14px; |
||||
|
height: 14px; |
||||
|
top: -13px; |
||||
|
left: 30px; |
||||
|
border-bottom: 7px solid #fff; |
||||
|
border-top: 7px solid transparent; |
||||
|
border-left: 7px solid transparent; |
||||
|
border-right: 7px solid transparent; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,166 @@ |
|||||
|
//to reset element-ui default css |
||||
|
//table header reset css |
||||
|
.el-table thead { |
||||
|
color: #333333; |
||||
|
font-weight: 500; |
||||
|
font-size: 15px; |
||||
|
} |
||||
|
.el-table__header-wrapper tr { |
||||
|
background-color: #ececec !important; |
||||
|
} |
||||
|
.el-table th, |
||||
|
.el-table tr { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
//分页器reset css |
||||
|
.el-pagination { |
||||
|
padding: 30px 5px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-pagination.is-background .btn-next, |
||||
|
.el-pagination.is-background .btn-prev, |
||||
|
.el-pagination.is-background .el-pager li { |
||||
|
background-color: #ffffff; |
||||
|
border: 1px solid #ececec; |
||||
|
color: #606266; |
||||
|
} |
||||
|
.el-pagination.is-background .el-pager li:not(.disabled):hover { |
||||
|
color: #df3434; |
||||
|
} |
||||
|
.el-pagination.is-background .el-pager li:not(.disabled).active { |
||||
|
background-color: #df3434; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.el-pagination__sizes .el-input .el-input__inner:hover { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
.el-select .el-input.is-focus .el-input__inner { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
.el-select-dropdown__item.selected { |
||||
|
color: #df3434; |
||||
|
} |
||||
|
.el-input.is-active .el-input__inner, |
||||
|
.el-input__inner:focus { |
||||
|
border-color: #df3434; |
||||
|
} |
||||
|
|
||||
|
.el-dialog__header { |
||||
|
background-color:rgba(248,248,248,1); |
||||
|
} |
||||
|
//下拉条 |
||||
|
.avatar-uploader .el-upload { |
||||
|
border: 1px dashed #929292; |
||||
|
border-radius: 6px; |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.avatar-uploader .el-upload:hover { |
||||
|
border-color: #409EFF; |
||||
|
} |
||||
|
.avatar-uploader-icon { |
||||
|
font-size: 28px; |
||||
|
color: #8c939d; |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
line-height: 120px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.avatar { |
||||
|
width: 120px; |
||||
|
height: 120px; |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
//下拉菜单 |
||||
|
.el-dropdown-menu { |
||||
|
background-color: #F7F7F7 !important; |
||||
|
.el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover { |
||||
|
background-color: #ffe8e6 !important; |
||||
|
color: #606266; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//步骤条 |
||||
|
.el-step__head.is-process { |
||||
|
color: #DF3434; |
||||
|
border-color: #DF3434; |
||||
|
} |
||||
|
.el-step__title.is-process { |
||||
|
font-weight: 700; |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
.el-step__description.is-process { |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
|
||||
|
//文字链接 |
||||
|
.el-link { |
||||
|
vertical-align: unset; |
||||
|
} |
||||
|
|
||||
|
.el-header{ |
||||
|
position: relative; |
||||
|
width:100%; |
||||
|
padding: 0; |
||||
|
height:84px; |
||||
|
// background-color: #01496E; |
||||
|
z-index: 100; |
||||
|
} |
||||
|
|
||||
|
//el-dialog样式 |
||||
|
.el-dialog__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-dialog__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
.el-dialog__footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
//el-message-box样式 |
||||
|
.el-message-box__title { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.el-message-box__headerbtn { |
||||
|
font-size: 22px; |
||||
|
} |
||||
|
// .el-upload { |
||||
|
// input[type="file"] { |
||||
|
// display: none !important; |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
// .el-upload__input { |
||||
|
// display: none; |
||||
|
// } |
||||
|
|
||||
|
// //暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461 |
||||
|
// .el-dialog { |
||||
|
// transform: none; |
||||
|
// left: 0; |
||||
|
// position: relative; |
||||
|
// margin: 0 auto; |
||||
|
// } |
||||
|
|
||||
|
// //element ui upload |
||||
|
// .upload-container { |
||||
|
// .el-upload { |
||||
|
// width: 100%; |
||||
|
// .el-upload-dragger { |
||||
|
// width: 100%; |
||||
|
// height: 200px; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// //树形节点 |
||||
|
// .custom-tree-node { |
||||
|
// flex: 1; |
||||
|
// display: flex; |
||||
|
// align-items: center; |
||||
|
// justify-content: space-between; |
||||
|
// font-size: 14px; |
||||
|
// padding-right: 8px; |
||||
|
// } |
@ -0,0 +1,310 @@ |
|||||
|
@import './variables.scss'; |
||||
|
// @import './mixin.scss'; |
||||
|
// @import './transition.scss'; |
||||
|
@import './element-ui.scss'; |
||||
|
@import './sidebar.scss'; |
||||
|
// @import './button.scss'; |
||||
|
// @import './header.scss'; |
||||
|
// @import './reset-el';//覆盖element 表单和表格样式 |
||||
|
html, |
||||
|
body, |
||||
|
h1, |
||||
|
h2, |
||||
|
h3, |
||||
|
h4, |
||||
|
h5, |
||||
|
h6, |
||||
|
div, |
||||
|
dl, |
||||
|
dt, |
||||
|
dd, |
||||
|
ul, |
||||
|
ol, |
||||
|
li, |
||||
|
p, |
||||
|
blockquote, |
||||
|
pre, |
||||
|
hr, |
||||
|
figure, |
||||
|
table, |
||||
|
caption, |
||||
|
th, |
||||
|
td, |
||||
|
form, |
||||
|
fieldset, |
||||
|
legend, |
||||
|
input, |
||||
|
button, |
||||
|
textarea, |
||||
|
menu { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100%; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
text-rendering: optimizeLegibility; |
||||
|
font-family: Helvetica Neue, Helvetica, Arial, Microsoft Yahei, Hiragino Sans GB, Heiti SC, WenQuanYi Micro Hei, sans-serif; |
||||
|
} |
||||
|
|
||||
|
label { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
height: 100%; |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
#app { |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
*, |
||||
|
*:before, |
||||
|
*:after { |
||||
|
box-sizing: inherit; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
outline: none; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
div:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a:focus, |
||||
|
a:active { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.clearfix { |
||||
|
&:after { |
||||
|
visibility: hidden; |
||||
|
display: block; |
||||
|
font-size: 0; |
||||
|
content: " "; |
||||
|
clear: both; |
||||
|
height: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.flex-box { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-space-between { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.flex-box-column-reverse { |
||||
|
display: -webkit-box; |
||||
|
display: -webkit-flex; |
||||
|
/* Safari */ |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
flex-direction: column-reverse; |
||||
|
} |
||||
|
|
||||
|
.font-size-21 { |
||||
|
font-size: 21px; |
||||
|
} |
||||
|
|
||||
|
.font-size-13 { |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
|
||||
|
.font-size-16 { |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.font-weight-bold { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.line-height-2em { |
||||
|
line-height: 2em; |
||||
|
} |
||||
|
|
||||
|
.text-center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.flex-1 { |
||||
|
-webkit-box-flex: 1; |
||||
|
-webkit-flex: 1; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.color-success { |
||||
|
color: #5CB959; |
||||
|
} |
||||
|
|
||||
|
.color-error { |
||||
|
color: #EA6356; |
||||
|
} |
||||
|
|
||||
|
.color-wait { |
||||
|
color: #FFBF00; |
||||
|
} |
||||
|
|
||||
|
.float-left { |
||||
|
float: left; |
||||
|
} |
||||
|
|
||||
|
.float-right { |
||||
|
float: right; |
||||
|
} |
||||
|
|
||||
|
// ul,ol,li{ |
||||
|
// list-style: none; |
||||
|
// } |
||||
|
//main-container全局样式 |
||||
|
.app-main { |
||||
|
min-height: 100% |
||||
|
} |
||||
|
|
||||
|
.app-container { |
||||
|
padding: 20px; |
||||
|
background-color: #fff; |
||||
|
.input-suffix { |
||||
|
line-height: 60px; |
||||
|
display: inline; |
||||
|
margin: 0 1em; |
||||
|
} |
||||
|
.filter-container { |
||||
|
line-height: 50px; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
//处理浏览器输入框记住账号密码后的背景色 |
||||
|
input:-webkit-autofill, |
||||
|
textarea:-webkit-autofill, |
||||
|
select:-webkit-autofill { |
||||
|
-webkit-text-fill-color: #333 !important; |
||||
|
-webkit-box-shadow: 0 0 0px 1000px transparent inset !important; |
||||
|
background-color: transparent; |
||||
|
background-image: none; |
||||
|
transition: background-color 50000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间 |
||||
|
} |
||||
|
|
||||
|
input { |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
// .container-box{ |
||||
|
// .query-box{ |
||||
|
// background: #fff; |
||||
|
// margin-bottom:20px; |
||||
|
// border-radius: 5px; |
||||
|
// .title{ |
||||
|
// padding: 20px; |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(52,123,229,1); |
||||
|
// border-bottom:1px solid #DEDEDE; |
||||
|
// } |
||||
|
// } |
||||
|
// .table-box{ |
||||
|
// background: #fff; |
||||
|
// border-radius: 5px; |
||||
|
// padding-bottom: 50px; |
||||
|
// .title-box{ |
||||
|
// .title{ |
||||
|
// padding: 21px 0 21px 21px; |
||||
|
// p{ |
||||
|
// font-size:18px; |
||||
|
// font-family:Microsoft YaHei; |
||||
|
// font-weight:400; |
||||
|
// color:rgba(68,138,231,1); |
||||
|
// border-left:3px solid #448AE7; |
||||
|
// padding-left: 8px; |
||||
|
// } |
||||
|
// } |
||||
|
// .btn{ |
||||
|
// padding: 11px 54px 11px 0; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// input:-webkit-autofill { |
||||
|
// -webkit-box-shadow: 0 0 0 1000px white inset !important; |
||||
|
// } |
||||
|
.header-banner { |
||||
|
position: relative; |
||||
|
height: 600px; |
||||
|
width: 100%; |
||||
|
padding-left: 20%; |
||||
|
padding-top: 100px; |
||||
|
margin-bottom: -84px; |
||||
|
.header-bg1 { |
||||
|
top: -84px; |
||||
|
left: 0; |
||||
|
// margin-left: -952px; |
||||
|
// right: 0; |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
z-index: -1; |
||||
|
} |
||||
|
.header-title-cn { |
||||
|
font-size: 64px; |
||||
|
line-height: 100px; |
||||
|
font-family: Source Han Sans CN; |
||||
|
font-weight: bold; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.header-title-en { |
||||
|
font-size: 24px; |
||||
|
line-height: 50px; |
||||
|
font-family: Microsoft YaHei UI; |
||||
|
font-weight: 400; |
||||
|
color: #fff; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
.header-download { |
||||
|
position: absolute; |
||||
|
bottom: 207px; |
||||
|
width: 74px; |
||||
|
height: 74px; |
||||
|
} |
||||
|
} |
@ -0,0 +1,232 @@ |
|||||
|
|
||||
|
@import './variables.scss'; |
||||
|
#app { |
||||
|
// 主体区域 |
||||
|
.main-container { |
||||
|
position: relative; |
||||
|
min-height: 100%; |
||||
|
width: calc(100% -180px); |
||||
|
background-color: #EFEFEF; |
||||
|
transition: margin-left .28s; |
||||
|
margin-left: 180px; |
||||
|
} |
||||
|
.main-content { |
||||
|
width: 1200px; |
||||
|
margin: 0 15px; |
||||
|
} |
||||
|
.header-content { |
||||
|
width: 100%; |
||||
|
padding: 0 20px; |
||||
|
background: rgba(255,255,255,.1); |
||||
|
} |
||||
|
// 顶边栏 |
||||
|
.header-sidebar-container { |
||||
|
width: 100%; |
||||
|
// height: 60px; |
||||
|
position: fixed; |
||||
|
// background-color: #DF3434; |
||||
|
color: #fff; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
font-size: 18px; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
.svg-icon { |
||||
|
color: #000; |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
display: inline-block; |
||||
|
border: none; |
||||
|
height: 84px; |
||||
|
vertical-align: bottom; |
||||
|
a,.el-submenu { |
||||
|
display: inline-block; |
||||
|
float: left; |
||||
|
} |
||||
|
.el-submenu__icon-arrow { |
||||
|
position: static; |
||||
|
vertical-align: middle; |
||||
|
margin-left: 8px; |
||||
|
margin-top: -3px; |
||||
|
} |
||||
|
.el-menu-item, .el-submenu__title { |
||||
|
i { |
||||
|
color: #ffffff; |
||||
|
} |
||||
|
height: 84px; |
||||
|
line-height: 84px; |
||||
|
font-size: 16px; |
||||
|
padding:0 25px; |
||||
|
&:hover { |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
border-bottom: 3px solid #fff; |
||||
|
// border-bottom:0; |
||||
|
background-color: $menuHover !important; |
||||
|
} |
||||
|
// menu hover |
||||
|
// .submenu-title-noDropdown, |
||||
|
// .el-submenu__title { |
||||
|
// i { |
||||
|
// color: #ffffff; |
||||
|
// } |
||||
|
// &:hover { |
||||
|
// background-color: $menuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
// .is-active>.el-submenu__title { |
||||
|
// color: $subMenuActiveText !important; |
||||
|
// } |
||||
|
|
||||
|
// & .nest-menu .el-submenu>.el-submenu__title, |
||||
|
// & .el-submenu .el-menu-item { |
||||
|
// min-width: $sideBarWidth !important; |
||||
|
// background-color: $subMenuBg !important; |
||||
|
|
||||
|
// &:hover { |
||||
|
// background-color: $subMenuHover !important; |
||||
|
// } |
||||
|
// } |
||||
|
} |
||||
|
// 侧边栏 |
||||
|
.sidebar-container { |
||||
|
transition: width 0.28s; |
||||
|
width: 180px !important; |
||||
|
height: calc(100% - 84px); |
||||
|
position: absolute; |
||||
|
font-size: 0px; |
||||
|
top: 84px; |
||||
|
bottom: 0; |
||||
|
left: 0; |
||||
|
z-index: 1001; |
||||
|
overflow: hidden; |
||||
|
//reset element-ui css |
||||
|
.horizontal-collapse-transition { |
||||
|
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; |
||||
|
} |
||||
|
.scrollbar-wrapper { |
||||
|
height: calc(100% + 15px); |
||||
|
.el-scrollbar__view { |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
.is-horizontal { |
||||
|
display: none; |
||||
|
} |
||||
|
a { |
||||
|
display: inline-block; |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.svg-icon { |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
.el-menu { |
||||
|
border: none; |
||||
|
height: 100%; |
||||
|
width: 100% !important; |
||||
|
// background-image: url("../../static/bg.png"); |
||||
|
background-repeat: no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
li { |
||||
|
&:hover { |
||||
|
color: #DF3434; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.is-active { |
||||
|
border-left: 3px solid #DF3434; |
||||
|
color: #DF3434; |
||||
|
border-bottom:0; |
||||
|
background-color: #FFE8E6 !important; |
||||
|
} |
||||
|
} |
||||
|
.openSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
} |
||||
|
.hideSidebar { |
||||
|
height: calc(100% - 84px); |
||||
|
.sidebar-container { |
||||
|
width: 60px !important; |
||||
|
} |
||||
|
.main-container { |
||||
|
margin-left: 60px; |
||||
|
} |
||||
|
.submenu-title-noDropdown { |
||||
|
padding-left: 10px !important; |
||||
|
position: relative; |
||||
|
.el-tooltip { |
||||
|
padding: 0 10px !important; |
||||
|
} |
||||
|
} |
||||
|
.el-submenu { |
||||
|
overflow: hidden; |
||||
|
&>.el-submenu__title { |
||||
|
padding-left: 10px !important; |
||||
|
.el-submenu__icon-arrow { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--collapse { |
||||
|
.el-submenu { |
||||
|
&>.el-submenu__title { |
||||
|
&>span { |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
overflow: hidden; |
||||
|
visibility: hidden; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
//适配移动端 |
||||
|
.mobile { |
||||
|
.main-container { |
||||
|
margin-left: 0px; |
||||
|
} |
||||
|
.sidebar-container { |
||||
|
transition: transform .28s; |
||||
|
width: 180px !important; |
||||
|
} |
||||
|
&.hideSidebar { |
||||
|
.sidebar-container { |
||||
|
transition-duration: 0.3s; |
||||
|
transform: translate3d(-180px, 0, 0); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.withoutAnimation { |
||||
|
.main-container, |
||||
|
.sidebar-container { |
||||
|
transition: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.el-menu--horizontal { |
||||
|
// width: 100% !important; |
||||
|
// left: 0 !important; |
||||
|
|
||||
|
background-color: #F7F7F7; |
||||
|
.el-menu--popup { |
||||
|
min-width: 120px; |
||||
|
.is-active { |
||||
|
// border-bottom: 2px solid #fff; |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
.el-menu-item { |
||||
|
color: #000 !important; |
||||
|
&:hover { |
||||
|
background-color: rgba(255,232,230,1) !important; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,27 @@ |
|||||
|
//sidebar |
||||
|
$menuText:#fff; |
||||
|
$menuText2:#212121; |
||||
|
$menuActiveText:#fff; |
||||
|
$menuActiveText2:rgb(217, 52, 223); |
||||
|
$subMenuActiveText:#4b4bce; //https://github.com/ElemeFE/element/issues/12951 |
||||
|
|
||||
|
$menuBg:rgba(0,0,0,0); |
||||
|
$menuHover: rgba(255,255,255,0.3); |
||||
|
|
||||
|
$subMenuBg:#000; |
||||
|
$subMenuHover:#ffffff33; |
||||
|
|
||||
|
$sideBarWidth: 200px; |
||||
|
|
||||
|
// the :export directive is the magic sauce for webpack |
||||
|
// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass |
||||
|
:export { |
||||
|
menuText: $menuText; |
||||
|
menuActiveText: $menuActiveText; |
||||
|
subMenuActiveText: $subMenuActiveText; |
||||
|
menuBg: $menuBg; |
||||
|
menuHover: $menuHover; |
||||
|
subMenuBg: $subMenuBg; |
||||
|
subMenuHover: $subMenuHover; |
||||
|
sideBarWidth: $sideBarWidth; |
||||
|
} |
@ -0,0 +1,5 @@ |
|||||
|
<template> |
||||
|
<div id="app"> |
||||
|
<router-view/> |
||||
|
</div> |
||||
|
</template> |
@ -0,0 +1,82 @@ |
|||||
|
import request from '@/utils/request'; |
||||
|
// import requestLoading from '@/utils/requestLoading';
|
||||
|
//登录接口
|
||||
|
export function login(param) { |
||||
|
return request({ |
||||
|
url: '/api-login/login/login', |
||||
|
method: 'post', |
||||
|
data:param |
||||
|
}); |
||||
|
} |
||||
|
//登出接口
|
||||
|
export function logout() { |
||||
|
return request({ |
||||
|
url: '/regback/user/logout', |
||||
|
method: 'post', |
||||
|
tokenParams:true |
||||
|
}); |
||||
|
} |
||||
|
//普通账户修改密码
|
||||
|
export function updatePass(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/updatePassword', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//注册账户
|
||||
|
export function registerUser(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/registerUser', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//获取短信验证码
|
||||
|
export function sendMessage(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/common/send', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//忘记密码-输入账号换取手机号
|
||||
|
export function userToTelphone(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/telPhone', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//忘记密码-重设密码
|
||||
|
export function setUpPassword(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/setUpPassword', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//验证短信验证码
|
||||
|
export function smsVerification(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/common/smsVerification', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//非法字符列表
|
||||
|
export function getKeysList(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/key/keys', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//获取待办事项
|
||||
|
export function getAnnCount(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/ann/getAnnCount', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
@ -0,0 +1,53 @@ |
|||||
|
import request from '@/utils/request'; |
||||
|
|
||||
|
//获取标识列表
|
||||
|
export function getMarkList(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snmses', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//添加标识
|
||||
|
export function addMark(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snms', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//修改标识
|
||||
|
export function editMark(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snms', |
||||
|
method: 'put', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//启停
|
||||
|
export function openOrCloseMark(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snms', |
||||
|
method: 'delete', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//产品编号是否存在
|
||||
|
export function checkMark(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snmsDetail', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//标识解析
|
||||
|
export function checkNnmsLike(params) { |
||||
|
return request({ |
||||
|
url: '/api-idis/identityv2/snmsLike2', |
||||
|
// isLogin:true,
|
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
@ -0,0 +1,91 @@ |
|||||
|
import request from '@/utils/request'; |
||||
|
//获取用户列表
|
||||
|
export function getUserList(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/users', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//根据id获取用户详情
|
||||
|
export function getUserDetail(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/userDetail', |
||||
|
headers: {'Content-Type': 'application/json'}, |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//用户启用停用状态
|
||||
|
export function editUserStatus(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/status', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//获取角色类型
|
||||
|
export function getRoleType(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/types', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//添加用户
|
||||
|
export function addUser(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/user', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//添加用户时校验用户是否存在
|
||||
|
export function existsUserName(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/existsUserName', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//删除用户
|
||||
|
export function deleteUser(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/user', |
||||
|
method: 'DELETE', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//更新用户信息
|
||||
|
export function updateUserInfo(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/user', |
||||
|
method: 'put', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
//管理员账户重置密码
|
||||
|
export function resetPass(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/restPassword', |
||||
|
method: 'post', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
//获取当前用户类别与角色
|
||||
|
export function getAddRole(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/getAddRole', |
||||
|
method: 'get', |
||||
|
params |
||||
|
}); |
||||
|
} |
||||
|
//更改个人中心信息
|
||||
|
export function editPersonalCenter(params) { |
||||
|
return request({ |
||||
|
url: '/api-login/user/personalCenter', |
||||
|
method: 'put', |
||||
|
data:params |
||||
|
}); |
||||
|
} |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 648 KiB |
After Width: | Height: | Size: 142 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 239 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
@ -0,0 +1,120 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class='input_span'> |
||||
|
<!-- <label style='margin-left:40px;'>强度:</label> --> |
||||
|
<span id="one_ps"></span> |
||||
|
<span id="two_ps"></span> |
||||
|
<span id="three_ps"></span> |
||||
|
</div> |
||||
|
<div id="font_ps"> |
||||
|
<span>弱</span> |
||||
|
<span>中</span> |
||||
|
<span>强</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:'checkPasswordStrong', |
||||
|
data(){ |
||||
|
return { |
||||
|
msgText:'', |
||||
|
pwd:'' |
||||
|
} |
||||
|
}, |
||||
|
props:{ |
||||
|
sValue:{ |
||||
|
type: String, |
||||
|
} |
||||
|
}, |
||||
|
watch:{ |
||||
|
sValue(newValue) { |
||||
|
this.msgText = this.checkStrong(newValue); |
||||
|
if(this.msgText > 1 || this.msgText == 1) { |
||||
|
document.getElementById("one_ps").style.background = "red" |
||||
|
} else { |
||||
|
document.getElementById("one_ps").style.background = "#eee" |
||||
|
} |
||||
|
if(this.msgText > 2 || this.msgText == 2) { |
||||
|
document.getElementById("two_ps").style.background = "#ff9268" |
||||
|
} else { |
||||
|
document.getElementById("two_ps").style.background = "#eee" |
||||
|
} |
||||
|
if(this.msgText == 4) { |
||||
|
document.getElementById("three_ps").style.background = "#00D1B2" |
||||
|
} else { |
||||
|
document.getElementById("three_ps").style.background = "#eee" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
checkStrong(value) { |
||||
|
let modes = 0; |
||||
|
//正则表达式验证符合要求的 |
||||
|
if(value.length < 1) return modes; |
||||
|
if(/\d/.test(value)) modes++; //数字 |
||||
|
if(/[a-z]/.test(value)) modes++; //小写 |
||||
|
if(/[A-Z]/.test(value)) modes++; //大写 |
||||
|
if(/\W/.test(value)) modes++; //特殊字符 |
||||
|
|
||||
|
//逻辑处理 |
||||
|
switch(modes) { |
||||
|
case 1: |
||||
|
return 1; |
||||
|
case 2: |
||||
|
return 2; |
||||
|
case 3: |
||||
|
case 4: |
||||
|
return value.length < 10 ? 3 : 4 |
||||
|
} |
||||
|
return modes; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.input_span,#font_ps { |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
.input_span span { |
||||
|
display: inline-block; |
||||
|
width: calc(33% - 3px); |
||||
|
height: 10px; |
||||
|
background: #eee; |
||||
|
line-height: 20px; |
||||
|
} |
||||
|
|
||||
|
#one_ps { |
||||
|
border-top-left-radius: 5px; |
||||
|
border-bottom-left-radius: 5px; |
||||
|
border-right: 0px solid; |
||||
|
/* margin-left: 20px; */ |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
|
||||
|
#two_ps { |
||||
|
border-left: 0px solid; |
||||
|
border-right: 0px solid; |
||||
|
/* margin-left: -5px; */ |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
|
||||
|
#three_ps { |
||||
|
border-top-right-radius: 5px; |
||||
|
border-bottom-right-radius: 5px; |
||||
|
border-left: 0px solid; |
||||
|
/* margin-left: -5px; */ |
||||
|
} |
||||
|
#font_ps span:nth-child(1){ |
||||
|
color:red; |
||||
|
margin-left: 14%; |
||||
|
} |
||||
|
#font_ps span:nth-child(2){ |
||||
|
color:orange; |
||||
|
margin: 0 28%; |
||||
|
} |
||||
|
#font_ps span:nth-child(3){ |
||||
|
color:#00D1B2; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,37 @@ |
|||||
|
import 'babel-polyfill' //兼容IE9
|
||||
|
import Vue from 'vue' |
||||
|
import ElementUI from 'element-ui' |
||||
|
import 'element-ui/lib/theme-chalk/index.css' |
||||
|
// import '@/styles/index.scss' // global css
|
||||
|
import App from './App.vue' |
||||
|
import router from './router' |
||||
|
import store from './store' |
||||
|
import * as echarts from 'echarts'; |
||||
|
Vue.prototype.$echarts = echarts |
||||
|
Vue.config.productionTip = false |
||||
|
Vue.use(ElementUI) |
||||
|
|
||||
|
var template = '001' |
||||
|
Vue.prototype.$template = template |
||||
|
require("../public/template/" + template + '/styles/index.scss?v=1.0') |
||||
|
|
||||
|
//混入动态获取css与img的方法
|
||||
|
Vue.mixin({ |
||||
|
methods: { |
||||
|
_getCss: function (filePath, fileName) { |
||||
|
return require("../public/template/" + template + '/' + filePath + '/' + fileName + '/index.scss?v=1.0') |
||||
|
}, |
||||
|
_getCss2: function (filePath, fileName) { |
||||
|
return require("../public/template/" + template + '/' + filePath + '/' + fileName + '?v=1.0') |
||||
|
}, |
||||
|
_getImage: function(filePath, fileName) { |
||||
|
return require("../public/template/" + template + '/img/' + filePath + '/' + fileName) |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
new Vue({ |
||||
|
router, |
||||
|
store, |
||||
|
render: h => h(App) |
||||
|
}).$mount('#app') |
@ -0,0 +1,188 @@ |
|||||
|
import Vue from 'vue' |
||||
|
import VueRouter from 'vue-router' |
||||
|
import Layout from '../views/layout/Layout.vue'; |
||||
|
Vue.use(VueRouter) |
||||
|
|
||||
|
const routes = [ |
||||
|
{ |
||||
|
path: '', |
||||
|
component: Layout, |
||||
|
name: '', |
||||
|
children: [ |
||||
|
{ |
||||
|
path: '', |
||||
|
name: 'home', |
||||
|
hidden: true, |
||||
|
component: () => import ('../views/home/index.vue'), |
||||
|
meta: { title: '首页', icon: 'register', noCache: true }, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'union', |
||||
|
name: 'union', |
||||
|
meta: { title: '关于联盟', icon: 'register', noCache: true }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'introduce', |
||||
|
name: 'introduceUnion', |
||||
|
meta: {title: '联盟介绍', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'rules', |
||||
|
name: 'rulesUnion', |
||||
|
meta: {title: '联盟章程', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'frame', |
||||
|
name: 'frameUnion', |
||||
|
meta: {title: '组织架构', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'member', |
||||
|
name: 'memberUnion', |
||||
|
meta: {title: '联盟成员', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'us', |
||||
|
name: 'usUnion', |
||||
|
meta: {title: '联系我们', icon: 'register', noCache: true}, |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
path: 'meeting', |
||||
|
name: 'meeting', |
||||
|
meta: { title: '互联网大会', icon: 'register', noCache: true }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'introduce', |
||||
|
name: 'introduceMeeting', |
||||
|
meta: {title: '大会介绍', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'schedule', |
||||
|
name: 'scheduleMeeting', |
||||
|
meta: {title: '会议日程', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'news', |
||||
|
name: 'newsMeeting', |
||||
|
meta: {title: '大会新闻', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'replay', |
||||
|
name: 'replayMeeting', |
||||
|
meta: {title: '大会回看', icon: 'register', noCache: true}, |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
path: 'forum', |
||||
|
name: 'forum', |
||||
|
meta: { title: '转型升级论坛', icon: 'register', noCache: true }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'introduce', |
||||
|
name: 'introduceForum', |
||||
|
meta: {title: '论坛介绍', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'schedule', |
||||
|
name: 'scheduleForum', |
||||
|
meta: {title: '论坛日程', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'news', |
||||
|
name: 'newsForum', |
||||
|
meta: {title: '论坛新闻', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'replay', |
||||
|
name: 'replayForum', |
||||
|
meta: {title: '论坛回顾', icon: 'register', noCache: true}, |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
path: 'harvest', |
||||
|
name: 'harvest', |
||||
|
meta: { title: '联盟成果', icon: 'register', noCache: true }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'whitepaper', |
||||
|
name: 'whitepaper', |
||||
|
meta: {title: '白皮书', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'benchmark', |
||||
|
name: 'benchmark', |
||||
|
meta: {title: '技术标准', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'electronicMeetings ', |
||||
|
name: 'electronicMeetings ', |
||||
|
meta: {title: '电子会刊', icon: 'register', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'example', |
||||
|
name: 'example', |
||||
|
meta: {title: '应用案例', icon: 'register', noCache: true}, |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
path: 'public', |
||||
|
name: 'public', |
||||
|
meta: { title: '公共服务', icon: 'register', noCache: true }, |
||||
|
children: [ |
||||
|
{ |
||||
|
path: 'platform', |
||||
|
name: 'platform', |
||||
|
meta: {title: '平台', icon: 'register', noCache: true}, |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{path: '/login', name: 'login', component: () => import('@/views/login/index.vue'), hidden: true}, |
||||
|
{ |
||||
|
path: 'editPassword', |
||||
|
component: () => import('@/views/login/editPassword.vue'), |
||||
|
name: 'editPassword', |
||||
|
hidden: true, |
||||
|
meta: {title: '修改密码', icon: 'eye', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'userInfo', |
||||
|
component: () => import('@/views/login/userInfo.vue'), |
||||
|
name: 'userInfo', |
||||
|
hidden: true, |
||||
|
meta: {title: '个人中心', icon: 'eye', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'register', |
||||
|
component: () => import('@/views/login/register.vue'), |
||||
|
name: 'register', |
||||
|
hidden: true, |
||||
|
meta: {title: '注册', icon: 'eye', noCache: true}, |
||||
|
}, |
||||
|
{ |
||||
|
path: 'retrievePassword', |
||||
|
component: () => import('@/views/login/retrievePassword.vue'), |
||||
|
name: 'retrievePassword', |
||||
|
hidden: true, |
||||
|
meta: {title: '找回密码', icon: 'eye', noCache: true}, |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
path: '/404', |
||||
|
component: () => |
||||
|
import ('../views/404.vue'), |
||||
|
hidden: true |
||||
|
}, |
||||
|
{ path: '*', redirect: '/404', hidden: true } |
||||
|
] |
||||
|
|
||||
|
const router = new VueRouter({ |
||||
|
routes |
||||
|
}) |
||||
|
|
||||
|
export default router |
@ -0,0 +1,30 @@ |
|||||
|
import Vue from 'vue' |
||||
|
import Vuex from 'vuex' |
||||
|
|
||||
|
Vue.use(Vuex) |
||||
|
import { setTitle,getTitle } from '@/utils/auth' |
||||
|
export default new Vuex.Store({ |
||||
|
state: { |
||||
|
title:getTitle() || '北京顺鑫控股集团有限公司二级节点' |
||||
|
}, |
||||
|
mutations: { |
||||
|
SET_TITLE: (state, token) => { |
||||
|
state.token = token; |
||||
|
}, |
||||
|
}, |
||||
|
actions: { |
||||
|
// 标题变化
|
||||
|
changeTitle({ commit }, title) { |
||||
|
return new Promise(resolve => { |
||||
|
setTitle(title) |
||||
|
commit('SET_TITLE', title); |
||||
|
resolve(); |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
modules: { |
||||
|
}, |
||||
|
getters: { |
||||
|
title: state => state.title |
||||
|
} |
||||
|
}) |
@ -0,0 +1,14 @@ |
|||||
|
import Cookies from 'js-cookie' |
||||
|
|
||||
|
const title = 'COCKPIT-TITLE'; |
||||
|
|
||||
|
export function getTitle() { |
||||
|
return Cookies.get(title) |
||||
|
} |
||||
|
export function setTitle(token) { |
||||
|
return Cookies.set(title, token) |
||||
|
} |
||||
|
export function removeTitle() { |
||||
|
return Cookies.remove(title) |
||||
|
} |
||||
|
|
@ -0,0 +1,112 @@ |
|||||
|
import axios from 'axios' |
||||
|
import { Message, MessageBox } from 'element-ui' |
||||
|
import store from '../store/index' |
||||
|
import qs from 'qs' |
||||
|
import router from '@/router' |
||||
|
axios.defaults.withCredentials = true; |
||||
|
var isToken = true |
||||
|
// 创建axios实例
|
||||
|
const service = axios.create({ |
||||
|
baseURL: config.API_URL, // api 的 base_url
|
||||
|
// baseURL: "http://192.168.1.207:8085", // api 的 base_url
|
||||
|
//timeout: 5000 // 请求超时时间
|
||||
|
// headers: {
|
||||
|
// crossDomain: true,
|
||||
|
// "Content-Type": 'application/json'
|
||||
|
// }
|
||||
|
}) |
||||
|
|
||||
|
// request拦截器
|
||||
|
service.interceptors.request.use((config) => { |
||||
|
// let isKey = false
|
||||
|
// if (store.getters.token && !config.isLogin) {
|
||||
|
// config.headers['token'] = getToken()
|
||||
|
// }
|
||||
|
|
||||
|
if (config.method == 'post' || config.method == 'put') { |
||||
|
// let sData = ''
|
||||
|
|
||||
|
// for (const i in config.data) {
|
||||
|
// const item = config.data[i];
|
||||
|
// sData += item + ","
|
||||
|
// }
|
||||
|
// store.getters.keys.forEach(item => {
|
||||
|
// if (sData.indexOf(item) != -1) {
|
||||
|
// isKey = true
|
||||
|
// }
|
||||
|
// });
|
||||
|
// config.data = qs.stringify(config.data)
|
||||
|
// qs.stringify(config.params, { indices: false })
|
||||
|
} else if (config.method == 'get') { |
||||
|
config.paramsSerializer = params => { |
||||
|
return qs.stringify(params, { indices: false }) |
||||
|
} |
||||
|
} |
||||
|
// if (isKey) {
|
||||
|
// Message({
|
||||
|
// message: '输入内容包含敏感字符。',
|
||||
|
// type: 'error',
|
||||
|
// duration: 5 * 1000
|
||||
|
// })
|
||||
|
// Promise.reject('输入内容包含敏感字符。')
|
||||
|
// } else {
|
||||
|
return config |
||||
|
// }
|
||||
|
|
||||
|
}, (error) => { |
||||
|
// Do something with request error
|
||||
|
console.log(error) // for debug
|
||||
|
Promise.reject(error) |
||||
|
}) |
||||
|
|
||||
|
// respone拦截器
|
||||
|
service.interceptors.response.use( |
||||
|
(response) => { |
||||
|
/** |
||||
|
* code为非20000是抛错 可结合自己业务进行修改 |
||||
|
*/ |
||||
|
const res = response.data |
||||
|
// const res = JSON.parse(response.data)
|
||||
|
if (res.code !== 200) { |
||||
|
|
||||
|
// 300:失效的token;
|
||||
|
if (res.code === 511) { |
||||
|
if (isToken) { |
||||
|
isToken = false |
||||
|
MessageBox.alert('你已被登出,请重新登录', '确定登出', { |
||||
|
confirmButtonText: '重新登录', |
||||
|
type: 'warning', |
||||
|
callback: () => { |
||||
|
store.dispatch('FedLogOut').then(() => { |
||||
|
isToken = true |
||||
|
router.replace({ name: 'login' }) |
||||
|
// location.reload();
|
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
} else { |
||||
|
Message({ |
||||
|
message: res.msg, |
||||
|
type: 'error', |
||||
|
duration: 5 * 1000 |
||||
|
}) |
||||
|
} |
||||
|
return Promise.reject(res) |
||||
|
} else { |
||||
|
return response.data |
||||
|
} |
||||
|
}, |
||||
|
(error) => { |
||||
|
console.log('err' + error)// for debug
|
||||
|
const res = error.response.data; |
||||
|
Message({ |
||||
|
message: res.msg, |
||||
|
type: 'error', |
||||
|
duration: 3 * 1000 |
||||
|
}) |
||||
|
return Promise.reject(error) |
||||
|
} |
||||
|
) |
||||
|
|
||||
|
export default service |
@ -0,0 +1,48 @@ |
|||||
|
/** |
||||
|
* Created by qinshunyu |
||||
|
*/ |
||||
|
|
||||
|
/* 合法身份证ID*/ |
||||
|
export function validateIDCard(textval) { |
||||
|
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; |
||||
|
return reg.test(textval) |
||||
|
} |
||||
|
/* 校验邮箱*/ |
||||
|
export function validateEmail(str) { |
||||
|
var checkEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; |
||||
|
return checkEmail.test(str) |
||||
|
} |
||||
|
/* 检验手机号ID*/ |
||||
|
export function validatePhone(textval) { |
||||
|
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/ |
||||
|
return reg.test(textval) |
||||
|
} |
||||
|
|
||||
|
/* 合法uri*/ |
||||
|
export function validateURL(textval) { |
||||
|
const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ |
||||
|
return urlregex.test(textval) |
||||
|
} |
||||
|
|
||||
|
/* 小写字母*/ |
||||
|
export function validateLowerCase(str) { |
||||
|
const reg = /^[a-z]+$/ |
||||
|
return reg.test(str) |
||||
|
} |
||||
|
|
||||
|
/* 大写字母*/ |
||||
|
export function validateUpperCase(str) { |
||||
|
const reg = /^[A-Z]+$/ |
||||
|
return reg.test(str) |
||||
|
} |
||||
|
|
||||
|
/* 大小写字母*/ |
||||
|
export function validatAlphabets(str) { |
||||
|
const reg = /^[A-Za-z]+$/ |
||||
|
return reg.test(str) |
||||
|
} |
||||
|
/*校验中文*/ |
||||
|
export function validateChinese(str) { |
||||
|
const reg = /[\u4E00-\u9FA5]/ |
||||
|
return reg.test(str) |
||||
|
} |
@ -0,0 +1,229 @@ |
|||||
|
<template> |
||||
|
<div class="wscn-http404-container"> |
||||
|
<div class="wscn-http404"> |
||||
|
<div class="pic-404"> |
||||
|
<img class="pic-404__parent" src="@/assets/404_images/building.png"> |
||||
|
<img class="pic-404__child left" src="@/assets/404_images/404_cloud.png"> |
||||
|
<img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png"> |
||||
|
<img class="pic-404__child right" src="@/assets/404_images/404_cloud.png"> |
||||
|
</div> |
||||
|
<div class="bullshit"> |
||||
|
<div class="bullshit__oops">OOPS!</div> |
||||
|
<div class="bullshit__info">版权所有 |
||||
|
<a class="link-type" href="https://www.000860.com/sxkg/index.aspx" target="_blank">顺鑫农业</a> |
||||
|
</div> |
||||
|
<div class="bullshit__headline">{{ message }}</div> |
||||
|
<!-- <div class="bullshit__info">请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告</div> --> |
||||
|
<br> |
||||
|
<a href="" class="bullshit__return-home">返回首页</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
export default { |
||||
|
name: 'Page404', |
||||
|
computed: { |
||||
|
message() { |
||||
|
return '网管说这个页面你不能进......' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.wscn-http404-container{ |
||||
|
transform: translate(-50%,-50%); |
||||
|
position: absolute; |
||||
|
top: 40%; |
||||
|
left: 50%; |
||||
|
} |
||||
|
.wscn-http404 { |
||||
|
position: relative; |
||||
|
width: 1200px; |
||||
|
padding: 0 50px; |
||||
|
overflow: hidden; |
||||
|
.pic-404 { |
||||
|
position: relative; |
||||
|
float: left; |
||||
|
width: 600px; |
||||
|
overflow: hidden; |
||||
|
&__parent { |
||||
|
width: 100%; |
||||
|
} |
||||
|
&__child { |
||||
|
position: absolute; |
||||
|
&.left { |
||||
|
width: 80px; |
||||
|
top: 17px; |
||||
|
left: 220px; |
||||
|
opacity: 0; |
||||
|
animation-name: cloudLeft; |
||||
|
animation-duration: 2s; |
||||
|
animation-timing-function: linear; |
||||
|
animation-fill-mode: forwards; |
||||
|
animation-delay: 1s; |
||||
|
} |
||||
|
&.mid { |
||||
|
width: 46px; |
||||
|
top: 10px; |
||||
|
left: 420px; |
||||
|
opacity: 0; |
||||
|
animation-name: cloudMid; |
||||
|
animation-duration: 2s; |
||||
|
animation-timing-function: linear; |
||||
|
animation-fill-mode: forwards; |
||||
|
animation-delay: 1.2s; |
||||
|
} |
||||
|
&.right { |
||||
|
width: 62px; |
||||
|
top: 100px; |
||||
|
left: 500px; |
||||
|
opacity: 0; |
||||
|
animation-name: cloudRight; |
||||
|
animation-duration: 2s; |
||||
|
animation-timing-function: linear; |
||||
|
animation-fill-mode: forwards; |
||||
|
animation-delay: 1s; |
||||
|
} |
||||
|
@keyframes cloudLeft { |
||||
|
0% { |
||||
|
top: 17px; |
||||
|
left: 220px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
20% { |
||||
|
top: 33px; |
||||
|
left: 188px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
80% { |
||||
|
top: 81px; |
||||
|
left: 92px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
100% { |
||||
|
top: 97px; |
||||
|
left: 60px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
@keyframes cloudMid { |
||||
|
0% { |
||||
|
top: 10px; |
||||
|
left: 420px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
20% { |
||||
|
top: 40px; |
||||
|
left: 360px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
70% { |
||||
|
top: 130px; |
||||
|
left: 180px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
100% { |
||||
|
top: 160px; |
||||
|
left: 120px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
@keyframes cloudRight { |
||||
|
0% { |
||||
|
top: 100px; |
||||
|
left: 500px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
20% { |
||||
|
top: 120px; |
||||
|
left: 460px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
80% { |
||||
|
top: 180px; |
||||
|
left: 340px; |
||||
|
opacity: 1; |
||||
|
} |
||||
|
100% { |
||||
|
top: 200px; |
||||
|
left: 300px; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.bullshit { |
||||
|
position: relative; |
||||
|
float: left; |
||||
|
width: 300px; |
||||
|
padding: 30px 0; |
||||
|
overflow: hidden; |
||||
|
&__oops { |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
line-height: 40px; |
||||
|
color: #1482f0; |
||||
|
opacity: 0; |
||||
|
margin-bottom: 20px; |
||||
|
animation-name: slideUp; |
||||
|
animation-duration: 0.5s; |
||||
|
animation-fill-mode: forwards; |
||||
|
} |
||||
|
&__headline { |
||||
|
font-size: 20px; |
||||
|
line-height: 24px; |
||||
|
color: #222; |
||||
|
font-weight: bold; |
||||
|
opacity: 0; |
||||
|
margin-bottom: 10px; |
||||
|
animation-name: slideUp; |
||||
|
animation-duration: 0.5s; |
||||
|
animation-delay: 0.1s; |
||||
|
animation-fill-mode: forwards; |
||||
|
} |
||||
|
&__info { |
||||
|
font-size: 13px; |
||||
|
line-height: 21px; |
||||
|
color: grey; |
||||
|
opacity: 0; |
||||
|
margin-bottom: 30px; |
||||
|
animation-name: slideUp; |
||||
|
animation-duration: 0.5s; |
||||
|
animation-delay: 0.2s; |
||||
|
animation-fill-mode: forwards; |
||||
|
} |
||||
|
&__return-home { |
||||
|
display: block; |
||||
|
float: left; |
||||
|
width: 110px; |
||||
|
height: 36px; |
||||
|
background: #1482f0; |
||||
|
border-radius: 100px; |
||||
|
text-align: center; |
||||
|
color: #ffffff; |
||||
|
opacity: 0; |
||||
|
font-size: 14px; |
||||
|
line-height: 36px; |
||||
|
cursor: pointer; |
||||
|
animation-name: slideUp; |
||||
|
animation-duration: 0.5s; |
||||
|
animation-delay: 0.3s; |
||||
|
animation-fill-mode: forwards; |
||||
|
} |
||||
|
@keyframes slideUp { |
||||
|
0% { |
||||
|
transform: translateY(60px); |
||||
|
opacity: 0; |
||||
|
} |
||||
|
100% { |
||||
|
transform: translateY(0); |
||||
|
opacity: 1; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
After Width: | Height: | Size: 7.4 KiB |
@ -0,0 +1,168 @@ |
|||||
|
<template> |
||||
|
<div class="guide-slider" id="guideSlider"> |
||||
|
<ul class="guide-list"> |
||||
|
<li class="guide on"> |
||||
|
<div class="display"> |
||||
|
<div class="icon icon1 animated flipInY"></div> |
||||
|
<div class="title">工业互联网公共</div> |
||||
|
<div class="title">服务平台</div> |
||||
|
<!-- <div class="introduction">提升宝贝搜索排名,玩转免费流量</div> --> |
||||
|
</div> |
||||
|
<div class="behind"> |
||||
|
<div class="function-list-wrap"> |
||||
|
<ul class="function-list"> |
||||
|
<li class="function corner corner-hot"> |
||||
|
<a href>公众服务</a> |
||||
|
</li> |
||||
|
<li class="function corner"> |
||||
|
<a href>企业服务</a> |
||||
|
</li> |
||||
|
<li class="function corner"> |
||||
|
<a href>标识管理</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>政府监管服务</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</li> |
||||
|
<li class="guide"> |
||||
|
<div class="display"> |
||||
|
<div class="icon icon2 animated flipInY"></div> |
||||
|
<div class="title">区域(园区)工业</div> |
||||
|
<div class="title">互联网服务平台</div> |
||||
|
<!-- <div class="introduction">抓住每一个流量,千方百计促使成交</div> --> |
||||
|
</div> |
||||
|
<div class="behind"> |
||||
|
<div class="function-list-wrap"> |
||||
|
<ul class="function-list"> |
||||
|
<li class="function"> |
||||
|
<a href>园区服务</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>园区标识管理</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>供应链管理</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</li> |
||||
|
<li class="guide"> |
||||
|
<div class="display"> |
||||
|
<div class="icon icon3 animated flipInY"></div> |
||||
|
<div class="title">食品工业互联网</div> |
||||
|
<div class="title">企业服务平台</div> |
||||
|
<!-- <div class="introduction">优质模板,增加客户停留时间</div> --> |
||||
|
</div> |
||||
|
<div class="behind"> |
||||
|
<div class="function-list-wrap"> |
||||
|
<ul class="function-list"> |
||||
|
<li class="function"> |
||||
|
<a href>智慧种养殖</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>生产信息化</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>标识管理</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>冷链监管</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>区块链溯源</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</li> |
||||
|
<li class="guide"> |
||||
|
<div class="display"> |
||||
|
<div class="icon icon4 animated flipInY"></div> |
||||
|
<div class="title">工业互联网标识解析</div> |
||||
|
<div class="title">数据处理平台</div> |
||||
|
<!-- <div class="introduction">恋爱式关怀,提升客户购物体验</div> --> |
||||
|
</div> |
||||
|
<div class="behind"> |
||||
|
<div class="function-list-wrap"> |
||||
|
<ul class="function-list"> |
||||
|
<li class="function"> |
||||
|
<a href>数据存储</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>数据服务</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>数据治理</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>数据计算</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>数据清洗</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</li> |
||||
|
<!-- <li class="guide"> |
||||
|
<div class="display"> |
||||
|
<div class="icon icon5 animated flipInY"></div> |
||||
|
<div class="title">提升效率</div> |
||||
|
<div class="introduction">用全能掌柜,让您轻轻松松做掌柜</div> |
||||
|
</div> |
||||
|
<div class="behind"> |
||||
|
<div class="function-list-wrap"> |
||||
|
<ul class="function-list"> |
||||
|
<li class="function"> |
||||
|
<a href>自动上下架</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>橱窗推荐</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>手机详情</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>官方流量</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>群发短信</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>指定发送</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>二次营销</a> |
||||
|
</li> |
||||
|
<li class="function"> |
||||
|
<a href>跨店营销</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</div> |
||||
|
</li>--> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import $ from "jquery"; |
||||
|
import "./jQueryCssSfq.css"; |
||||
|
export default { |
||||
|
name: "jquerySfq", |
||||
|
mounted() { |
||||
|
var $guideSlider = $("#guideSlider").eq(0); |
||||
|
|
||||
|
$guideSlider.find(".guide-list .guide").hover(function() { |
||||
|
$(this) |
||||
|
.addClass("on") |
||||
|
.siblings() |
||||
|
.removeClass("on"); |
||||
|
}); |
||||
|
} |
||||
|
}; |
||||
|
</script> |
@ -0,0 +1,210 @@ |
|||||
|
/* * { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
box-sizing: border-box |
||||
|
} |
||||
|
|
||||
|
ul, |
||||
|
ol { |
||||
|
list-style: none |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
font-family: microsoft yahei; |
||||
|
background: #f0f0f0; |
||||
|
font-size: 14px |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
text-decoration: none |
||||
|
} */ |
||||
|
|
||||
|
.guide-slider { |
||||
|
width: 1050px; |
||||
|
margin: 5% auto 2%; |
||||
|
background: #fff; |
||||
|
height: 260px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide { |
||||
|
width: 200px; |
||||
|
height: 260px; |
||||
|
float: left; |
||||
|
-webkit-transition: all ease-in .3s; |
||||
|
transition: all ease-in .3s; |
||||
|
position: relative; |
||||
|
overflow: hidden |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display { |
||||
|
border-right: 1px solid #d5d5d5; |
||||
|
width: 200px; |
||||
|
height: 260px; |
||||
|
text-align: center; |
||||
|
float: left; |
||||
|
position: relative; |
||||
|
z-index: 2; |
||||
|
background: #fff; |
||||
|
-webkit-transition: all ease-in .3s; |
||||
|
transition: all ease-in .3s |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon { |
||||
|
display: inline-block; |
||||
|
width: 74px; |
||||
|
height: 74px; |
||||
|
margin-top: 42px; |
||||
|
border: 1px solid #DDDDDD; |
||||
|
border-radius: 50%; |
||||
|
background-color: #fff; |
||||
|
background-image: url('../../../assets/product/product-sprite.png') |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon.icon1 { |
||||
|
background-position: -82px -283px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon.icon2 { |
||||
|
background-position: -180px -283px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon.icon3 { |
||||
|
background-position: -285px -283px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon.icon4 { |
||||
|
background-position: -380px -283px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .icon.icon5 { |
||||
|
background-position: -518px 0 |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .title { |
||||
|
font-size: 16px; |
||||
|
color: #666; |
||||
|
height: 40px; |
||||
|
line-height: 40px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display .introduction { |
||||
|
border-top: 1px solid #ddd; |
||||
|
width: 150px; |
||||
|
margin: 0 auto; |
||||
|
font-size: 12px; |
||||
|
color: #999; |
||||
|
text-align: left; |
||||
|
line-height: 20px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .display::after { |
||||
|
content: ""; |
||||
|
display: block; |
||||
|
position: absolute; |
||||
|
border-style: solid; |
||||
|
border-color: transparent #fff transparent transparent; |
||||
|
border-width: 10px 15px; |
||||
|
top: 100%; |
||||
|
margin-top: 0; |
||||
|
right: -1px; |
||||
|
-webkit-transition: all ease-in .3s; |
||||
|
transition: all ease-in .3s |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind { |
||||
|
width: 250px; |
||||
|
height: 260px; |
||||
|
display: inline-block; |
||||
|
border-right: 1px solid #ddd; |
||||
|
background: #fff; |
||||
|
overflow: hidden; |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
z-index: 1 |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list-wrap { |
||||
|
width: 210px; |
||||
|
margin: 0 auto |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list { |
||||
|
/* margin-right: -10px; */ |
||||
|
margin-top: 20px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list>li { |
||||
|
float: left; |
||||
|
padding-right: 10px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list>li>a { |
||||
|
display: block; |
||||
|
border: 1px solid #ddd; |
||||
|
width: 200px; |
||||
|
height: 40px; |
||||
|
text-align: center; |
||||
|
line-height: 40px; |
||||
|
margin-bottom: 6px; |
||||
|
color: #DF3434; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list>li>a:hover { |
||||
|
text-decoration: none; |
||||
|
border: 1px solid #DF3434; |
||||
|
background: #DF3434; |
||||
|
color: #fff |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list>li>a.important { |
||||
|
color: #f58914 |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide .behind .function-list>li>a.important:hover { |
||||
|
border: 1px solid #f58914; |
||||
|
background: #f58914; |
||||
|
color: #fff |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on { |
||||
|
width: 450px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display { |
||||
|
background: #DF3434; |
||||
|
border-right-color: transparent |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .title { |
||||
|
color: #fff |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .introduction { |
||||
|
color: #fff |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display::after { |
||||
|
top: 50%; |
||||
|
margin-top: -5px |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .icon.icon1 { |
||||
|
background-position: -82px -183px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .icon.icon2 { |
||||
|
background-position: -180px -183px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .icon.icon3 { |
||||
|
background-position: -285px -183px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .icon.icon4 { |
||||
|
background-position: -380px -183px; |
||||
|
} |
||||
|
|
||||
|
.guide-slider .guide.on .display .icon.icon5 { |
||||
|
background-position: -666px 0 |
||||
|
} |
@ -0,0 +1,241 @@ |
|||||
|
<template> |
||||
|
<div class="main-content"> |
||||
|
<div class="block1"> |
||||
|
<div class="block1-carousel"> |
||||
|
<el-carousel height="450px"> |
||||
|
<el-carousel-item v-for="item in carouselPicList" :key="item"> |
||||
|
<img style="height:450px;width:100%;" :src="item" /> |
||||
|
</el-carousel-item> |
||||
|
</el-carousel> |
||||
|
</div> |
||||
|
<div class="block1-about"> |
||||
|
<div class="about-box"> |
||||
|
<span class="title-1">联盟介绍 <span class="font-size-16">about ></span></span> |
||||
|
<p class="content">在工业和信息化部的大力支持和指导下,由中国信息通信研究院联合制造业、通信业、互联网等企业于2016年2月1日共同发起成立..</p> |
||||
|
<a class="content float-right">查看更多 >></a> |
||||
|
</div> |
||||
|
<div class="other-box flex-box"> |
||||
|
<div class="button flex-1"><i class="el-icon-document"></i>章程</div> |
||||
|
<div class="button flex-1"><i class="el-icon-user-solid"></i>成员</div> |
||||
|
<div class="button flex-1"><i class="el-icon-s-management"></i>组织构架</div> |
||||
|
</div> |
||||
|
<div class="other-box flex-box"> |
||||
|
<div class="button flex-1"><i class="el-icon-user"></i>加入联盟</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="block2"> |
||||
|
<el-row> |
||||
|
<el-col :span="9"> |
||||
|
<div> |
||||
|
<span class="title-2">联盟动态 <span class="font-size-16">News ></span></span> |
||||
|
</div> |
||||
|
<div class="notice-list" v-for="(item,index) in noticeList.slice(0,3)" :key="index"> |
||||
|
<div class="date-block"> |
||||
|
<p class="text-Date">{{item.sendtime.split('-')[0]}}</p> |
||||
|
<p class="text-content text-center">{{item.sendtime.split('-')[1]}}/{{item.sendtime.split('-')[2]}}</p> |
||||
|
</div> |
||||
|
<div class="content-block"> |
||||
|
<p class="text-title">{{item.title}}</p> |
||||
|
<p class="text-content">{{item.content.replace(/<[^>]+>/g,"")}}</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="9"> |
||||
|
<span class="title-2">行业资讯 <span class="font-size-16">Information ></span></span> |
||||
|
<div class="notice-list" v-for="(item,index) in noticeList.slice(0,3)" :key="index"> |
||||
|
<div class="date-block"> |
||||
|
<p class="text-Date">{{item.sendtime.split('-')[0]}}</p> |
||||
|
<p class="text-content text-center">{{item.sendtime.split('-')[1]}}/{{item.sendtime.split('-')[2]}}</p> |
||||
|
</div> |
||||
|
<div class="content-block"> |
||||
|
<p class="text-title">{{item.title}}</p> |
||||
|
<p class="text-content">{{item.content.replace(/<[^>]+>/g,"")}}</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="6"></el-col> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:'home', |
||||
|
data(){ |
||||
|
return { |
||||
|
carouselPicList:[ |
||||
|
require('../../assets/home/carousel-1.png'), |
||||
|
require('../../assets/home/carousel-2.png'), |
||||
|
require('../../assets/home/carousel-3.png'), |
||||
|
], |
||||
|
noticeList:[ //通知列表 |
||||
|
{sendtime:'2020-05-10',title:'工业和信息化部办公厅关于推动工业互联网加快发展',content:'各省、自治区、直辖市及计划单列市、新疆生产建设兵团工业和信息化主 管部门,各省、自治区、直辖市通信管理局,中国电信集团有限公司。'}, |
||||
|
{sendtime:'2020-05-09',title:'工业和信息化部办公厅关于公布2019年工业互联网试',content:'各省、自治区、直辖市及计划单列市工业和信息化主管部门,各省、自治区 、直辖市通信管理局,各有关单位。'}, |
||||
|
{sendtime:'2020-05-08',title:'北京市经济和信息化局关于开展2020年工信部工业互',content:'各有关单位:根据工信部及我局工作安排,现将2020年工信部工业互联网 创新发展工程项目(以下简称“项目”)有关工作通知如下。'}, |
||||
|
{sendtime:'2020-05-07',title:'江门市工业和信息化局转发关于组织推进 “5G+工业”',content:'各市(含定州、辛集市)工业和信息化局、通信发展管理办公室,中国联通 河北分公司、中国电信河北分公司、中国移动河北分公司、河北广电网络。'}, |
||||
|
{sendtime:'2020-05-08',title:'关于进一步加快工业互联网发展的通知',content:'各省、自治区、直辖市及计划单列市工业和信息化主管部门,各省、自治区 、直辖市通信管理局,各有关单位。'}, |
||||
|
{sendtime:'2020-05-07',title:'关于天津市钢铁、水泥企业 2018年度工序单位产品',content:'按照工业和信息化部《2019年工业节能监察重点工作计划》(工信部节函 〔2019〕77号)和《关于下达2019年国家重大工业节能监察任务及经费。'}, |
||||
|
], |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.block1 { |
||||
|
position: relative; |
||||
|
width:100%; |
||||
|
margin: 50px 0; |
||||
|
.block1-carousel { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
vertical-align: top; |
||||
|
width: 66.6%; |
||||
|
height: 450px; |
||||
|
} |
||||
|
.block1-about { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: 33.3%; |
||||
|
height: 450px; |
||||
|
.about-box { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 340px; |
||||
|
background: url('../../assets/home/about_bg.png'); |
||||
|
// background-size: 100% 100%; |
||||
|
} |
||||
|
.other-box { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 55px; |
||||
|
.button { |
||||
|
position: relative; |
||||
|
cursor: pointer; |
||||
|
color: #fff; |
||||
|
height: 55px; |
||||
|
line-height: 55px; |
||||
|
text-align: center; |
||||
|
font-size: 20px; |
||||
|
background: #3b8bb2; |
||||
|
border: 1px solid rgba(255,255,255,0.6); |
||||
|
&:hover { |
||||
|
background: #3b8bb27a; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.block2 { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
margin: 50xp 0; |
||||
|
} |
||||
|
.title-1 { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
cursor: pointer; |
||||
|
height: 60px; |
||||
|
line-height: 60px; |
||||
|
margin: 15px; |
||||
|
font-size: 26px; |
||||
|
color: #fff; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: 0px; |
||||
|
width: 50px; |
||||
|
height: 2px; |
||||
|
background: #fff; |
||||
|
transition: All 0.3s ease-in-out; |
||||
|
} |
||||
|
&:hover { |
||||
|
&::before { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.content { |
||||
|
position: relative; |
||||
|
line-height: 30px; |
||||
|
margin: 15px; |
||||
|
font-size: 14px; |
||||
|
color: rgba(255,255,255,0.8); |
||||
|
} |
||||
|
.title-2 { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
cursor: pointer; |
||||
|
height: 60px; |
||||
|
line-height: 60px; |
||||
|
margin: 15px; |
||||
|
font-size: 26px; |
||||
|
color: #000; |
||||
|
&::before { |
||||
|
content: " "; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: 0px; |
||||
|
width: 50px; |
||||
|
height: 2px; |
||||
|
background: rgb(58, 75, 228); |
||||
|
transition: All 0.3s ease-in-out; |
||||
|
} |
||||
|
&:hover { |
||||
|
&::before { |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.notice-list { |
||||
|
height: 94px; |
||||
|
background-color: rgba(255,255,255,0); |
||||
|
color: #999999; |
||||
|
font-family:PingFang SC; |
||||
|
border-bottom: 1px dotted #dcdcdc; |
||||
|
margin: 10px 20px; |
||||
|
.date-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
vertical-align: top; |
||||
|
width: 67px; |
||||
|
height: 67px; |
||||
|
margin: 10px 10px 10px 0; |
||||
|
padding: 13px 0; |
||||
|
background-color: #E4E4E4; |
||||
|
} |
||||
|
.content-block { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
width: calc(100% - 90px); |
||||
|
padding: 0 15px; |
||||
|
} |
||||
|
.text-Date { |
||||
|
text-align: center; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
.text-title { |
||||
|
font-size: 18px; |
||||
|
margin: 6px 0; |
||||
|
font-weight:500; |
||||
|
color: #666666; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.text-content { |
||||
|
font-size: 14px; |
||||
|
overflow: hidden; |
||||
|
display: -webkit-box; |
||||
|
-webkit-line-clamp:2; |
||||
|
-webkit-box-orient: vertical; |
||||
|
} |
||||
|
&:hover { |
||||
|
.text-title { |
||||
|
color: #3893c7; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,54 @@ |
|||||
|
<template> |
||||
|
<div class="app-wrapper"> |
||||
|
<my-header class="header-sidebar-container"></my-header> |
||||
|
<AppMain></AppMain> |
||||
|
<my-footer></my-footer> |
||||
|
<myScroll></myScroll> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { myHeader,AppMain,myFooter,myScroll } from "./components"; |
||||
|
|
||||
|
export default { |
||||
|
name: "Layout", |
||||
|
components: { |
||||
|
myHeader, |
||||
|
AppMain, |
||||
|
myFooter, |
||||
|
myScroll |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
// @import "src/styles/mixin.scss"; |
||||
|
.app-wrapper { |
||||
|
// @include clearfix; |
||||
|
position: relative; |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
padding-top: 82px; |
||||
|
min-width: 1200px; |
||||
|
&.mobile.openSidebar { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
} |
||||
|
} |
||||
|
.drawer-bg { |
||||
|
background: #000; |
||||
|
opacity: 0.3; |
||||
|
width: 100%; |
||||
|
top: 0; |
||||
|
height: 100%; |
||||
|
position: absolute; |
||||
|
z-index: 999; |
||||
|
} |
||||
|
/*#app{*/ |
||||
|
/* .main-container{*/ |
||||
|
/* .sidebar-container{*/ |
||||
|
/* width: 200px !important;*/ |
||||
|
/* }*/ |
||||
|
/* }*/ |
||||
|
/*}*/ |
||||
|
</style> |
@ -0,0 +1,32 @@ |
|||||
|
<template> |
||||
|
<section class="app-main"> |
||||
|
<transition name="fade" mode="out-in"> |
||||
|
<!-- <router-view :key="key"></router-view> --> |
||||
|
<router-view></router-view> |
||||
|
<!-- <router-view class="view two" name="second"></router-view> --> |
||||
|
</transition> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'AppMain', |
||||
|
computed: { |
||||
|
// key() { |
||||
|
// return this.$route.name !== undefined ? this.$route.name + +new Date() : this.$route + +new Date() |
||||
|
// } |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style> |
||||
|
.app-main{ |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
/* body { |
||||
|
padding: 20px; |
||||
|
background:rgba(245,247,250,1); |
||||
|
} */ |
||||
|
</style> |
@ -0,0 +1,117 @@ |
|||||
|
<template> |
||||
|
<!-- <div class="menu-wrapper"> |
||||
|
<template v-for="item in routes"> |
||||
|
<template v-if="!item.hidden&&item.children"> |
||||
|
<router-link v-if="hasOneShowingChildren(item.children) && !item.children[0].children&&!item.alwaysShow" :to="item.path+'/'+item.children[0].path" :key="item.children[0].name"> |
||||
|
<el-menu-item :index="item.path+'/'+item.children[0].path" :class="{'submenu-title-noDropdown':!isNest}"> |
||||
|
<svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon> |
||||
|
<span v-if="item.children[0].meta&&item.children[0].meta.title" slot="title">{{item.children[0].meta.title}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
|
||||
|
<el-submenu v-else :index="item.name||item.path" :key="item.name" > |
||||
|
<template slot="title"> |
||||
|
<svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon> |
||||
|
<span v-if="item.meta&&item.meta.title" slot="title">{{item.meta.title}}</span> |
||||
|
</template> |
||||
|
<template v-for="child in item.children"> |
||||
|
<template v-if="!child.hidden"> |
||||
|
<sidebar-item :is-nest="true" class="nest-menu" v-if="child.children&&child.children.length>0" :routes="[child]" :key="child.path"></sidebar-item> |
||||
|
<router-link v-else :to="item.path+'/'+child.path" :key="child.name"> |
||||
|
<el-menu-item :index="item.path+'/'+child.path"> |
||||
|
<svg-icon v-if="child.meta&&child.meta.icon" :icon-class="child.meta.icon"></svg-icon> |
||||
|
<span v-if="child.meta&&child.meta.title" slot="title">{{child.meta.title}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
</template> |
||||
|
</template> |
||||
|
</el-submenu> |
||||
|
</template> |
||||
|
</template> |
||||
|
</div> --> |
||||
|
<div class="menu-wrapper"> |
||||
|
<template v-for="item in routes"> |
||||
|
<router-link v-bind:target="item.icon == '_blank'?'_blank':''" v-if="!item.children || item.children.length == 0" :to="{path:item.url}" |
||||
|
:key="item.id"> |
||||
|
<el-menu-item :index="item.url"> |
||||
|
<svg-icon v-if="item.icon" :icon-class="item.icon"></svg-icon> |
||||
|
<span class="myTitle" slot="title">{{item.name}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
|
||||
|
<el-submenu v-else :index="item.name" :key="item.id"> |
||||
|
<template slot="title"> |
||||
|
<!-- <svg-icon v-if="item.icon" :icon-class="item.icon"></svg-icon> --> |
||||
|
<span class="myTitle" slot="title">{{item.name}}</span> |
||||
|
</template> |
||||
|
<template v-for="child in item.children"> |
||||
|
<router-link v-bind:target="child.icon == '_blank'?'_blank':''" :to="{path:child.url}" :key="child.id"> |
||||
|
<el-menu-item :index="child.url"> |
||||
|
<!-- <svg-icon v-if="child.icon" :icon-class="child.icon"></svg-icon> --> |
||||
|
<span class="myTitle" slot="title">{{child.name}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
</template> |
||||
|
</el-submenu> |
||||
|
</template> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
// import {mapGetters} from 'vuex'; |
||||
|
// import {getRouter} from '@/utils/auth'; |
||||
|
|
||||
|
// export default { |
||||
|
// name: 'SidebarItem', |
||||
|
// data() { |
||||
|
// return { |
||||
|
// routes: [], |
||||
|
// }; |
||||
|
// }, |
||||
|
// computed: { |
||||
|
// ...mapGetters([ |
||||
|
// 'router', |
||||
|
// ]), |
||||
|
// }, |
||||
|
// created() { |
||||
|
// this.routes = getRouter()?getRouter():JSON.parse(this.router); |
||||
|
// }, |
||||
|
// }; |
||||
|
export default { |
||||
|
name: 'SidebarItem', |
||||
|
props: { |
||||
|
routes: { |
||||
|
type: Array |
||||
|
}, |
||||
|
isNest: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
roles: this.$store.getters.roles |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
hasOneShowingChildren(children) { |
||||
|
const showingChildren = children.filter(item => { |
||||
|
return !item.hidden |
||||
|
}) |
||||
|
if (showingChildren.length === 1) { |
||||
|
return true |
||||
|
} |
||||
|
return false |
||||
|
}, |
||||
|
// goRouter(name) { |
||||
|
// this.$router.push({name:name}); |
||||
|
// } |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
// .el-menu-item { |
||||
|
// font-size: 16px !important; |
||||
|
// } |
||||
|
</style> |
@ -0,0 +1,63 @@ |
|||||
|
<template> |
||||
|
<el-scrollbar wrap-class="scrollbar-wrapper"> |
||||
|
<el-menu |
||||
|
:default-active="$route.path" |
||||
|
:collapse="isCollapse" |
||||
|
:background-color="variables.menuBg" |
||||
|
:text-color="variables.menuText2" |
||||
|
:active-text-color="variables.menuActiveText2" |
||||
|
:collapse-transition="false" |
||||
|
mode="vertical" |
||||
|
> |
||||
|
<sidebar-item :routes="routes"></sidebar-item> |
||||
|
</el-menu> |
||||
|
</el-scrollbar> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {mapGetters} from 'vuex'; |
||||
|
import variables from '../../../../../public/template/001/styles/variables.scss'; |
||||
|
import SidebarItem from './SidebarItem'; |
||||
|
|
||||
|
export default { |
||||
|
components: {SidebarItem}, |
||||
|
computed: { |
||||
|
...mapGetters([ |
||||
|
'sidebar', |
||||
|
'router', |
||||
|
'activeIndex' |
||||
|
]), |
||||
|
variables() { |
||||
|
return variables; |
||||
|
}, |
||||
|
// routes() { |
||||
|
// debugger |
||||
|
// return this.$router.options.routes |
||||
|
// }, |
||||
|
isCollapse() { |
||||
|
return !this.sidebar.opened; |
||||
|
}, |
||||
|
}, |
||||
|
watch:{ |
||||
|
activeIndex(newVal){ |
||||
|
let temp = this.router.filter((item)=>{ |
||||
|
return item.name == newVal |
||||
|
}) |
||||
|
this.routes = temp?temp[0].children:[] |
||||
|
} |
||||
|
}, |
||||
|
data(){ |
||||
|
return { |
||||
|
routes:[], |
||||
|
} |
||||
|
}, |
||||
|
mounted(){ |
||||
|
let temp = this.router.filter((item)=>{ |
||||
|
return item.name == this.activeIndex |
||||
|
}) |
||||
|
this.routes = temp?temp[0].children:[] |
||||
|
|
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
</script> |
@ -0,0 +1,36 @@ |
|||||
|
<template> |
||||
|
<el-footer> |
||||
|
<span class="copyright"> |
||||
|
京ICP备09013372号-15 工业互联网产业联盟版权所有 技术支持:福通互联 |
||||
|
</span> |
||||
|
</el-footer> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name:'myFooter', |
||||
|
} |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.el-footer { |
||||
|
position: relative; |
||||
|
bottom: 0px; |
||||
|
width: 100%; |
||||
|
background-color:#333333; |
||||
|
line-height: 60px; |
||||
|
font-size:14px; |
||||
|
font-family:PingFang-SC-Regular; |
||||
|
color:#666666; |
||||
|
z-index: 5; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-footer .copyright { |
||||
|
position: relative; |
||||
|
/* margin-left: 15%; */ |
||||
|
} |
||||
|
/* .el-footer .hotline { |
||||
|
position: relative; |
||||
|
margin-left: 10%; |
||||
|
} */ |
||||
|
</style> |
||||
|
|
||||
|
|
@ -0,0 +1,182 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<el-header style="height:84px;" id="topHeight"> |
||||
|
<div class="header-content"> |
||||
|
<router-link to="/"> |
||||
|
<img class="logo" :src="_getImage('search','logo-small.png')" /> |
||||
|
<div class="logo" style="vertical-align: bottom;" > |
||||
|
<p style="background-color: transparent;font-size: 24px;"><b>中国食品工业互联网产业联盟</b></p> |
||||
|
<p style="font-size: 18px;"><b>China Food Industrial Internet Union</b></p> |
||||
|
</div> |
||||
|
<img class="logo2" :src="_getImage('search','logo-small.png')" /> |
||||
|
</router-link> |
||||
|
|
||||
|
<el-menu |
||||
|
v-if="!onlyShow && $template == '001'" |
||||
|
class="menu-position" |
||||
|
:default-active="$route.name" |
||||
|
:background-color="variables.menuBg" |
||||
|
:text-color="variables.menuText" |
||||
|
:active-text-color="variables.menuActiveText" |
||||
|
:collapse-transition="false" |
||||
|
mode="horizontal" |
||||
|
> |
||||
|
<template v-for="item in routes"> |
||||
|
<template v-if="!item.hidden&&!item.children"> |
||||
|
<router-link v-if="!item.hidden" :to="'/'+item.path" :key="item.name"> |
||||
|
<el-menu-item :key="item.name" :index="item.name"> |
||||
|
<span>{{item.meta.title}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
</template> |
||||
|
<template v-else-if="!item.hidden&&item.children&&item.children.length > 0"> |
||||
|
<el-submenu :index="item.name" :key="item.name"> |
||||
|
<template slot="title"> |
||||
|
<span class="myTitle" slot="title">{{item.meta.title}}</span> |
||||
|
</template> |
||||
|
<template v-for="child in item.children"> |
||||
|
<router-link :to="{path:child.path}" :key="child.name"> |
||||
|
<el-menu-item :index="child.path"> |
||||
|
<span class="myTitle" slot="title">{{child.meta.title}}</span> |
||||
|
</el-menu-item> |
||||
|
</router-link> |
||||
|
</template> |
||||
|
</el-submenu> |
||||
|
</template> |
||||
|
</template> |
||||
|
</el-menu> |
||||
|
</div> |
||||
|
<div v-if="!onlyShow" class="avatar-container"> |
||||
|
<!-- <el-button size="mini" class="white-button" @click="login">登录</el-button> --> |
||||
|
<el-dropdown :style="{'color':variables.menuText,'cursor': 'pointer'}"> |
||||
|
<div > |
||||
|
<!-- <img class="user-avatar" src="@/assets/touxiang.png"> --> |
||||
|
<router-link :to="{'name':'login'}"> |
||||
|
<span>加入联盟</span> |
||||
|
</router-link> |
||||
|
|
||||
|
</div> |
||||
|
</el-dropdown> |
||||
|
</div> |
||||
|
</el-header> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
//import { mapGetters } from "vuex"; |
||||
|
//import variables from "@/styles/variables.scss"; |
||||
|
export default { |
||||
|
name: "myHeader", |
||||
|
props: { |
||||
|
onlyShow: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
} |
||||
|
}, |
||||
|
// computed: { |
||||
|
// ...mapGetters(["router"]), |
||||
|
// variables() { |
||||
|
// return variables; |
||||
|
// } |
||||
|
// }, |
||||
|
// watch: { |
||||
|
// router(newVal) { |
||||
|
// this.routes = this.router; |
||||
|
// } |
||||
|
// }, |
||||
|
data() { |
||||
|
return { |
||||
|
routes: [], |
||||
|
variables:"", |
||||
|
top:true |
||||
|
}; |
||||
|
}, |
||||
|
created(){ |
||||
|
this.variables = this._getCss2("styles", "variables.scss") |
||||
|
var that = this |
||||
|
window.addEventListener("scroll", that.scroll) |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.routes = this.$router.options.routes[0].children; |
||||
|
}, |
||||
|
methods: { |
||||
|
login() { |
||||
|
let url = config.LOGIN_URL |
||||
|
window.open(url); |
||||
|
}, |
||||
|
scroll() { |
||||
|
if(document.documentElement.scrollTop >= 200 && this.top) |
||||
|
{ |
||||
|
this.top = false |
||||
|
window.document.getElementById('topHeight').style.display = 'none' |
||||
|
} else if(document.documentElement.scrollTop < 200 && !this.top){ |
||||
|
this.top = true |
||||
|
window.document.getElementById('topHeight').style.display = 'block' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
beforeDestroy(){ |
||||
|
var that = this |
||||
|
window.removeEventListener('scroll', that.scroll);//监听页面滚动事件 |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style rel="stylesheet/scss" lang="scss" scoped> |
||||
|
.logo { |
||||
|
position: relative; |
||||
|
top: 7px; |
||||
|
display: inline-block; |
||||
|
vertical-align: super; |
||||
|
margin-right: 10px; |
||||
|
/* width: 580px; */ |
||||
|
height: 70px; |
||||
|
border: 0; |
||||
|
} |
||||
|
.logo2 { |
||||
|
display: none; |
||||
|
position: relative; |
||||
|
top: 7px; |
||||
|
vertical-align: super; |
||||
|
margin-right: 10px; |
||||
|
height: 70px; |
||||
|
border: 0; |
||||
|
} |
||||
|
.menu-position { |
||||
|
float: right; |
||||
|
padding-right: 10%; |
||||
|
} |
||||
|
.avatar-container { |
||||
|
display: inline-block; |
||||
|
position: absolute; |
||||
|
line-height: 84px; |
||||
|
right: 3%; |
||||
|
top: 0; |
||||
|
} |
||||
|
.white-button { |
||||
|
background: rgba(255, 255, 255, 0); |
||||
|
color: #fff; |
||||
|
border: 1px solid #fff; |
||||
|
} |
||||
|
@media screen and (min-width: 1300px) and (max-width: 1500px) { |
||||
|
.logo { |
||||
|
// width: 420px; |
||||
|
height: 70px; |
||||
|
} |
||||
|
} |
||||
|
@media screen and (min-width: 1000px) and (max-width: 1300px) { |
||||
|
.logo { |
||||
|
display: none; |
||||
|
} |
||||
|
.logo2 { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
} |
||||
|
@media screen and (max-width: 1000px) { |
||||
|
.logo { |
||||
|
display: none; |
||||
|
} |
||||
|
.logo2 { |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,5 @@ |
|||||
|
// export { default as Sidebar } from './Sidebar'
|
||||
|
export { default as AppMain } from './AppMain' |
||||
|
export { default as myHeader } from './header' |
||||
|
export { default as myFooter } from './footer' |
||||
|
export { default as myScroll } from './scroll' |
@ -0,0 +1,137 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="kefu-block"> |
||||
|
<div class="kefu-img"></div> |
||||
|
</div> |
||||
|
<div class="top-block" v-show="showTop" @click="toTopScroll"> |
||||
|
<div class="top-img"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name:'myScroll', |
||||
|
data(){ |
||||
|
return { |
||||
|
screenHeight:window.screen.height, |
||||
|
showTop:false |
||||
|
} |
||||
|
}, |
||||
|
mounted(){ |
||||
|
let timeout = null |
||||
|
window.onscroll = ()=>{ |
||||
|
if (timeout) clearTimeout(timeout) |
||||
|
timeout = setTimeout(() => { |
||||
|
let scrollT = window.pageYOffset; |
||||
|
if(scrollT > this.screenHeight) |
||||
|
{ |
||||
|
this.showTop = true |
||||
|
} else { |
||||
|
this.showTop = false |
||||
|
} |
||||
|
|
||||
|
}, 500); |
||||
|
} |
||||
|
}, |
||||
|
methods:{ |
||||
|
toTopScroll(){ |
||||
|
let currentScroll = window.pageYOffset |
||||
|
if(currentScroll > 0) |
||||
|
{ |
||||
|
window.requestAnimationFrame(this.toTopScroll); |
||||
|
window.scrollTo (0,currentScroll - (currentScroll/5)); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.kefu-block { |
||||
|
position: fixed; |
||||
|
z-index: 1001; |
||||
|
bottom: 100px; |
||||
|
right: 40px; |
||||
|
width: 44px; |
||||
|
height: 44px; |
||||
|
border-radius: 4px; |
||||
|
// border: 1px solid rgba(195,13,35,1); |
||||
|
background: #fff; |
||||
|
color: #fff; |
||||
|
padding: 5px 40px 5px 6px; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
cursor: pointer; |
||||
|
transition: all 0.5s; |
||||
|
.kefu-img { |
||||
|
position: absolute; |
||||
|
display: inline-block; |
||||
|
width: 29px; |
||||
|
height: 31px; |
||||
|
top: 6px; |
||||
|
right: 7px; |
||||
|
background: url('../../../assets/scroll/kefu.png') no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
&:hover { |
||||
|
transition: all 0.5s; |
||||
|
width: 140px; |
||||
|
background: rgba(230,50,41,1) linear-gradient(to right,rgba(224,70,23,1),rgba(195,13,35,1)); |
||||
|
&::before { |
||||
|
position: relative; |
||||
|
content: '售前客服'; |
||||
|
top: 6px; |
||||
|
left: 10px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
.kefu-img { |
||||
|
background: url('../../../assets/scroll/kefu-hover.png') no-repeat; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.top-block { |
||||
|
position: fixed; |
||||
|
z-index: 1001; |
||||
|
bottom: 40px; |
||||
|
right: 40px; |
||||
|
width: 44px; |
||||
|
height: 44px; |
||||
|
color: #fff; |
||||
|
border-radius: 4px; |
||||
|
background-color: #fff; |
||||
|
padding: 5px 40px 5px 6px; |
||||
|
transition: all 0.5s; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
cursor: pointer; |
||||
|
.top-img { |
||||
|
position: absolute; |
||||
|
display: inline-block; |
||||
|
width: 24px; |
||||
|
height: 34px; |
||||
|
top: 6px; |
||||
|
right: 10px; |
||||
|
background: url('../../../assets/scroll/toTop.png') no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
&:hover { |
||||
|
transition: all 0.5s; |
||||
|
width: 140px; |
||||
|
background: rgba(230,50,41,1) linear-gradient(to right,rgba(224,70,23,1),rgba(195,13,35,1)); |
||||
|
&::before { |
||||
|
position: relative; |
||||
|
content: '返回顶部'; |
||||
|
top: 6px; |
||||
|
left: 10px; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
.top-img { |
||||
|
background: url('../../../assets/scroll/toTop-hover.png') no-repeat; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,105 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="app-main"> |
||||
|
<el-form :model="form" :rules="rules" ref="password" class="el-form-new"> |
||||
|
<el-form-item label="原密码:" :label-width="formLabelWidth" prop="oldPassword"> |
||||
|
<el-input type="password" v-model="form.oldPassword" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="新密码:" :label-width="formLabelWidth" prop="newPassword"> |
||||
|
<el-input type="password" v-model="form.newPassword" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="again"> |
||||
|
<el-input type="password" v-model="form.again" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<div class="form-footer"> |
||||
|
<el-button type="danger" size="mini" @click="submitForm('password')">确定</el-button> |
||||
|
<el-button type="info" size="mini" @click="resetForm('password')">取消</el-button> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapGetters } from "vuex"; |
||||
|
import { updatePass } from "@/api/login"; |
||||
|
export default { |
||||
|
name: "editPassword", |
||||
|
computed: { |
||||
|
...mapGetters(["name","id"]) |
||||
|
}, |
||||
|
data() { |
||||
|
const checkAgainPassword = (rule, value, callback) => { |
||||
|
if (value != this.form.newPassword) { |
||||
|
return callback(new Error("两次输入密码不一致")); |
||||
|
} else { |
||||
|
callback(); |
||||
|
} |
||||
|
}; |
||||
|
return { |
||||
|
formLabelWidth: "150px", |
||||
|
form: { |
||||
|
oldPassword: "", |
||||
|
newPassword: "", |
||||
|
again: "" |
||||
|
}, |
||||
|
rules: { |
||||
|
oldPassword: [ |
||||
|
{ required: true, message: "请输入原密码", trigger: "blur" }, |
||||
|
{ min: 6, max: 12, message: "长度在 6 到 12 个字符", trigger: "blur" } |
||||
|
], |
||||
|
newPassword: [ |
||||
|
{ required: true, message: "请输入新密码", trigger: "blur" }, |
||||
|
{ min: 6, max: 12, message: "长度在 6 到 12 个字符", trigger: "blur" } |
||||
|
], |
||||
|
again: [ |
||||
|
{ required: true, message: "请再次输入新密码", trigger: "blur" }, |
||||
|
{ validator: checkAgainPassword, trigger: "blur" } |
||||
|
] |
||||
|
} |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
updatePass() { |
||||
|
const param = { |
||||
|
id:this.id, |
||||
|
userName: this.name, |
||||
|
newpass: this.$md5(this.form.newPassword), |
||||
|
oldpass: this.$md5(this.form.oldPassword) |
||||
|
}; |
||||
|
updatePass(param).then(res => { |
||||
|
console.log(res); |
||||
|
this.$message({ |
||||
|
message: "修改成功!", |
||||
|
type: "success" |
||||
|
}); |
||||
|
this.$router.go(-1); |
||||
|
}); |
||||
|
}, |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate(valid => { |
||||
|
if (valid) { |
||||
|
this.updatePass(); |
||||
|
} else { |
||||
|
console.log("error submit!!"); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
resetForm(formName) { |
||||
|
this.$refs[formName].resetFields(); |
||||
|
this.$router.go(-1); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style scope> |
||||
|
.form-footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
.el-form-new { |
||||
|
width: 400px; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,221 @@ |
|||||
|
<template> |
||||
|
<div class="login-container"> |
||||
|
<div class="header"> |
||||
|
<h3 class="title-cn">工业互联网公共服务平台</h3> |
||||
|
<h4 class="title-en">Industrial Internet Public Service Platform</h4> |
||||
|
</div> |
||||
|
<el-form |
||||
|
ref="loginForm" |
||||
|
:model="loginForm" |
||||
|
:rules="loginRules" |
||||
|
class="login-form" |
||||
|
auto-complete="on" |
||||
|
label-position="left" |
||||
|
> |
||||
|
<div class="title-form"> |
||||
|
用户登录 |
||||
|
<div class="title-regiter"> |
||||
|
还没账户?去 |
||||
|
<router-link :to="{name:'register'}"> |
||||
|
<a class="click_link">注册</a> |
||||
|
</router-link> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<el-form-item prop="username"> |
||||
|
<span class="svg-container"> |
||||
|
<img class="user-img" :src="_getImage('login','user.png')"/> |
||||
|
</span> |
||||
|
<el-input |
||||
|
v-model="loginForm.username" |
||||
|
name="username" |
||||
|
type="text" |
||||
|
auto-complete="off" |
||||
|
placeholder="请输入用户名" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
<el-form-item prop="password"> |
||||
|
<span class="svg-container"> |
||||
|
<img class="user-img" :src="_getImage('login','pass.png')"/> |
||||
|
</span> |
||||
|
<el-input |
||||
|
:type="pwdType" |
||||
|
v-model="loginForm.password" |
||||
|
name="password" |
||||
|
auto-complete="off" |
||||
|
placeholder="请输入用户密码" |
||||
|
@keyup.enter.native="handleLogin" |
||||
|
/> |
||||
|
<span class="show-pwd" @click="showPwd"> |
||||
|
<div :class="pwdType === 'password' ? 'eye' : 'eye-open'"></div> |
||||
|
</span> |
||||
|
</el-form-item> |
||||
|
<el-row> |
||||
|
<el-col :span="14"> |
||||
|
<el-form-item prop="vercode"> |
||||
|
<span class="svg-container"> |
||||
|
<!-- 获取图片的方法在main.ts中 --> |
||||
|
<img class="user-img" :src="_getImage('login','code.png')"/> |
||||
|
</span> |
||||
|
<el-input |
||||
|
v-model="loginForm.vercode" |
||||
|
name="vercode" |
||||
|
type="text" |
||||
|
auto-complete="off" |
||||
|
placeholder="请输入验证码" |
||||
|
@keyup.enter.native="handleLogin" |
||||
|
/> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/> |
||||
|
<img |
||||
|
:src="_getImage('login','refresh.png')" |
||||
|
alt="点击刷新" |
||||
|
class="code-refresh" |
||||
|
@click="refreshCode" |
||||
|
/> |
||||
|
</el-row> |
||||
|
<div class="remember-block"> |
||||
|
<!-- <el-checkbox v-model="remember">记住密码</el-checkbox> --> |
||||
|
<router-link :to="{name:'retrievePassword'}"> |
||||
|
<a class="click_link">忘记密码?</a> |
||||
|
</router-link> |
||||
|
</div> |
||||
|
<el-button |
||||
|
class="login-btn" |
||||
|
:loading="loading" |
||||
|
type="primary" |
||||
|
style="width:100%;" |
||||
|
@click.native.prevent="handleLogin" |
||||
|
>登录 |
||||
|
</el-button> |
||||
|
</el-form> |
||||
|
<div class="login_copyright"> |
||||
|
Copyright 2014 顺鑫农业 All Rights Reserved 北京顺鑫农业股份有限公司 版权所有 京ICP备12039862号 京公网安备110113000279号 |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {JSEncrypt} from "jsencrypt"; //加密组件,前台存公钥,后台存密钥 |
||||
|
export default { |
||||
|
name: "Login", |
||||
|
data() { |
||||
|
//用户名校验 |
||||
|
const validateUsername = (rule, value, callback) => { |
||||
|
if (!value) { |
||||
|
callback(new Error("请输入用户名")); |
||||
|
} else { |
||||
|
callback(); |
||||
|
} |
||||
|
}; |
||||
|
//密码校验 |
||||
|
const validatePass = (rule, value, callback) => { |
||||
|
if (value.length < 6) { |
||||
|
callback(new Error("密码不能小于6位")); |
||||
|
} else { |
||||
|
callback(); |
||||
|
} |
||||
|
}; |
||||
|
return { |
||||
|
APP_URL: config.API_URL, |
||||
|
//加密公钥 |
||||
|
PUBLIC_KEY: |
||||
|
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCsD1gI70BxYujhNw8NpaVKRXkcRofoeUbN9Dj5m3i3h9XAIS6LkjI01L4ieRpTHnMEzoXUY8a2/svDf//xuHuDJlZBNtCXK4DPx5x4zHdUWDjFGpWlMQzhsqQlfs0tkN5gP095g27L0ki/NrRuBpgxP1q2dHKpL37sBF8XNRpedwIDAQAB", |
||||
|
loginForm: { |
||||
|
//form表单数据 |
||||
|
username: "", |
||||
|
password: "", |
||||
|
vercode: "" |
||||
|
}, |
||||
|
loginRules: { |
||||
|
//form表单校验规则 |
||||
|
username: [ |
||||
|
{required: true, trigger: "blur", validator: validateUsername} |
||||
|
], |
||||
|
password: [ |
||||
|
{required: true, trigger: "blur", validator: validatePass} |
||||
|
], |
||||
|
vercode: [{required: true, trigger: "blur", message: "请填写验证码"}] |
||||
|
}, |
||||
|
loading: false, //登录按钮的loading状态 |
||||
|
pwdType: "password", //密码明文密文类型 |
||||
|
codeSrc: "", |
||||
|
remember: false //记住密码 |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this._getCss("login", "login"); |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.codeSrc = |
||||
|
this.APP_URL + "/api-login/common/verifycode?" + Math.random(); |
||||
|
this.getKeysList(); |
||||
|
}, |
||||
|
methods: { |
||||
|
//明文密文密码显示 |
||||
|
showPwd() { |
||||
|
if (this.pwdType === "password") { |
||||
|
this.pwdType = ""; |
||||
|
} else { |
||||
|
this.pwdType = "password"; |
||||
|
} |
||||
|
}, |
||||
|
//密码加密 |
||||
|
passwordEncryption(password) { |
||||
|
const encryptor = new JSEncrypt(); |
||||
|
encryptor.setPublicKey(this.PUBLIC_KEY); |
||||
|
const passwordEncryp = encryptor.encrypt(password); |
||||
|
return passwordEncryp; |
||||
|
}, |
||||
|
//登录按钮 |
||||
|
handleLogin() { |
||||
|
this.$refs.loginForm.validate(valid => { |
||||
|
if (valid) { |
||||
|
this.loading = true; |
||||
|
const params = { |
||||
|
username:this.loginForm.username, |
||||
|
password:this.$md5(this.loginForm.password), |
||||
|
vercode:this.loginForm.vercode |
||||
|
} |
||||
|
this.$store |
||||
|
.dispatch("Login", params) |
||||
|
.then(data => { |
||||
|
this.loading = false; |
||||
|
this.$router.push({path: "/"}); |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
this.loading = false; |
||||
|
this.refreshCode(); |
||||
|
}); |
||||
|
} else { |
||||
|
console.log("error submit!!"); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
getKeysList() { |
||||
|
this.$store |
||||
|
.dispatch("keyWords") |
||||
|
.then(data => { |
||||
|
}) |
||||
|
.catch(() => { |
||||
|
}); |
||||
|
}, |
||||
|
//刷新验证码 |
||||
|
refreshCode: function () { |
||||
|
document |
||||
|
.getElementById("codePic") |
||||
|
.setAttribute( |
||||
|
"src", |
||||
|
this.APP_URL + "/api-login/common/verifycode?" + Math.random() |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style> |
||||
|
.login-container .login-btn { |
||||
|
background: #ff6c58; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,391 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="app-main"> |
||||
|
<el-form :model="form" :rules="rules" ref="userInfo" class="el-form-new"> |
||||
|
<el-row class="text-center"> |
||||
|
<p class="font-size-21 font-weight-bold text-center line-height-2em">登录信息</p> |
||||
|
<el-col :span="11" > |
||||
|
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="userName"> |
||||
|
<el-input v-model="form.userName" auto-complete="new-password" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="密码:" :label-width="formLabelWidth" prop="password"> |
||||
|
<el-input type="password" v-model="form.password" auto-complete="new-password" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label-width="formLabelWidth"> |
||||
|
<check-password-strong :sValue="form.password"></check-password-strong> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="确认密码:" :label-width="formLabelWidth" prop="again"> |
||||
|
<el-input type="password" v-model="form.again" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
|
||||
|
<el-col :span="2" style="height:1px;"></el-col> |
||||
|
<el-col :span="11"> |
||||
|
|
||||
|
<el-form-item label="姓名:" :label-width="formLabelWidth" prop="name"> |
||||
|
<el-input v-model="form.name" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email"> |
||||
|
<el-input v-model="form.email" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="手机号:" :label-width="formLabelWidth" prop="telPhone" ref="telPhone"> |
||||
|
<el-input v-model.number="form.telPhone" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="验证码:" :label-width="formLabelWidth" prop="code"> |
||||
|
<el-input v-model="form.code" autocomplete="off" size="small" style="width:110px;"></el-input> |
||||
|
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic" @click="refreshCode"/> |
||||
|
<img :src="_getImage('login','refresh.png')" alt="点击刷新" class="code-refresh" @click="refreshCode" /> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="短信验证码:" :label-width="formLabelWidth" prop="code"> |
||||
|
<el-input v-model.number="form.code" autocomplete="off" size="small" style="width:110px;margin-right:5px;"></el-input> |
||||
|
<el-button type="danger" style="width:100px;" size="small" @click="getSendMessage" :disabled="sendStatus"> |
||||
|
{{ !sendStatus ? '获取验证码' : timer + '秒' }} |
||||
|
</el-button> |
||||
|
</el-form-item> --> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
<el-row> |
||||
|
<p class="font-size-21 font-weight-bold text-center line-height-2em">企业信息</p> |
||||
|
<el-col :span="11" style="padding-right:30px;"> |
||||
|
<el-form-item label="企业名称:" :label-width="formLabelWidth" prop="name"> |
||||
|
<el-input v-model="form.name" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="企业类型:" :label-width="formLabelWidth" prop="typeId"> |
||||
|
<!-- 企业类型的下拉菜单 --> |
||||
|
<el-select v-model="form.typeId" placeholder="请选择企业类型"> |
||||
|
<el-option label="政府机关" :value="1"></el-option> |
||||
|
<el-option label="研究机构" :value="2"></el-option> |
||||
|
<el-option label="社会团体" :value="3"></el-option> |
||||
|
<el-option label="企事业单位" :value="4"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="统一社会信用代码:" :label-width="formLabelWidth" prop="code"> |
||||
|
<el-input v-model="form.code" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="法人证件类型:" :label-width="formLabelWidth" prop="ceId"> |
||||
|
<!-- 法人证件类型的下拉菜单 --> |
||||
|
<el-select v-model="form.ceId" placeholder="请选择法人证件类型"> |
||||
|
<el-option label="中国居民身份证" :value="1"></el-option> |
||||
|
<el-option label="港澳居民往来内地通行证" :value="2"></el-option> |
||||
|
<el-option label="台湾居民往来大陆通行证" :value="3"></el-option> |
||||
|
<el-option label="外国人永久居留身份证" :value="4"></el-option> |
||||
|
<el-option label="港澳台居民居住证" :value="5"></el-option> |
||||
|
<el-option label="护照" :value="6"></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="法人证件号码:" :label-width="formLabelWidth" prop="enCeNumber"> |
||||
|
<el-input v-model="form.enCeNumber" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="2" style="height:1px;"></el-col> |
||||
|
<el-col :span="11" style="padding-right:30px;"> |
||||
|
<el-form-item label="所属行业:" :label-width="formLabelWidth" prop="inBigId"> |
||||
|
<!-- 行业大类的下拉菜单 --> |
||||
|
<el-select |
||||
|
v-model="form.inBigId" |
||||
|
placeholder="行业大类" |
||||
|
style="width:calc(50% - 10px);margin-right: 20px;" |
||||
|
@change="changeSmallIndustry(true)" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="(item,index) in bigIndustryType" |
||||
|
:key="index" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
<!-- 行业小类的下拉菜单 --> |
||||
|
<el-select |
||||
|
v-model="form.inSmallId" |
||||
|
placeholder="行业小类" |
||||
|
style="width:calc(50% - 10px);" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="(item,index) in smallIndustryType" |
||||
|
:key="index" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="法人姓名:" :label-width="formLabelWidth" prop="enLegalName"> |
||||
|
<el-input v-model="form.enLegalName" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="法人证件:" :label-width="formLabelWidth" prop="enCeAddressZ"> |
||||
|
<div class="flex-box"> |
||||
|
<el-upload |
||||
|
class="avatar-uploader flex-1" |
||||
|
:action="upload_file" |
||||
|
:show-file-list="false" |
||||
|
:on-success="handlePhotoSuccess" |
||||
|
:before-upload="beforeAvatarUpload" |
||||
|
> |
||||
|
<img v-if="photoUrl" :src="photoUrl" class="avatar"/> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
<el-upload |
||||
|
class="avatar-uploader flex-1" |
||||
|
:action="upload_file" |
||||
|
:show-file-list="false" |
||||
|
:on-success="handleReverseSuccess" |
||||
|
:before-upload="beforeAvatarUpload" |
||||
|
> |
||||
|
<img v-if="reversePhotoUrl" :src="reversePhotoUrl" class="avatar"/> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</div> |
||||
|
<el-form-item label-width="150px" prop="enCeAddressF"></el-form-item> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="24" style="padding-right:30px;"> |
||||
|
<el-form-item label="企业简介:" :label-width="formLabelWidth" prop="enIntroduction"> |
||||
|
<!-- <el-input v-model="form.enIntroduction" autocomplete="off"></el-input> --> |
||||
|
<el-input type="textarea" v-model="form.enIntroduction"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-col :span="11" style="padding-right:30px;"> |
||||
|
<el-form-item label="组织/单位注册所在地:" :label-width="formLabelWidth" prop="areaId"> |
||||
|
<!-- <v-distpicker @selected="onSelected" class="my-distpicker"></v-distpicker> --> |
||||
|
<el-select |
||||
|
v-model="form.provinceId" |
||||
|
placeholder="省" |
||||
|
style="width:calc(33.3% - 7px);margin-right:10px;" |
||||
|
@change="changeArea(form.provinceId,1,true)" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="(item,index) in provinces" |
||||
|
:key="index" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
<el-select |
||||
|
v-model="form.cityId" |
||||
|
placeholder="市" |
||||
|
style="width:calc(33.3% - 7px);margin-right:10px;" |
||||
|
@change="changeArea(form.cityId,2,true)" |
||||
|
> |
||||
|
<el-option |
||||
|
v-for="(item,index) in citys" |
||||
|
:key="index" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
<el-select v-model="form.areaId" placeholder="区" style="width:calc(33.3% - 7px);"> |
||||
|
<el-option |
||||
|
v-for="(item,index) in areas" |
||||
|
:key="index" |
||||
|
:label="item.name" |
||||
|
:value="item.id" |
||||
|
></el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="官方网址:" :label-width="formLabelWidth" prop="enOffWeb"> |
||||
|
<el-input v-model="form.enOffWeb" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
<el-form-item label="联系人姓名:" :label-width="formLabelWidth" prop="conName"> |
||||
|
<el-input v-model="form.conName" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="联系人邮箱:" :label-width="formLabelWidth" prop="email"> |
||||
|
<el-input v-model="form.email" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="2" style="height:1px;"></el-col> |
||||
|
<el-col :span="11" style="padding-right:30px;"> |
||||
|
<el-form-item label="注册详细地址:" :label-width="formLabelWidth" prop="enDetAddress"> |
||||
|
<el-input v-model="form.enDetAddress" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="组织/单位营业执照:" :label-width="formLabelWidth" prop="enOpeAddress"> |
||||
|
<div class="flex-box"> |
||||
|
<el-upload |
||||
|
class="avatar-uploader" |
||||
|
:action="upload_file" |
||||
|
:show-file-list="false" |
||||
|
:on-success="handleLicenceSuccess" |
||||
|
:before-upload="beforeAvatarUpload" |
||||
|
> |
||||
|
<img v-if="businessLicenceUrl" :src="businessLicenceUrl" class="avatar"/> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</div> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="联系人电话:" :label-width="formLabelWidth" prop="telPhone"> |
||||
|
<el-input v-model="form.telPhone" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
|
||||
|
|
||||
|
<el-row> |
||||
|
<el-form-item :label-width="formLabelWidth" style="text-align: center;"> |
||||
|
<el-button type="danger" size="small" @click="submitForm('userInfo')" style="width:200px;text-align: center;">注册</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label-width="formLabelWidth" class="text-center"> |
||||
|
已有账号? |
||||
|
<el-link :underline="false" type="primary" @click="goLogin">立即登录</el-link> |
||||
|
</el-form-item> |
||||
|
</el-row> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import CheckPasswordStrong from '@/components/CheckPasswordStrong'; |
||||
|
import {sendMessage, registerUser} from "@/api/login" |
||||
|
|
||||
|
export default { |
||||
|
name: 'register', |
||||
|
components: { |
||||
|
CheckPasswordStrong |
||||
|
}, |
||||
|
data() { |
||||
|
const checkAgainPassword = (rule, value, callback) => { |
||||
|
if (value != this.form.password) { |
||||
|
return callback(new Error('两次输入密码不一致')); |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
}; |
||||
|
return { |
||||
|
sendStatus: false, |
||||
|
timer: 60, |
||||
|
codeSrc: '', |
||||
|
formLabelWidth: '150px', |
||||
|
form: { |
||||
|
name: '', |
||||
|
userName: '', |
||||
|
password: '', |
||||
|
again: '', |
||||
|
email: '', |
||||
|
telPhone: '', |
||||
|
// code:'', |
||||
|
code: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
name: [ |
||||
|
{required: true, message: '请输入姓名', trigger: 'blur'} |
||||
|
], |
||||
|
userName: [ |
||||
|
{required: true, message: '请输入用户名', trigger: 'blur'} |
||||
|
], |
||||
|
password: [ |
||||
|
{required: true, message: '请输入新密码', trigger: 'blur'}, |
||||
|
{min: 8, max: 12, message: '长度在 8 到 12 个字符', trigger: 'blur'} |
||||
|
], |
||||
|
again: [ |
||||
|
{required: true, message: '请再次输入新密码', trigger: 'blur'}, |
||||
|
{validator: checkAgainPassword, trigger: 'blur'} |
||||
|
], |
||||
|
email: [ |
||||
|
{required: true, message: '请输入邮箱', trigger: 'blur'} |
||||
|
], |
||||
|
telPhone: [ |
||||
|
{required: true, message: '请输入手机号', trigger: 'blur'} |
||||
|
], |
||||
|
// code: [ |
||||
|
// { required: true, message: '请输入验证码', trigger: 'blur' } |
||||
|
// ], |
||||
|
code: [ |
||||
|
{required: true, message: '请输入短信验证码', trigger: 'blur'} |
||||
|
] |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.codeSrc = config.API_URL+"/api-login/common/verifycode?" + Math.random() |
||||
|
}, |
||||
|
methods: { |
||||
|
goLogin() { |
||||
|
this.$router.push({name: 'login'}) |
||||
|
}, |
||||
|
// refreshCode:function(){ |
||||
|
// document.getElementById("codePic").setAttribute("src",config.API_URL+"/api-login/common/verifycode?" + Math.random()) |
||||
|
// }, |
||||
|
getSendMessage() { |
||||
|
this.$refs['userInfo'].validateField('telPhone', (valid) => { |
||||
|
if (valid) { |
||||
|
console.log('telPhone error'); |
||||
|
return false; |
||||
|
} else { |
||||
|
sendMessage({telPhone: this.form.telPhone}).then(res => { |
||||
|
this.$message({ |
||||
|
message: res.msg, |
||||
|
type: 'success' |
||||
|
}); |
||||
|
this.timer = 60 |
||||
|
this.sendStatus = true |
||||
|
var flag = setInterval(() => { |
||||
|
if (this.timer == 0) { |
||||
|
clearInterval(flag) |
||||
|
this.sendStatus = false |
||||
|
} else { |
||||
|
this.timer-- |
||||
|
} |
||||
|
}, 1000) |
||||
|
}) |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate((valid) => { |
||||
|
if (valid) { |
||||
|
registerUser(this.form).then(res => { |
||||
|
console.log(res); |
||||
|
this.$message({ |
||||
|
message: '注册成功!', |
||||
|
type: 'success' |
||||
|
}); |
||||
|
this.goLogin() |
||||
|
}) |
||||
|
} else { |
||||
|
console.log('error submit!!'); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
resetForm(formName) { |
||||
|
this.$refs[formName].resetFields(); |
||||
|
this.$router.go(-1) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scope> |
||||
|
.form-footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.el-form-new { |
||||
|
max-width: 1200px; |
||||
|
// width: 400px; |
||||
|
// margin: 0 auto; |
||||
|
} |
||||
|
|
||||
|
.code-refresh { |
||||
|
position: absolute; |
||||
|
top: 10px; |
||||
|
width: 25px; |
||||
|
height: 20px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.code-pic { |
||||
|
margin: 0 5px; |
||||
|
border: 1px solid rgba(220, 220, 220, 1); |
||||
|
border-radius: 3px; |
||||
|
width: 90px; |
||||
|
height: 32px; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,278 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="app-main"> |
||||
|
<el-steps |
||||
|
:space="180" |
||||
|
:active="stepActive" |
||||
|
finish-status="process" |
||||
|
process-status="wait" |
||||
|
align-center |
||||
|
> |
||||
|
<el-step title="输入账号"></el-step> |
||||
|
<el-step title="安全验证"></el-step> |
||||
|
<el-step title="重置密码"></el-step> |
||||
|
<el-step title="成功"></el-step> |
||||
|
</el-steps> |
||||
|
<div class="flex-box"> |
||||
|
<div class="step-block"> |
||||
|
<el-form :model="step0" :rules="step0Rules" ref="step0" v-show="stepActive == 1"> |
||||
|
<el-form-item label="账号:" :label-width="formLabelWidth" prop="username"> |
||||
|
<el-input v-model="step0.username" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label-width="formLabelWidth"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
size="small" |
||||
|
style="width:250px;" |
||||
|
@click="submitForm('step0')" |
||||
|
>下一步</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-form :model="step1" :rules="step1Rules" ref="step1" v-show="stepActive == 2"> |
||||
|
<el-form-item label="手机号:" :label-width="formLabelWidth"> |
||||
|
<span>{{step1.telPhone}}</span> |
||||
|
</el-form-item> |
||||
|
<!-- <el-form-item label="验证码:" :label-width="formLabelWidth" prop="tcode"> |
||||
|
<el-input v-model="step1.tcode" autocomplete="off" size="small" style="width:110px;"></el-input> |
||||
|
<img id="codePic" :src="codeSrc" alt="点击刷新" class="code-pic"> |
||||
|
<img src="../../assets/login/refresh.png" alt="点击刷新" class="code-refresh" @click="refreshCode"> |
||||
|
</el-form-item>--> |
||||
|
<el-form-item label="短信验证码:" :label-width="formLabelWidth" prop="code"> |
||||
|
<el-input |
||||
|
v-model.number="step1.code" |
||||
|
autocomplete="off" |
||||
|
size="small" |
||||
|
style="width:110px;margin-right:5px;" |
||||
|
></el-input> |
||||
|
<!-- <el-button type="danger" size="small ">获取验证码</el-button> --> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
style="width:100px;" |
||||
|
size="small" |
||||
|
@click="getSendMessage" |
||||
|
:disabled="sendStatus" |
||||
|
>{{!sendStatus?'获取验证码':codeTimer+'秒'}}</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label-width="formLabelWidth"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
size="small" |
||||
|
style="width:250px;" |
||||
|
@click="submitForm('step1')" |
||||
|
>下一步</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<el-form :model="step2" :rules="step2Rules" ref="step2" v-show="stepActive == 3"> |
||||
|
<el-form-item label="手机号:" :label-width="formLabelWidth"> |
||||
|
<span>{{step2.telPhone}}</span> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="新密码:" :label-width="formLabelWidth" prop="newPass"> |
||||
|
<el-input type="password" v-model="step2.newPass" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="确认新密码:" :label-width="formLabelWidth" prop="again"> |
||||
|
<el-input type="password" v-model="step2.again" autocomplete="off" size="small"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item :label-width="formLabelWidth"> |
||||
|
<el-button |
||||
|
type="danger" |
||||
|
size="small" |
||||
|
style="width:250px;" |
||||
|
@click="submitForm('step2')" |
||||
|
>下一步</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<div class="flex-box-column" v-show="stepActive == 4"> |
||||
|
<i class="el-icon-success my-success"></i> |
||||
|
<p class="font-size-21 font-weight-bold text-center fontSize1">恭喜您密码修改成功!</p> |
||||
|
<span class="font-size-13 text-center"> |
||||
|
{{timer}}秒后自动跳回登录页面,或 |
||||
|
<el-link :underline="false" type="primary" @click="goLogin">立即登录</el-link> |
||||
|
</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
userToTelphone, |
||||
|
sendMessage, |
||||
|
smsVerification, |
||||
|
setUpPassword |
||||
|
} from "@/api/login"; |
||||
|
export default { |
||||
|
name: "retrievePassword", |
||||
|
data() { |
||||
|
const checkAgainPassword = (rule, value, callback) => { |
||||
|
if (value != this.step2.newPass) { |
||||
|
return callback(new Error("两次输入密码不一致")); |
||||
|
} else { |
||||
|
callback(); |
||||
|
} |
||||
|
}; |
||||
|
return { |
||||
|
timer: 10, //返回的计时器 |
||||
|
tagTimer: null, //返回计时器的标记 |
||||
|
stepActive: 1, //步骤标记 |
||||
|
formLabelWidth: "120px", //form表单的lable宽度 |
||||
|
codeSrc: "", //图片地址 |
||||
|
step0: { |
||||
|
//操作步骤1的数据 |
||||
|
username: "" |
||||
|
}, |
||||
|
step0Rules: { |
||||
|
//操作步骤1的校验规则 |
||||
|
username: [{ required: true, message: "请输入账号", trigger: "blur" }] |
||||
|
}, |
||||
|
step1: { |
||||
|
//操作步骤2的数据 |
||||
|
telPhone: "", |
||||
|
// tcode:'', |
||||
|
code: null |
||||
|
}, |
||||
|
step1Rules: { |
||||
|
//操作步骤2的校验规则 |
||||
|
// tcode: [ |
||||
|
// { required: true, message: '请输入验证码', trigger: 'blur' } |
||||
|
// ], |
||||
|
code: [{ required: true, message: "请输入短信验证码", trigger: "blur" }] |
||||
|
}, |
||||
|
step2: { |
||||
|
//操作步骤3的数据 |
||||
|
telPhone: "", |
||||
|
newPass: "", |
||||
|
again: "" |
||||
|
}, |
||||
|
step2Rules: { |
||||
|
//操作步骤3的校验规则 |
||||
|
newPass: [ |
||||
|
{ required: true, message: "请输入新密码", trigger: "blur" }, |
||||
|
{ min: 8, max: 12, message: "长度在 8 到 12 个字符", trigger: "blur" } |
||||
|
], |
||||
|
again: [ |
||||
|
{ required: true, message: "请再次输入新密码", trigger: "blur" }, |
||||
|
{ validator: checkAgainPassword, trigger: "blur" } |
||||
|
] |
||||
|
}, |
||||
|
sendStatus: false, |
||||
|
codeTimer: 60 |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
// this.codeSrc = config.API_URL+"/api-login/common/verifycode?" + Math.random() |
||||
|
}, |
||||
|
methods: { |
||||
|
//下一步的校验与操作 |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate(valid => { |
||||
|
if (valid) { |
||||
|
if (formName == "step0") { |
||||
|
userToTelphone({ userName: this.step0.username }).then(res => { |
||||
|
this.step1.telPhone = res.data; |
||||
|
this.step2.telPhone = res.data; |
||||
|
this.stepActive++; |
||||
|
}); |
||||
|
} else if (formName == "step1") { |
||||
|
smsVerification(this.step1).then(res => { |
||||
|
this.stepActive++; |
||||
|
}); |
||||
|
} else if (formName == "step2") { |
||||
|
const param = { |
||||
|
userName: this.step0.username, |
||||
|
password: this.step2.newPass, |
||||
|
telPhone: this.step2.telPhone, |
||||
|
code: this.step1.code |
||||
|
}; |
||||
|
setUpPassword(param).then(res => { |
||||
|
this.stepActive++; |
||||
|
this.startTimer(); |
||||
|
}); |
||||
|
} |
||||
|
} else { |
||||
|
console.log("error submit!!"); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
getSendMessage() { |
||||
|
sendMessage({ telPhone: this.step1.telPhone }).then(res => { |
||||
|
this.$message({ |
||||
|
message: res.msg, |
||||
|
type: "success" |
||||
|
}); |
||||
|
this.codeTimer = 60; |
||||
|
this.sendStatus = true; |
||||
|
var flag = setInterval(() => { |
||||
|
if (this.codeTimer == 0) { |
||||
|
clearInterval(flag); |
||||
|
this.sendStatus = false; |
||||
|
} else { |
||||
|
this.codeTimer--; |
||||
|
} |
||||
|
}, 1000); |
||||
|
}); |
||||
|
}, |
||||
|
//成功的倒计时 |
||||
|
startTimer() { |
||||
|
this.timer = 10; |
||||
|
this.tagTimer = setInterval(() => { |
||||
|
if (this.timer == 0) { |
||||
|
this.goLogin(); |
||||
|
} else { |
||||
|
this.timer--; |
||||
|
} |
||||
|
}, 1000); |
||||
|
}, |
||||
|
//返回登录 |
||||
|
goLogin() { |
||||
|
clearInterval(this.tagTimer); |
||||
|
this.$router.push({ name: "login" }); |
||||
|
}, |
||||
|
//刷新验证码 |
||||
|
refreshCode: function() { |
||||
|
document |
||||
|
.getElementById("codePic") |
||||
|
.setAttribute( |
||||
|
"src", |
||||
|
config.API_URL + "/api-login/common/verifycode?" + Math.random() |
||||
|
); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.el-steps { |
||||
|
justify-content: center; |
||||
|
} |
||||
|
.step-block { |
||||
|
// width: 500px; |
||||
|
padding: 80px 50px; |
||||
|
} |
||||
|
|
||||
|
.code-refresh { |
||||
|
position: absolute; |
||||
|
// right: 2px; |
||||
|
top: 10px; |
||||
|
width: 25px; |
||||
|
height: 20px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.code-pic { |
||||
|
margin: 0 5px; |
||||
|
border: 1px solid rgba(220, 220, 220, 1); |
||||
|
border-radius: 3px; |
||||
|
width: 90px; |
||||
|
height: 32px; |
||||
|
vertical-align: middle; |
||||
|
// cursor: pointer; |
||||
|
} |
||||
|
.my-success { |
||||
|
font-size: 80px; |
||||
|
color: #20c05c; |
||||
|
} |
||||
|
.fontSize1 { |
||||
|
margin: 30px 0; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,148 @@ |
|||||
|
<template> |
||||
|
<div class="app-container"> |
||||
|
<div class="app-main"> |
||||
|
<el-form :model="form" :rules="rules" ref="userInfo" class="el-form-new"> |
||||
|
<el-form-item label="用户类型:" :label-width="formLabelWidth"> |
||||
|
<span>{{ userType[1]}}</span> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="用户名:" :label-width="formLabelWidth" prop="userName"> |
||||
|
<span>{{ param.userName }}</span> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="姓名:" :label-width="formLabelWidth" prop="realName"> |
||||
|
<span v-if="!isEdit">{{ param.realName }}</span> |
||||
|
<el-input v-else v-model="form.realName" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="身份证件号码:" :label-width="formLabelWidth"> |
||||
|
<span v-if="!isEdit">{{ param.idNumber }}</span> |
||||
|
<el-input v-else v-model="form.idNumber" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="邮箱:" :label-width="formLabelWidth" prop="email"> |
||||
|
<span v-if="!isEdit">{{ param.email }}</span> |
||||
|
<el-input v-else v-model="form.email" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="手机号:" :label-width="formLabelWidth" prop="phone"> |
||||
|
<span v-if="!isEdit">{{ param.phone }}</span> |
||||
|
<el-input v-else v-model="form.phone" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<div class="form-footer"> |
||||
|
<el-button type="danger" size="mini" v-if="!isEdit" @click="editInfo">编辑</el-button> |
||||
|
<div v-else> |
||||
|
<el-button type="danger" size="mini" @click="submitForm('userInfo')">确定</el-button> |
||||
|
<el-button type="info" size="mini" @click="resetForm('userInfo')">取消</el-button> |
||||
|
</div> |
||||
|
</div> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {getUserDetail, updateUserInfo, editPersonalCenter} from "@/api/user" |
||||
|
|
||||
|
export default { |
||||
|
name: 'userInfo', |
||||
|
data() { |
||||
|
return { |
||||
|
isEdit: false, |
||||
|
id: this.$store.getters.id || '', |
||||
|
formLabelWidth: '150px', |
||||
|
param: {}, |
||||
|
form: { |
||||
|
id:"", |
||||
|
userName: '', |
||||
|
realName: '', |
||||
|
idNumber: '', |
||||
|
email: '', |
||||
|
phone: '' |
||||
|
}, |
||||
|
rules: { |
||||
|
userName: [ |
||||
|
{required: true, message: '请输入用户名', trigger: 'blur'} |
||||
|
], |
||||
|
realName: [ |
||||
|
{required: true, message: '请输入姓名', trigger: 'blur'} |
||||
|
], |
||||
|
idNumber: [ |
||||
|
{message: '请输入身份证件号码', trigger: 'blur'} |
||||
|
], |
||||
|
email: [ |
||||
|
{required: true, message: '请输入邮箱', trigger: 'blur'} |
||||
|
], |
||||
|
phone: [ |
||||
|
{required: true, message: '请输入手机号', trigger: 'blur'} |
||||
|
] |
||||
|
}, |
||||
|
userType: {//用户类型 |
||||
|
1: '系统用户', |
||||
|
/*2: '公众用户', |
||||
|
3: '企业用户', |
||||
|
4: '政府用户',*/ |
||||
|
}, |
||||
|
/*userLevel: new Map([ //角色键值对 |
||||
|
[1, '系统用户'], |
||||
|
[2, '公众用户'], |
||||
|
[3, '企业用户'], |
||||
|
[4, '政府用户'] |
||||
|
]),*/ |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initData() |
||||
|
}, |
||||
|
methods: { |
||||
|
initData() { |
||||
|
getUserDetail({'id': this.id}).then(res => { |
||||
|
this.param = res.data |
||||
|
}) |
||||
|
}, |
||||
|
submitForm(formName) { |
||||
|
this.$refs[formName].validate((valid) => { |
||||
|
if (valid) { |
||||
|
const param = { |
||||
|
userType: 1, |
||||
|
id: this.form.id, |
||||
|
userName:this.form.userName, |
||||
|
phone: this.form.phone, |
||||
|
idNumber: this.form.idNumber, |
||||
|
name: this.form.realName, |
||||
|
email: this.form.email, |
||||
|
version: this.form.version |
||||
|
} |
||||
|
updateUserInfo(param).then(res => { |
||||
|
this.$message({ |
||||
|
message: res.msg, |
||||
|
type: res.code == 200 ? 'success' : 'error' |
||||
|
}); |
||||
|
let _obj = JSON.stringify(this.form) |
||||
|
this.param = JSON.parse(_obj); |
||||
|
this.isEdit = false |
||||
|
this.initData() |
||||
|
}) |
||||
|
} else { |
||||
|
console.log('error submit!!'); |
||||
|
return false; |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
editInfo() { |
||||
|
let _obj = JSON.stringify(this.param) |
||||
|
this.form = JSON.parse(_obj); |
||||
|
this.isEdit = true |
||||
|
}, |
||||
|
resetForm(formName) { |
||||
|
this.$refs[formName].resetFields(); |
||||
|
this.isEdit = false |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.form-footer { |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.el-form-new { |
||||
|
width: 400px; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,47 @@ |
|||||
|
const webpack = require('webpack') |
||||
|
module.exports = { |
||||
|
/* 部署生产环境和开发环境下的URL:可对当前环境进行区分,baseUrl 从 Vue CLI 3.3 起已弃用,要使用publicPath */ |
||||
|
// baseUrl: process.env.NODE_ENV === 'production' ? './' : '/',
|
||||
|
publicPath: './', |
||||
|
/* 输出文件目录:在npm run build时,生成文件的目录名称 */ |
||||
|
outputDir: 'dist', |
||||
|
/* 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 */ |
||||
|
assetsDir: "assets", |
||||
|
/* 是否在构建生产包时生成 sourceMap 文件,false将提高构建速度 */ |
||||
|
productionSourceMap: false, |
||||
|
/* 默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存,你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变) */ |
||||
|
filenameHashing: true, |
||||
|
css: { |
||||
|
// 是否使用css分离插件 ExtractTextPlugin
|
||||
|
extract: false, |
||||
|
// 开启 CSS source maps?
|
||||
|
// sourceMap: false,
|
||||
|
// css预设器配置项
|
||||
|
// loaderOptions: {},
|
||||
|
// 启用 CSS modules for all css / pre-processor files.
|
||||
|
// modules: false
|
||||
|
}, |
||||
|
/* 代码保存时进行eslint检测 */ |
||||
|
lintOnSave: true, |
||||
|
//兼容ES6
|
||||
|
// configureWebpack: config => {
|
||||
|
// config.entry.app = ['babel-polyfill','./src/main.ts'];
|
||||
|
// },
|
||||
|
pwa: { |
||||
|
iconPaths: { |
||||
|
favicon32 : 'favicon.ico', |
||||
|
favicon16 : 'favicon.ico', |
||||
|
appleTouchIcon: 'favicon.ico', |
||||
|
maskIcon : 'favicon.ico', |
||||
|
msTileImage : 'favicon.ico' |
||||
|
} |
||||
|
}, |
||||
|
transpileDependencies: ['webpack-dev-server/client'], |
||||
|
devServer: { |
||||
|
/* 自动打开浏览器 */ |
||||
|
open: true, |
||||
|
/* 设置为0.0.0.0则所有的地址均能访问 */ |
||||
|
host: '0.0.0.0', |
||||
|
port: 8080, |
||||
|
} |
||||
|
} |