Browse Source

消息中心

master
guoxing 2 years ago
parent
commit
6d92c07a73
  1. 66
      base-ui/src/router/index.js
  2. 487
      base-ui/src/views/Home/Home.vue
  3. 90
      base-ui/src/views/login/login.vue
  4. 7
      base-ui/src/views/risk/thresholdAnalysis.vue

66
base-ui/src/router/index.js

@ -23,7 +23,7 @@ export const constantRoutes = [
},
{
path: '/',
redirect: 'index'
redirect: 'login'
},
{
path: '/login',
@ -54,6 +54,7 @@ export const constantRoutes = [
},
]
},
// 客户中心
{
path: 'customer',
component: Layout,
@ -166,50 +167,32 @@ export const constantRoutes = [
meta: { title: '审批中心' },
children: [
{
path: '/404',
component: () => import('@/views/404'),
path: '/approvalCenter/readWork',
component: () => import('@/views/approvalCenter/readWork.vue'),
name: 'readWork',
meta: {title: '已阅工作',noCache: true,}
},
{
path: '/404',
component: () => import('@/views/404'),
path: '/approvalCenter/waitingWork',
component: () => import('@/views/approvalCenter/waitingWork.vue'),
name: 'waitingWork',
meta: {title: '待阅工作',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
path: '/approvalCenter/alreadyHandledWork',
component: () => import('@/views/approvalCenter/alreadyHandledWork.vue'),
name: 'alreadyHandledWork',
meta: {title: '已办工作',noCache: true,}
},
{
path: '/404',
component: () => import('@/views/404'),
path: '/approvalCenter/handledWork',
component: () => import('@/views/approvalCenter/handledWork.vue'),
name: 'handledWork',
meta: {title: '待办工作',noCache: true}
}
]
},
{
path: 'messageCenter',
component: Layout,
meta: { title: '消息中心' },
children: [
{
path: 'cgsq/PurchaseApplicationManagement',
component: () => import('@/views/404'),
name: 'PurchaseApplicationManagement',
meta: {title: '未读消息',noCache: true,}
},
{
path: 'xzgys',
component: () => import('@/views/404'),
name: 'supplierManagement',
meta: {title: '已读消息',noCache: true}
}
]
},
// 报表中心
{
path: 'reportCenter',
component: Layout,
@ -222,26 +205,28 @@ export const constantRoutes = [
meta: {title: '销售报表',noCache: true,}
},
{
path: 'reportCenter/goodsOnWay',
path: '/reportCenter/goodsOnWay',
component: () => import('@/views/reportCenter/goodsOnWay.vue'),
name: 'goodsOnWay',
meta: {title: '在途商品管理表',noCache: true}
}
]
},
// 风控管理
{
path: 'riskControlManagement',
component: Layout,
meta: { title: '风控管理' },
children: [
{
path: 'risk/thresholdAnalysis',
path: '/risk/thresholdAnalysis',
component: () => import('@/views/risk/thresholdAnalysis.vue'),
name: 'thresholdAnalysis',
meta: {title: '阀值分析',noCache: true,}
}
]
},
//监控中心
{
path: '/monitoringCenter',
component: Layout,
@ -256,6 +241,27 @@ export const constantRoutes = [
meta: { title: '视频监控' }
}]
},
//消息中心
{
path: 'messageCenter',
component: Layout,
meta: { title: '消息中心' },
children: [
{
path: '/messageCenter/unreadMessage',
component: () => import('@/views/messageCenter/unreadMessage.vue'),
name: 'unreadMessage',
meta: {title: '未读消息',noCache: true,}
},
{
path: '/messageCenter/readMessage',
component: () => import('@/views/messageCenter/readMessage.vue'),
name: 'readMessage',
meta: {title: '已读消息',noCache: true}
}
]
},
// 系统管理
{
path: 'systemManagement',
component: Layout,

487
base-ui/src/views/Home/Home.vue

@ -1,43 +1,488 @@
<template>
<div class="imgDemo">
<!--<el-button type="primary" @click="getToken()">token</el-button>
<div style="width: 200px;">{{token}}</div>-->
<div style="height: 100%;">
<div class="header">
<p class="title"><img src="../../assets/loginImg/lo_go.png" style="width: 45px;height: 45px;"/>汇融银行智能监管平台</p>
<div class="head_info">
<p>欢迎您{{ pNameAndDepartmentNameAndPostName }} {{ roleName }} {{ name }}</p>s
<p @click="logout()" class="dy"><img src="@/assets/images/dy.png"/></p>
</div>
</div>
<div class="container1">
<el-row :gutter="20">
<el-col :span="14">
<ul class="grid-content bg-ltop">
<li @click="todowork">
<div style="position: relative">
<el-badge v-if="shuliang.workCount !== 0" :value="shuliang.workCount" size="mini" class="mark"/>
<img src="@/assets/home/ltIcon1.png">
</div>
<p>待办工作</p>
</li>
<li @click="donework">
<img src="@/assets/home/ltIcon2.png">
<p>已办工作</p>
</li>
<li>
<img src="@/assets/home/ltIcon3.png">
<p>待阅工作</p>
</li>
<li>
<img src="@/assets/home/ltIcon4.png">
<p>已阅工作</p>
</li>
</ul>
</el-col>
<el-col :span="10">
<div class="grid-content bg-rtop">
<img class="anrui" src="@/assets/home/anrui.png"/>
<p class="rt_title">通知公告</p>
<ul>
<li>
<img class="rtImg" src="../../assets/home/notice.png"/>
<span class="notice">关于召开2021年公司全体员工大会的通知工大会的通知工大会的通知...</span>
<span class="anrui_time">2021-09-01</span>
</li>
<li>
<img src="../../assets/home/notice.png"/>
<span class="notice">关于召开2021年公司全体员工大会的通知工大会的通知工大会的通知</span>
<span class="anrui_time">2021-09-01</span>
</li>
<li>
<img src="../../assets/home/notice.png"/>
<span class="notice">关于召开2021年公司全体员工大会的通知</span>
<span class="anrui_time">2021-09-01</span>
</li>
<li>
<img src="../../assets/home/notice.png"/>
<span class="notice">关于召开2021年公司全体员工大会的通知</span>
<span class="anrui_time">2021-09-01</span>
</li>
<li>
<img src="../../assets/home/notice.png"/>
<span class="notice">关于召开2021年公司全体员工大会的通知</span>
<span class="anrui_time">2021-09-01</span>
</li>
</ul>
</div>
</el-col>
</el-row>
<ul class="bg-bottom">
<li @click="toNav(index)" v-for="(item,index) in menus" :key='index'>
<img :src="item.imgUrl">
<p>{{ item.title }}</p>
</li>
</ul>
<p class="copy">Copyright © {{ year }} 汇融银行 All Rights Reserved</p>
</div>
<el-dialog center :visible.sync="dialogVisible" width="40%" :show-close="false" :close-on-click-modal="false">
<el-form :model="form" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>原密码</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input v-model="form.original" type="password" show-password/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>新密码</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input v-model="form.password" type="password" show-password/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>确认密码</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input v-model="form.confirmPassword" type="password" show-password/></el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handleConirm"> </el-button>
<el-button size="small" @click="handleQuXiao"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {login1} from '@/api/system/user/login.js'
import { getStorage, removeStorage } from '@/utils/auth'
import User from '@/api/User/login.js'
// import { getTodoNum } from '@/api/system/home/home'
export default {
name: '',
data() {
return {
token:''
menus: [
{
imgUrl: require('@/assets/home/bIcon5.png'),
title: '客户中心'
},
{
imgUrl: require('@/assets/home/bIcon3.png'),
title: '审计中心'
}, {
imgUrl: require('@/assets/home/bIcon6.png'),
title: '报表中心'
}, {
imgUrl: require('@/assets/home/bIcon2.png'),
title: '预计中心'
}, {
imgUrl: require('@/assets/home/notice.png'),
title: '消息中心'
}, {
imgUrl: require('@/assets/home/bIcon7.png'),
title: '基础信息'
},{
imgUrl: require('@/assets/home/bIcon8.png'),
title: '系统管理'
}],
userInfo: {},
shuliang: {
workCount: ''
},
dialogVisible: false,
form: {
original: '',
password: '',
confirmPassword: '',
userSid: ''
},
timer: '',
Orgname: '',
departmentName: '',
name: '',
pNameAndDepartmentNameAndPostName: '',
roleName: '',
year: ''
}
},
created() {
this.getsPasswordByUserSid()
},
mounted() {
this.Orgname = window.sessionStorage.getItem('Orgname')
this.departmentName = window.sessionStorage.getItem('departmentName')
this.pNameAndDepartmentNameAndPostName = window.sessionStorage.getItem('pNameAndDepartmentNameAndPostName')
this.roleName = window.sessionStorage.getItem('roleName')
this.name = window.sessionStorage.getItem('name')
var nowDate = new Date()
this.year = nowDate.getFullYear()
},
methods: {
// getToken(){
// let params = {
// password: "329653",
// roleSid: "",
// token: "",
// userName: "15097329653",
// verifyCode: ""
getsPasswordByUserSid() {
User.selectPasswordByUserSid(window.sessionStorage.getItem('userSid')).then((resp) => {
if (resp.success && resp.data) {
this.dialogVisible = true
} else {
this.getNum()
this.timer = setInterval(this.getNum, 20000)
}
})
},
getNum() {
// getTodoNum(window.sessionStorage.getItem('userSid')).then((resp) => {
// if (resp.success) {
// this.shuliang.workCount = resp.data
// }
// login1(params).then(res => {
// this.token = res.data.token
// window.sessionStorage.setItem('token', res.data.token)
// })
},
handleConirm() {
if (this.form.original === '') {
this.$message({ showClose: true, type: 'error', message: '原密码不能为空' })
return
}
if (this.form.password !== this.form.confirmPassword) {
this.$message({ showClose: true, type: 'error', message: '两次输入密码不一致' })
return
}
this.form.userSid = window.sessionStorage.getItem('userSid')
User.updatePassword(this.form).then((resp) => {
if (resp.success) {
this.$alert('密码修改成功!请重新登录点击确定后退出。', '修改成功', {
confirmButtonText: '确定',
callback: action => {
this.handleQuXiao()
}
})
}
})
},
handleQuXiao() {
this.dialogVisible = false
this.form = {
original: '',
password: '',
confirmPassword: ''
}
User.logout({ token: getStorage() }).then((res) => {
if (res.success) {
removeStorage()
this.$store.commit('user/SET_UESRINFO', '')
this.$router.push({ path: '/login' })
}
})
},
todowork() {
window.open('/#/todo' + '?token=' + getStorage(), '_blank')
// this.$router.push({ path: '/todo' + '?token=' + getStorage() })
// window.open('http://127.0.0.1/message'+'?token='+getStorage(),'_blank')
},
donework() {
window.open('/#/done' + '?token=' + getStorage(), '_blank')
// this.$router.push({ path: '/done' + '?token=' + getStorage() })
// window.open('http://127.0.0.1/message'+'?token='+getStorage(),'_blank')
},
logout() {
this.$confirm('确定要退出吗, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
User.logout({ token: getStorage() }).then(res => {
removeStorage()
this.$store.commit('user/SET_UESRINFO', '')
this.$router.push({ path: '/login' })
})
})
},
toNav(index, name, titleName) {
// if (index == '9') {
// // this.$router.push({path: '/index'})
// let myPopup = window.open('/#/index', '_blank')
// } else if (index == '7') {
// let myPopup = window.open('http://anrui.yyundong.com/base/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/base/#/' + '?token=' + getStorage(), '_blank')
// } else if (index == '8') {
// let myPopup = window.open('http://anrui.yyundong.com/message/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/message/#/' + '?token=' + getStorage(), '_blank')
// } else if (index == '1') {
// let myPopup = window.open('http://anrui.yyundong.com/scm/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/scm/#/' + '?token=' + getStorage(), '_blank')
// } else if (index == '4') {
// let myPopup = window.open('http://anrui.yyundong.com/fin/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/fin/#/' + '?token=' + getStorage(), '_blank')
// } else if (index == '5') {
// let myPopup = window.open('http://anrui.yyundong.com/manage/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/manage/#/' + '?token=' + getStorage(), '_blank')
// } else if (index == '0') {
// let myPopup = window.open('http://anrui.yyundong.com/buscenter/#/' + '?token=' + getStorage(), '_blank')
// // let myPopup = window.open('http://120.46.172.184/buscenter/#/' + '?token=' + getStorage(), '_blank')
// }
// // const page = this.$router.resolve({name: name})
// // window.open(page.href,'_blank')
let myPopup = window.open('/#/index', '_blank')
}
},
beforeDestroy() {
clearInterval(this.timer)
}
}
</script>
<style scoped="scoped">
li:hover,
p:hover {
cursor: pointer
}
</style>
<style lang="scss" scoped>
.imgDemo {
p {
margin: 0;
padding: 0;
}
.header {
background-color: #0294d7;
color: #fff;
overflow: hidden;
height: 60px;
line-height: 60px;
.title {
img {
width: 70px;
vertical-align: middle;
font-family: Adobe Heiti Std;
}
float: left;
font-size: 34px;
margin-left: 35px;
height: 60px;
line-height: 60px;
}
.head_info {
float: right;
margin-top: 0;
font-size: 17px;
}
p {
float: left;
}
}
.head_info img {
width: 25px;
margin-top: 20px;
margin-left: 30px;
margin-right: 10px;
float: left;
}
.head_info .dy {
margin-left: 10px;
margin-right: 20px;
}
.container1 {
background: #E9F1F7;
padding: 20px;
width: 100%;
height: calc(100% - 60px);
margin: 0;
.bg-ltop {
margin: 0;
padding: 0 20px;
background-image: url(../../assets/home/ltBg.png);
border-radius: 10px;
overflow: hidden;
height: 190px;
li {
float: left;
list-style: none;
width: 25%;
text-align: center;
img {
width: 70px;
margin: 45px auto 10px auto;
}
}
}
.bg-rtop {
background-image: url(../../assets/home/rtBg.png);
border-radius: 10px;
height: 190px;
overflow: hidden;
position: relative;
.anrui {
width: 100%;
height: 100%;
background: radial-gradient(#fff,#f5f7f4, #fff);
height: 40px;
}
.rt_title {
position: absolute;
top: 10px;
left: 15px;
font-size: 18px;
font-family: SourceHanSerifCN;
font-weight: 600;
color: #191919;
}
ul {
margin: 0px auto;
padding: 0;
height: 148px;
width: 100%;
li {
font-size: 14px;
height: 33px;
line-height: 28px;
list-style: none;
text-decoration: underline;
border-bottom: 1px solid #666;
width: calc(100% - 70px);
margin-left: 40px;
position: relative;
padding-top: 10px;
font-family: SimSun;
img {
width: 16px;
margin: 5px 10px;
position: absolute;
left: -30px;
}
.notice {
display: inline-block;
width: 65%;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.anrui_time {
float: right;
display: inline-block;
margin-right: 5px;
line-height: 30px;
}
}
}
}
.bg-bottom {
background-image: url(../../assets/home/bottomBg.png);
border-radius: 10px;
overflow: hidden;
margin: 20px 0 0 0;
padding: 10px 20px;
li {
float: left;
list-style: none;
width: 11.6%;
margin: 10px 2.5%;
background: #fff;
border-radius: 40px;
text-align: center;
padding: 10px 25px 15px;
img {
width: 80%;
margin: 10px auto;
}
}
}
}
.copy {
position: fixed;
bottom: 0;
width: calc(100% - 40px);
margin: auto;
text-align: center;
line-height: 40px;
border-top: 2px solid #4E74A6;
background: #E9F1F7;
font-size: 14px;
color: #666;
}
.mark {
position: absolute;
top: 38%;
margin-left: 58px;
}
.mark {
::v-deep .el-badge__content {
font-size: 14px !important;
}
canvas {
}
</style>

90
base-ui/src/views/login/login.vue

@ -1,8 +1,8 @@
<template>
<div class="login">
<div class="logoTitle">
<img src="../../assets/loginImg/logo.png" /><span>安瑞集团</span>
<p class="title">安瑞集团信息化平台</p>
<img src="../../assets/loginImg/lo_go.png" style="width: 45px;height: 45px;"/><span>汇融银行</span>
<p class="title">汇融银行智能监管平台</p>
</div>
<div class="main">
<div class="content">
@ -22,16 +22,14 @@
</el-form-item>
<el-form-item>
<el-popover placement="top" width="400" trigger="click" v-model="loginCode" @show="codeShow">
<imgCodeRole @login="login" ref="imgCodeRole"></imgCodeRole>
<el-button slot="reference" type="primary" class="login-btn" v-loading="loading"> </el-button>
<!-- <imgCodeRole @login="login" ref="imgCodeRole"></imgCodeRole>-->
<!-- <el-button slot="reference" type="primary" class="login-btn" v-loading="loading"> </el-button>-->
<el-button slot="reference" type="primary" @click="login" class="login-btn" v-loading="loading"> </el-button>
</el-popover>
<!--<router-link :to="{name: 'registUser'}" target="_blank" tag="a" class="register fl">个人注册</router-link>
<router-link :to="{name: 'registOrg'}" target="_blank" tag="a" class="register fr">单位注册</router-link>-->
</el-form-item>
</el-form>
</div>
</div>
<el-dialog title="忘记密码" :visible.sync="forgetPwd">
<el-form :model="nopassword">
<el-form-item label="手机号">
@ -51,11 +49,9 @@
</template>
<script>
import { login, imgCode } from '@/api/user.js'
import user from '@/api/User/login.js'
import { setToken, getToken, setSession } from '@/utils/auth'
import imgCodeRole from '@/components/imgCodeRole/index.vue'
import qs from 'qs'
export default {
components: { imgCodeRole },
data() {
@ -64,7 +60,7 @@ export default {
userName: '',
password: '',
verifyCode: '',
uuid: '',
uuid: ''
},
imgCode: '',
loading: false,
@ -73,61 +69,64 @@ export default {
forgetPwd: false,
nopassword: {
userPhone: '',
userName: '',
},
userName: ''
}
}
},
methods: {
login(data) {
this.loading = true
this.loginForm.verifyCode = data.verifyCode
this.loginForm.uuid = data.uuid
this.$store
.dispatch('user/login', this.loginForm)
.then((res) => {
// this.$setStorage.dispatch('user/getInfo')
// this.loading = true
// this.loginForm.verifyCode = data.verifyCode
// this.loginForm.uuid = data.uuid
// this.$store.dispatch('user/login', this.loginForm).then((res) => {
// this.$router.push({ path: '/home' })
// this.loading = false
// }).catch(() => {
// this.loading = false
// this.$refs.imgCodeRole.getCodeImage()
// })
this.$router.push({ path: '/home' })
this.loading = false
})
.catch(() => {
this.loading = false
this.$refs.imgCodeRole.getCodeImage()
})
},
codeShow() {
if (this.loginForm.password == '' || this.loginForm.userName == '') {
this.loginCode = false
this.showMsg = true
return
}
this.$refs.imgCodeRole.getCodeImage()
// if (this.loginForm.password === '' || this.loginForm.userName === '') {
// this.loginCode = false
// this.showMsg = true
// return
// }
// this.$refs.imgCodeRole.getCodeImage()
},
reGetPwd() {
user.reGetPwd(this.nopassword).then((res) => {})
},
},
user.reGetPwd(this.nopassword).then((res) => {
})
}
}
}
</script>
<style lang="scss">
.login {
position: relative;
width: 100%;
height: 100%;
background-size: 100% 100%;
background-image: url(../../assets/loginImg/bgImg.png);
background-image: url(../../assets/loginImg/bjimg.png);
background-position: center;
overflow: hidden;
.logoTitle {
margin: 30px;
img {
width: 70px;
}
span {
font-size: 40px;
color: #191919;
}
.title {
font-size: 25px;
font-family: Source Han Sans CN;
@ -136,10 +135,11 @@ export default {
margin: 0;
}
}
.main {
width: 30%;
/*height: 640px;*/
background: #ffffff;
background: #FFFFFF;
box-shadow: 0px 13px 12px 0px rgba(0, 0, 0, 0.15);
opacity: 0.9;
border-radius: 20px;
@ -161,8 +161,10 @@ export default {
}
}
}
.login-form {
padding: 30px 50px;
.title1 {
margin: 0px auto 30px auto;
text-align: center;
@ -171,10 +173,12 @@ export default {
font-size: 23px;
font-weight: 500;
}
.el-input {
border: none;
background-color: transparent;
}
.code {
position: absolute;
top: 3px;
@ -184,6 +188,7 @@ export default {
cursor: pointer;
z-index: 9;
}
.nopsw {
position: absolute;
bottom: -30px;
@ -192,19 +197,22 @@ export default {
font-size: 15px;
line-height: 30px;
}
.register {
color: #018ad2;
}
.register:hover,
.nopsw:hover {
cursor: pointer;
}
.btn-eye {
cursor: pointer;
}
.text-danger {
color: #f56c6c;
color: #F56C6C;
}
.login-btn {
@ -213,20 +221,24 @@ export default {
background-color: #007fff;
border: 0;
}
.login-btn:hover {
background-color: #007fdd;
border: 0;
}
.el-input--prefix .el-input__inner {
border: 1px solid #018ad2;
background: transparent;
color: #333 !important;
}
.el-form-item {
margin-bottom: 40px;
}
.el-loading-mask {
background-color: rgba(255, 255, 255, 0.6);
background-color: rgba(255, 255, 255, .6);
}
}
</style>

7
base-ui/src/views/risk/thresholdAnalysis.vue

@ -33,8 +33,7 @@
<div style="margin-top: 30px;">
<el-table v-loading="tableLoading" :data="thresholdAnalysisTable" border style="width: 100%">
<el-table-column width="60" prop="num" label="序号" type="index" :index="indexMethod" abort=""
align="center" />
<el-table-column width="60" prop="num" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="date" label="数据日期" align="center" />
<el-table-column prop="stockValue" label="仓库货值(元)" align="center" />
<el-table-column prop="onWayGoodsValue" label="在途货值(元)" align="center" />
@ -114,7 +113,7 @@
],
queryParams: {
current: 1,
size: 10,
size: 5,
total: 0,
params: {
customerSid: '',
@ -319,7 +318,7 @@
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
size: 5,
total: 0,
params: {
customerSid: '',

Loading…
Cancel
Save