11 changed files with 1003 additions and 599 deletions
			
			
		- 
					8.env.development
- 
					12README.md
- 
					5src/api/login.js
- 
					5src/router/index.js
- 
					79src/router/routers.js
- 
					2src/store/modules/user.js
- 
					223src/views/forgetPassword.vue
- 
					74src/views/login.vue
- 
					448src/views/system/role/index.vue
- 
					265src/views/system/role/role.json
- 
					481src/views/system/user/index.vue
| @ -1,12 +1,16 @@ | |||
| ENV = 'development' | |||
| 
 | |||
| # 本地接口地址 | |||
| VUE_APP_BASE_API = '/dev-api' | |||
| #VUE_APP_BASE_API  = 'http://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插件 | |||
| 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