Browse Source

个人中心

master
xuhuajiao 2 years ago
parent
commit
2b46ff70d8
  1. 105
      src/views/system/user/messageCenter/index.vue
  2. 226
      src/views/system/user/messageCenter/module/list.vue
  3. 24
      src/views/system/user/processCenter/index.vue

105
src/views/system/user/messageCenter/index.vue

@ -1,10 +1,10 @@
<template>
<div class="process-center">
<ul class="process-left">
<li class="active-li">系统通知</li>
<li>档案流程管理</li>
<li>流程完成提醒</li>
<li>赋权提醒</li>
<li :class="{'active-li': listIndex == 0}" @click="handleClick(0)">系统通知</li>
<li :class="{'active-li': listIndex == 1}" @click="handleClick(1)">档案流程管理</li>
<li :class="{'active-li': listIndex == 2}" @click="handleClick(2)">流程完成提醒</li>
<li :class="{'active-li': listIndex == 3}" @click="handleClick(3)">赋权提醒</li>
</ul>
<div class="process-right">
<div class="head-container">
@ -12,26 +12,11 @@
<el-button class="iconfont icon-biaojiyidu-fanbai" :disabled="!(selections.length)" size="mini" @click="handleRead">标记已读</el-button> -->
<el-input v-model="query.keyword" clearable size="small" placeholder="输入标题关键字搜索" prefix-icon="el-icon-search" class="filter-item" style="width: 225px;" />
<date-range-picker v-model="query.createTime" class="date-item" />
<el-button icon="el-icon-search" size="mini" class="user-search-btn" @click="getTableData">搜索</el-button>
<!-- @click="getTableData" -->
<el-button icon="el-icon-search" size="mini" class="user-search-btn">搜索</el-button>
<el-button class="iconfont icon-quanbuyidu" size="mini" @click="handleAllRead">全部已读</el-button>
</div>
<div class="message-center-list">
<div class="message-item">
<div class="message-date">2020-10-01 10:00:00</div>
<div class="message-cont">
<div class="message-cont-info">
<span class="message-type-title">系统通知</span>
<span class="is-read-tip">未读</span>
<div class="message-title">这是系统通知标题</div>
<ul class="message-list-info">
<li>创建人admin</li>
<li>创建时间2020-10-01 10:00:00</li>
</ul>
</div>
<div class="message-more">查看详情<i class="iconfont icon-chakan" /></div>
</div>
</div>
</div>
<MessageList :list-index="listIndex" />
</div>
</div>
</template>
@ -40,11 +25,12 @@
import DateRangePicker from '@/components/DateRangePicker'
import { getUserNotice, isread } from '@/api/system/logs'
import CRUD, { presenter, header, crud } from '@crud/crud'
import MessageList from './module/list.vue'
export default {
name: 'MessageCenter',
inject: ['reload'],
components: { DateRangePicker },
components: { DateRangePicker, MessageList },
mixins: [presenter(), crud(), header()],
cruds() {
return CRUD({
@ -59,12 +45,16 @@ export default {
query: {
createTime: [],
keyword: null
}
},
listIndex: 0
}
},
created() {
},
methods: {
handleClick(index) {
this.listIndex = index
},
//
handleRead() {
isread(this.getUserMsgId(this.selections)).then(res => {
@ -109,71 +99,4 @@ export default {
</script>
<style lang="scss" scoped>
.message-center-list{
height: calc(100% - 90px);
padding: 16px 30px;
margin-bottom: 20px;
background-color: #F5F5F5;
.message-item{
font-size: 14px;
.message-date{
text-align: center;
color: #A6ADB6;
}
.message-cont{
margin: 12px 0 16px 0;
background-color: #fff;
.message-cont-info{
position: relative;
padding: 16px 20px;
color: #545B65;
.message-type-title{
display: block;
padding-left: 33px;
height: 33px;
line-height: 33px;
background: url('~@/assets/images/icon/xttz.png') no-repeat left center;
background-size: 23px 23px;
}
.is-read-tip{
position: absolute;
right: 20px;
top: 16px;
font-size: 12px;
height: 20px;
line-height: 20px;
padding: 0 7px;
color: #ED4A41;
background-color: #FDEFEE;
border-radius: 3px;
}
.message-title{
margin: 8px 0 20px 0;
font-weight: 400;
color: #0C0E1E;
}
.message-list-info{
font-size: 12px;
line-height: 24px;
}
}
.message-more{
position: relative;
padding: 0 20px;
height: 40px;
line-height: 40px;
color: #545B65;
border-top: 1px solid #E6E8ED;
cursor: pointer;
i{
position: absolute;
right: 10px;
top: 0;
font-size: 12px;
color: #888D94;
}
}
}
}
}
</style>

226
src/views/system/user/messageCenter/module/list.vue

@ -0,0 +1,226 @@
<template>
<div class="message-center-list">
<div class="more-btn"><i class="iconfont icon-jiazaigengduo" />点击加载更多</div>
<div class="message-item" @click="handleDetail(isIndex)">
<div class="message-date">2020-10-01 10:00:00</div>
<div class="message-cont">
<div class="message-cont-info">
<span :class="['message-type-title',{'type-title1': isIndex === 0 },{'type-title2': isIndex === 1 },{'type-title3': isIndex === 2 },{'type-title4': isIndex === 3 }]">{{ title }}</span>
<span class="is-read-tip">未读</span>
<div class="message-title">这是系统通知标题</div>
<ul class="message-list-info">
<li>创建人admin</li>
<li>创建时间2020-10-01 10:00:00</li>
</ul>
</div>
<div class="message-more">查看详情<i class="iconfont icon-chakan" /></div>
</div>
</div>
<el-dialog :visible.sync="messageVisible" :modal-append-to-body="false" :close-on-click-modal="false" append-to-body title="消息详情">
<div class="setting-dialog">
<div class="message-detail">
<span :class="['message-type-title',{'type-title1': isIndex === 0 },{'type-title2': isIndex === 1 },{'type-title3': isIndex === 2 },{'type-title4': isIndex === 3 }]">{{ title }}</span>
<span class="detail-date">admin 2020-10-01 10:00:00</span>
<div class="message-title">这是系统通知标题</div>
<el-input v-model="opinionTxt" placeholder="请输入" type="textarea" :rows="10" />
</div>
<div slot="footer" class="dialog-footer">
<el-button v-if="isIndex===1" @click="dealWithCont">流程处理</el-button>
<el-button type="primary" @click="messageVisible=false">确定</el-button>
</div>
</div>
</el-dialog>
<detail ref="detail" />
</div>
</template>
<script>
import detail from '../../processCenter/module/detail.vue'
export default {
name: 'MessageList',
components: { detail },
props: {
listIndex: {
type: Number,
default: 0
}
},
data() {
return {
isIndex: 0,
title: '系统通知',
messageVisible: false,
opinionTxt: ''
}
},
watch: {
listIndex: function(newValue, oldValue) {
this.isIndex = newValue
this.getIndex()
}
},
created() {
},
mounted() {
},
methods: {
getIndex() {
console.log(this.isIndex)
switch (this.isIndex) {
case 0:
this.title = '系统通知'
this.opinionTxt = '这是一条系统通知'
break
case 1:
this.title = '有流程达到'
this.opinionTxt = '这是一条有流程达到提醒'
break
case 2:
this.title = '流程完成提醒'
this.opinionTxt = '这是一条流程完成提醒'
break
case 3:
this.title = '赋权到期提醒'
this.opinionTxt = '这是一条赋权到期提醒'
break
}
},
handleDetail(index) {
this.messageVisible = true
switch (index) {
case 0:
this.opinionTxt = '这是一条系统通知'
break
case 1:
this.opinionTxt = '这是一条有流程达到提醒'
break
case 2:
this.opinionTxt = '这是一条流程完成提醒'
break
case 3:
this.opinionTxt = '这是一条赋权到期提醒'
break
}
},
dealWithCont() {
this.$refs.detail.detailVisible = true
}
}
}
</script>
<style lang='scss' scoped>
.message-center-list{
height: calc(100% - 90px);
padding: 16px 30px;
margin-bottom: 20px;
background-color: #F5F5F5;
overflow: hidden;
overflow-y: scroll;
.more-btn{
margin-bottom: 30px;
line-height: 30px;
font-size: 14px;
text-align: center;
color: #0348F3;
cursor: pointer;
i{
display: inline-block;
}
}
.message-item{
font-size: 14px;
.message-date{
text-align: center;
color: #A6ADB6;
}
.message-cont{
margin: 12px 0 16px 0;
background-color: #fff;
.message-cont-info{
position: relative;
padding: 16px 20px;
color: #545B65;
.is-read-tip{
position: absolute;
right: 20px;
top: 16px;
font-size: 12px;
height: 20px;
line-height: 20px;
padding: 0 7px;
color: #ED4A41;
background-color: #FDEFEE;
border-radius: 3px;
}
.message-list-info{
font-size: 12px;
line-height: 24px;
}
}
.message-more{
position: relative;
padding: 0 20px;
height: 40px;
line-height: 40px;
color: #545B65;
border-top: 1px solid #E6E8ED;
cursor: pointer;
i{
position: absolute;
right: 10px;
top: 0;
font-size: 12px;
color: #888D94;
}
}
}
}
}
.message-type-title{
display: block;
padding-left: 33px;
height: 33px;
line-height: 33px;
&.type-title1{
background: url('~@/assets/images/icon/xttz.png') no-repeat left center;
background-size: 23px 23px;
}
&.type-title2{
background: url('~@/assets/images/icon/lcdd.png') no-repeat left center;
background-size: 23px 23px;
}
&.type-title3{
background: url('~@/assets/images/icon/lcwc.png') no-repeat left center;
background-size: 23px 23px;
}
&.type-title4{
background: url('~@/assets/images/icon/fqdq.png') no-repeat left center;
background-size: 23px 23px;
}
}
.message-title{
margin: 8px 0 20px 0;
font-weight: 400;
color: #0C0E1E;
}
.message-detail{
position: relative;
.detail-date{
position: absolute;
right: 0;
top: 0;
font-size: 12px;
line-height: 32px;
color: #A6ADB6;
}
.message-title{
margin: 10px 0 20px 0;
}
}
</style>

24
src/views/system/user/processCenter/index.vue

@ -1,15 +1,15 @@
<template>
<div class="process-center">
<ul class="process-left">
<li class="active-li">全部流程</li>
<li>归档审批流程</li>
<li>归档退回流程</li>
<li>赋权审批流程</li>
<li>内部移交流程</li>
<li>外部移交流程</li>
<li>外部接受流程</li>
<li>开放鉴定流程</li>
<li>销毁鉴定流程</li>
<li :class="{'active-li': listIndex == 0}" @click="handleClick(0)">全部流程</li>
<li :class="{'active-li': listIndex == 1}" @click="handleClick(1)">归档审批流程</li>
<li :class="{'active-li': listIndex == 2}" @click="handleClick(2)">归档退回流程</li>
<li :class="{'active-li': listIndex == 3}" @click="handleClick(3)">赋权审批流程</li>
<li :class="{'active-li': listIndex == 4}" @click="handleClick(4)">内部移交流程</li>
<li :class="{'active-li': listIndex == 5}" @click="handleClick(5)">外部移交流程</li>
<li :class="{'active-li': listIndex == 6}" @click="handleClick(6)">外部接受流程</li>
<li :class="{'active-li': listIndex == 7}" @click="handleClick(7)">开放鉴定流程</li>
<li :class="{'active-li': listIndex == 8}" @click="handleClick(8)">销毁鉴定流程</li>
</ul>
<div class="process-right">
<div class="head-container" style="display: flex; justify-content: space-between;">
@ -113,13 +113,17 @@ export default {
value: '选项3',
label: '全部'
}],
value: ''
value: '',
listIndex: 0
}
},
created() {
this.getTableData()
},
methods: {
handleClick(index) {
this.listIndex = index
},
dealWithCont() {
this.$refs.detail.detailVisible = true
},

Loading…
Cancel
Save