11 changed files with 1003 additions and 599 deletions
-
8.env.development
-
10README.md
-
5src/api/login.js
-
5src/router/index.js
-
69src/router/routers.js
-
2src/store/modules/user.js
-
223src/views/forgetPassword.vue
-
72src/views/login.vue
-
440src/views/system/role/index.vue
-
265src/views/system/role/role.json
-
481src/views/system/user/index.vue
@ -1,12 +1,16 @@ |
|||||
ENV = 'development' |
ENV = 'development' |
||||
|
|
||||
# 本地接口地址 |
# 本地接口地址 |
||||
|
VUE_APP_BASE_API = '/dev-api' |
||||
#VUE_APP_BASE_API = 'http://192.168.99.103:7000' |
#VUE_APP_BASE_API = 'http://192.168.99.103:7000' |
||||
#VUE_APP_WS_API = 'ws://192.168.99.103:7000' |
#VUE_APP_WS_API = 'ws://192.168.99.103:7000' |
||||
|
|
||||
|
#VUE_APP_BASE_API = 'http://192.168.99.207:7000' |
||||
|
#VUE_APP_WS_API = 'ws://192.168.99.207:7000' |
||||
|
|
||||
# 外网接口地址 |
# 外网接口地址 |
||||
VUE_APP_BASE_API = 'https://yxkadmin.aiyxlib.com' |
|
||||
VUE_APP_WS_API = 'wss://yxkadmin.aiyxlib.com' |
|
||||
|
#VUE_APP_BASE_API = 'https://yxkadmin.aiyxlib.com' |
||||
|
#VUE_APP_WS_API = 'wss://yxkadmin.aiyxlib.com' |
||||
|
|
||||
# 是否启用 babel-plugin-dynamic-import-node插件 |
# 是否启用 babel-plugin-dynamic-import-node插件 |
||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true |
VUE_CLI_BABEL_TRANSPILE_MODULES = true |
@ -1 +1,11 @@ |
|||||
多媒体信息发布平台 |
多媒体信息发布平台 |
||||
|
|
||||
|
## Getting started |
||||
|
|
||||
|
```bash |
||||
|
# install dependency |
||||
|
yarn install |
||||
|
|
||||
|
# develop |
||||
|
yarn run dev |
||||
|
``` |
@ -0,0 +1,223 @@ |
|||||
|
<template> |
||||
|
<div class="login" :style="'background-image:url('+ Background +');'"> |
||||
|
<el-form ref="modifyForm" :model="modifyForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form"> |
||||
|
<h3 class="title"> |
||||
|
多媒体信息发布平台-忘记密码 |
||||
|
</h3> |
||||
|
<el-form-item prop="phone"> |
||||
|
<el-input v-model="modifyForm.phone" type="text" auto-complete="off" placeholder="手机号"> |
||||
|
<svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" /> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item prop="code"> |
||||
|
<el-input v-model="modifyForm.code" auto-complete="off" placeholder="验证码" style="width: 63%" @keyup.enter.native="handleModify"> |
||||
|
<svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" /> |
||||
|
</el-input> |
||||
|
<div class="login-code"> |
||||
|
<el-button :disable="disabledSendCode" :type="disabledSendCode==false?'primary':'info'" size="medium" style="width:100%;" @click="countdown()"> |
||||
|
{{ verification }} |
||||
|
</el-button> |
||||
|
</div> |
||||
|
</el-form-item> |
||||
|
<el-form-item prop="password"> |
||||
|
<el-input v-model="modifyForm.password" type="password" auto-complete="off" placeholder="新密码" @keyup.enter.native="handleModify"> |
||||
|
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item prop="confirmPassword"> |
||||
|
<el-input v-model="modifyForm.confirmPassword" type="password" auto-complete="off" placeholder="确认密码" @keyup.enter.native="handleModify"> |
||||
|
<svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" /> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item style="width:100%;"> |
||||
|
<el-button :loading="loading" size="medium" type="primary" style="width:100%;" @click.native.prevent="handleModify"> |
||||
|
<span v-if="!loading">确定修改</span> |
||||
|
<span v-else>修改密码中...</span> |
||||
|
</el-button> |
||||
|
</el-form-item> |
||||
|
<el-form-item style="width:100%;"> |
||||
|
<el-button :loading="loading" size="medium" style="width:100%;"> |
||||
|
<span @click="toLogin()">登 录</span> |
||||
|
</el-button> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
<!-- 底部 --> |
||||
|
<div v-if="$store.state.settings.showFooter" id="el-login-footer"> |
||||
|
<span v-html="$store.state.settings.footerTxt" /> |
||||
|
<span> ⋅ </span> |
||||
|
<a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">{{ $store.state.settings.caseNumber }}</a> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
// import { encrypt } from '@/utils/rsaEncrypt' |
||||
|
import { isvalidPhone } from '@/utils/validate' |
||||
|
// import { getCodeImg } from '@/api/login' |
||||
|
import Background from '@/assets/images/background.jpg' |
||||
|
export default { |
||||
|
name: 'ForgetPassword', |
||||
|
data() { |
||||
|
// 自定义验证 |
||||
|
const validPhone = (rule, value, callback) => { |
||||
|
if (!value) { |
||||
|
callback(new Error('请输入手机号码')) |
||||
|
} else if (!isvalidPhone(value)) { |
||||
|
callback(new Error('请输入正确的11位手机号码')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
const validatePass = (rule, value, callback) => { |
||||
|
if (!value) { |
||||
|
callback(new Error('请输入新密码')) |
||||
|
} else if (value.toString().length < 6 || value.toString().length > 18) { |
||||
|
callback(new Error('密码长度为6-18位')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
const validatePass2 = (rule, value, callback) => { |
||||
|
if (value === '') { |
||||
|
callback(new Error('请再次输入密码')) |
||||
|
} else if (value !== this.modifyForm.password) { |
||||
|
callback(new Error('两次输入密码不一致!')) |
||||
|
} else { |
||||
|
callback() |
||||
|
} |
||||
|
} |
||||
|
return { |
||||
|
Background: Background, |
||||
|
disabledSendCode: false, |
||||
|
verification: '获取验证码', |
||||
|
countNum: 60, |
||||
|
modifyForm: { |
||||
|
phone: '', |
||||
|
password: '', |
||||
|
confirmPassword: '', |
||||
|
code: '', |
||||
|
uuid: '' |
||||
|
}, |
||||
|
loginRules: { |
||||
|
phone: [{ required: true, trigger: 'blur', validator: validPhone }], |
||||
|
password: [{ required: true, trigger: 'blur', validator: validatePass }], |
||||
|
confirmPassword: [{ required: true, trigger: 'blur', validator: validatePass2 }], |
||||
|
code: [{ required: true, trigger: 'change', message: '验证码不能为空' }] |
||||
|
}, |
||||
|
loading: false, |
||||
|
redirect: undefined |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
$route: { |
||||
|
handler: function(route) { |
||||
|
this.redirect = route.query && route.query.redirect |
||||
|
}, |
||||
|
immediate: true |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
}, |
||||
|
methods: { |
||||
|
getAuthCode() { |
||||
|
}, |
||||
|
countdown() { |
||||
|
if (this.disabledSendCode) { |
||||
|
return |
||||
|
} |
||||
|
if (!/^1\d{10}$/.test(this.modifyForm.phone)) { |
||||
|
this.$message.error('手机号错误,请重新输入') |
||||
|
return |
||||
|
} |
||||
|
this.getAuthCode() |
||||
|
this.disabledSendCode = true |
||||
|
this.countNum = 60 |
||||
|
const timer = setInterval(() => { |
||||
|
this.verification = this.countNum + 's后重新获取' |
||||
|
this.countNum -= 1 |
||||
|
if (this.countNum < 1) { |
||||
|
clearInterval(timer) |
||||
|
this.verification = '重新获取' |
||||
|
this.disabledSendCode = false |
||||
|
console.log('倒计时结束') |
||||
|
} |
||||
|
}, 1000) |
||||
|
}, |
||||
|
toLogin() { |
||||
|
this.$router.push(`/login`) |
||||
|
}, |
||||
|
handleModify() { |
||||
|
this.$refs.modifyForm.validate(valid => { |
||||
|
const params = { |
||||
|
phone: this.modifyForm.phone, |
||||
|
password: this.modifyForm.password, |
||||
|
confirmPassword: this.modifyForm.confirmPassword, |
||||
|
code: this.modifyForm.code, |
||||
|
uuid: this.modifyForm.uuid |
||||
|
} |
||||
|
// if (user.password !== this.cookiePass) { |
||||
|
// user.password = encrypt(user.password) |
||||
|
// } |
||||
|
if (valid) { |
||||
|
this.loading = true |
||||
|
this.$store.dispatch('Login', params).then(() => { |
||||
|
this.loading = false |
||||
|
this.$router.push({ path: this.redirect || '/' }) |
||||
|
}).catch(() => { |
||||
|
this.loading = false |
||||
|
this.getCode() |
||||
|
}) |
||||
|
} else { |
||||
|
console.log('error submit!!') |
||||
|
return false |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style rel="stylesheet/scss" lang="scss"> |
||||
|
.login { |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
height: 100%; |
||||
|
background-size: cover; |
||||
|
} |
||||
|
.title { |
||||
|
margin: 0 auto 30px auto; |
||||
|
text-align: center; |
||||
|
color: #707070; |
||||
|
} |
||||
|
|
||||
|
.login-form { |
||||
|
border-radius: 6px; |
||||
|
background: #ffffff; |
||||
|
width: 385px; |
||||
|
padding: 25px 25px 5px 25px; |
||||
|
.el-input { |
||||
|
height: 38px; |
||||
|
input { |
||||
|
height: 38px; |
||||
|
} |
||||
|
} |
||||
|
.input-icon{ |
||||
|
height: 39px;width: 14px;margin-left: 2px; |
||||
|
} |
||||
|
} |
||||
|
.login-code { |
||||
|
width: 33%; |
||||
|
display: inline-block; |
||||
|
height: 38px; |
||||
|
float: right; |
||||
|
.el-button--medium{ |
||||
|
font-size: 12px; |
||||
|
padding: 10px; |
||||
|
} |
||||
|
img{ |
||||
|
cursor: pointer; |
||||
|
vertical-align:middle |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,265 @@ |
|||||
|
[{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "权限", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1-1", |
||||
|
"Title": "全部" |
||||
|
}] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "素材库", |
||||
|
"children": [{ |
||||
|
"IsCheck": "true", |
||||
|
"Key": "2-1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2-2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "true", |
||||
|
"Key": "2-3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2-4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2-5", |
||||
|
"Title": "上传" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2-6", |
||||
|
"Title": "下载" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "内容发布", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3-1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3-2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3-3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3-4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3-5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "紧急通知", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "播放列表", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "查看" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "6", |
||||
|
"Title": "主题模板", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "查看" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "7", |
||||
|
"Title": "设备列表", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "8", |
||||
|
"Title": "开关机", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "9", |
||||
|
"Title": "权限管理", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "10", |
||||
|
"Title": "角色管理", |
||||
|
"children": [{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "1", |
||||
|
"Title": "全部" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "2", |
||||
|
"Title": "编辑" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "3", |
||||
|
"Title": "查看" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "4", |
||||
|
"Title": "删除" |
||||
|
}, |
||||
|
{ |
||||
|
"IsCheck": "False", |
||||
|
"Key": "5", |
||||
|
"Title": "添加" |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
Write
Preview
Loading…
Cancel
Save
Reference in new issue