朱思禹提交:1.完善邮件待办逻辑;2.完善皮肤设置功能;3.加添快速定位和回到顶部的功能。

init
Administrator 4 years ago
parent 4c8513a872
commit a3f38ed0df

@ -72,9 +72,6 @@
onWindowClick:function () {
window.removeEventListener("click",this.onWindowClick)
this.showBtns = false;
// if(e.path.every((item)=>{return item.className !== 'circle-menu-style'})){
//
// }
}
}
}

@ -2,7 +2,7 @@
<div class="detail-container">
<div class="title-container-style">
<div class="title-style">
{{type === 'info'?'查看件':'收件回复'}}
{{type === 'info'?'查看件':'收件回复'}}
</div>
<div v-if="type === 'info'" class="return-style" @click="returnList">
返回>
@ -116,8 +116,8 @@
this.getMailInfo();
},
methods:{
returnList:function(){
this.$emit("returnList",this.selectedMail.view_flag === 0);
returnList:function(isReply = false){
this.$emit("returnList",isReply);
},
cancel:function(){
if (this.type === "info"){
@ -161,7 +161,7 @@
isTestLogin:InterfaceConfig.reply.isTestLogin
}],(result)=>{
if (result[0].data.code === 2000){
this.returnList();
this.returnList(true);
}
})
}

@ -7,7 +7,7 @@
<span class="text-style" @click="selectType(1)"></span>
</div>
<div :class="['tab-style',{'selected':mailType === 2}]">
<span class="text-style" @click="selectType(2)">{{count > 0?'' + count + '':''}}</span>
<span class="text-style" @click="selectType(2)">/{{count > 0?'' + count + '':''}}</span>
</div>
</div>
<div v-if="isLoading === false && list.length === 0" class="tips-style">
@ -28,7 +28,10 @@
<div class="title-container-style">
<div class="title-style" style="color:#616b7c">接收到</div>
<div class="name-and-file-style">
<div class="mail-title-style" :title="item.mail_title">{{item.mail_title}}</div>
<div class="mail-title-style" :title="item.mail_title">
<span v-if="parseInt(item.urge_flag) === 1" style="color:red"></span>
{{item.mail_title}}
</div>
<div v-if="item.attachment && item.attachment.length > 0" class="attachment-style"
:title="item.attachment[0].name">
<a-icon type="paper-clip"></a-icon>
@ -37,8 +40,7 @@
</div>
</div>
</div>
<div class="status-div-style" :style="{width:item.view_flag === 2?'54px':'42px',
backgroundImage:'url(' + require('@/views/superFusionPlatform/mail/asset/'+item.statusImg)+ ')'}">
<div class="status-div-style" :style="{backgroundImage:'url(' + require('@/views/superFusionPlatform/mail/asset/'+item.statusImg)+ ')'}">
{{item.statusText}}
</div>
<div class="time-container-style">
@ -60,6 +62,7 @@
import {Spin,Avatar,Icon,Pagination} from 'ant-design-vue';
import InterfaceConfig from './interfaceConfig'
import CommonInterfaceConfig from '../../../commonInterface/interfaceConfig'
import TodoInterfaceConfig from '../mainPlatform/interfaceConfig'
import MailDetail from "./MailDetail"
export default {
name: "MailMain",
@ -94,12 +97,24 @@
this.getInboxData();
},
methods:{
onReturn:function(countChange){
if (countChange){
this.count -= 1
/*
* 是否回复后返回
* */
onReturn:function(isReply){
this.isLoading = true;
let staus = parseInt(this.checkMail.read_receipt);
if (this.mailType === 1){//
this.getInboxData();
this.getTodoCount();
}else{///
let view_flag = parseInt(this.checkMail.view_flag);//
let must_reply = parseInt(this.checkMail.must_reply);//
if (((view_flag === 0 && must_reply === 0) || (must_reply === 1 && isReply)) && this.list.length === 1 && this.page_number > 1){
//
this.page_number -= 1;
}
this.getTotoMail();
}
this.getInboxData();
this.type = 'list'
},
onMailClick:function(mail){
this.checkMail = mail;
@ -112,7 +127,33 @@
this.mailType = type;
this.isLoading = true;
this.page_number = 1;
this.getInboxData();
if(this.mailType === 1){
this.getInboxData();
}else{
this.getTotoMail();
}
},
getTotoMail:function(){
let params = {
bureau_id:this.BaseConfig.person_info_my.bureau_id,
dept_id:this.BaseConfig.person_info_my.dep_id,
person_id:this.BaseConfig.userInfo.person_id_cookie,
identity_id:this.BaseConfig.userInfo.identity_id_cookie,
person_biz_codes:'100001',
page_number:this.page_number,
page_size:this.page_size
};
this.InterfaceConfig.callInterface([{
url:TodoInterfaceConfig.getModuleTodoList.url,
params:params,
method:TodoInterfaceConfig.getModuleTodoList.method,
isTestLogin:TodoInterfaceConfig.getModuleTodoList.isTestLogin
}],(result)=>{
this.count = result[0].data.data.total_row;
this.setMailData(result);
})
},
getInboxData:function(){
let params = {
@ -122,9 +163,6 @@
page_size:this.page_size
}
if (this.mailType === 2){
params.view_flag = 0;
}
this.InterfaceConfig.callInterface([{
url:InterfaceConfig.listReceive.url,
params:params,
@ -132,30 +170,63 @@
isTestLogin:InterfaceConfig.listReceive.isTestLogin
}
],(result)=>{
let data = result[0].data.data;
this.total_page = data.total_page > 1?data.total_page:1;
this.total_row = data.total_row;
data.list.forEach((item)=>{
if (item.view_flag === 0){
item.statusImg = 'unread.png';
item.statusText = '未读';
}else if (item.view_flag === 1){
item.statusImg = 'read.png';
item.statusText = '已读';
}else if (item.view_flag === 2){
item.statusImg = 'reply.png';
item.statusText = '已回复';
}
this.getAvatarUrl(item);
let timeAry = item.create_time.split(" ");
item.time = timeAry[1];
let date = timeAry[0].split("-");
item.year = date[0];
item.monthAndDay = date[1] + "/" + date[2];
})
this.list = data.list
this.isLoading = false;
this.setMailData(result);
})
},
getTodoCount:function(){
let params = {
bureau_id:this.BaseConfig.person_info_my.bureau_id,
dept_id:this.BaseConfig.person_info_my.dep_id,
person_id:this.BaseConfig.userInfo.person_id_cookie,
identity_id:this.BaseConfig.userInfo.identity_id_cookie,
other_biz_codes:'100001',
}
this.InterfaceConfig.callInterface([{
url:TodoInterfaceConfig.getDesktopTodoNumbers.url,
params:params,
method:TodoInterfaceConfig.getDesktopTodoNumbers.method,
isTestLogin:TodoInterfaceConfig.getDesktopTodoNumbers.isTestLogin
}],(result)=>{
this.count = result[0].data.data["100001"];
})
},
setMailData:function(result){
let data = result[0].data.data;
this.total_page = data.total_page > 1?data.total_page:1;
this.total_row = data.total_row;
let listData = []
data.list.forEach((child)=>{
let item = this.mailType === 1?child:child.data_infomation;
let read_receipt = parseInt(item.read_receipt);
if (read_receipt === 10){
item.statusImg = 'unread.png';
item.statusText = '未读';
}else if (read_receipt === 20){
item.statusImg = 'unread.png';
item.statusText = '未读未回复';
}else if (read_receipt === 21){
item.statusImg = 'unread.png';
item.statusText = '已读未回复';
}else if (read_receipt === 11){
item.statusImg = 'read.png';
item.statusText = '已读';
}else if (read_receipt === 22){
item.statusImg = 'reply.png';
item.statusText = '已回复';
}
this.getAvatarUrl(item);
let timeAry = item.create_time.split(" ");
item.time = timeAry[1];
let date = timeAry[0].split("-");
item.year = date[0];
item.monthAndDay = date[1] + "/" + date[2];
listData.push(item);
})
this.list = listData;
this.type = 'list';
this.isLoading = false;
},
getAvatarUrl:function (item) {
this.InterfaceConfig.callInterface([{
@ -246,7 +317,7 @@
background-color: #e4eff5 !important;
}
.mail-info-style{
width: 590px;
width: 565px;
display: inline-block;
height: 82px;
vertical-align: top;
@ -299,6 +370,9 @@
}
}
.status-div-style{
width: 80px;
background-repeat: no-repeat;
background-size: 100% 100%;
display: flex;
align-items: center;
align-content: center;

@ -3,7 +3,7 @@
<a-spin v-if="isLoading" size="large" tip="正在加载,请稍候..." class="spin-style"/>
<template v-else>
<top-bar :total_notice="totalNotice" :total_todo="todo_count" :unread_mail="mailCount" :crmData="crmData" :moduleAndLayoutData="moduleLayout" ref="topBarRef"/>
<div class="content-style">
<div class="content-style" ref="contentRef">
<div class="deal-and-notice-style">
<Message class="content-child-style" style="width:calc(100% * 460 / 1680);background-color: #4baafe"/>
<Deal class="content-child-style" style="width:calc(100% * 642 / 1680);background-color: white" :countData="todoCount"/>
@ -15,6 +15,7 @@
<component v-if="modalObject.show" :is="childDom" v-bind="modalObject.params"></component>
</FusionModalPanel>
<circle-menu class="circle-menu-style" mainText="更多操作" mainBtn="icon-settings" :btnAry="circleBtnAry" @btnClick="circleBtnClick"/>
<QuickPositioning :positionData="layoutData.showModule" @quickPosition="onQuickPositioning"/>
</template>
</div>
</template>
@ -33,6 +34,7 @@
import {color} from './shortcut/appConfig'
import _ from 'lodash'
import CircleMenu from '../../../components/common/circleMenu/CircleMenu';
import QuickPositioning from './quickPositioning/QuickPositioning'
export default {
name: "MainPlatform",
data:function(){
@ -84,7 +86,8 @@
Deal,
Application,
ASpin:Spin,
CircleMenu
CircleMenu,
QuickPositioning
},
computed:{
totalNotice:function(){
@ -125,9 +128,19 @@
}
},
methods:{
/*
* 快速定位
* */
onQuickPositioning:function(id){
let dom = document.getElementById("module_" + id);
if (dom){
this.$refs.contentRef.scrollTop = dom.offsetTop - 100;
}
},
circleBtnClick:function(item){
switch (item.id) {
case 'toTop':
this.$refs.contentRef.scrollTop = 0;
break;
case 'talk':
if (this.$refs.topBarRef){

@ -2,7 +2,8 @@
<div class="module-main-style">
<template v-if="moduleDataList && moduleDataList.length > 0">
<template v-for="moduleType in moduleDataList" >
<div v-if="moduleType.module_list.length > 0" :key="moduleType.module_type_id" class="module-type-class">
<div v-if="moduleType.module_list.length > 0" :key="moduleType.module_type_id" class="module-type-class"
:id="'module_' + moduleType.module_type_id">
<a-divider class="divider-style">
<span class="type-name-style">{{moduleType.module_type_name}}</span>
</a-divider>

@ -90,53 +90,43 @@ export const layoutData=[
export const themeData=[
{'id':'default','name':'经典蓝','--platTitle':'#0182ff','--btnBgc':'#1089fe','--btnBor':'#1a90ff','--btnHover':'#0174e3',
'--modTitleOne':'#038aff','--modTitleTwo':'#3ea0ff','--noticeOne':'#4baafe','--noticeTwo':'#92c8fe','--todoOne':'#fb6252',
'--todoTwo':'#eb4044','--todoOneBtn':'#00bdfa','--todoTwoBtn':'#0162eb','--appOne':'#ffad5d','--appTwo':'#ff962f',
img:'default.png',selectedImg:'default-selected.png'},
'--todoTwo':'#eb4044','--todoOneBtn':'#00bdfa','--todoTwoBtn':'#0162eb','--appOne':'#ffad5d','--appTwo':'#ff962f','--quickPositioningBgc':'#0182ff'},
{'id':'light-grass-green','name':'浅草绿','--platTitle':'#66bb6a','--btnBgc':'#6cB870','--btnBor':'#6dd072','--btnHover':'#54a358',
'--modTitleOne':'#66bb6a','--modTitleTwo':'#86d68a','--noticeOne':'#81c485','--noticeTwo':'#aed9b1','--todoOne':'#fe7e73',
'--todoTwo':'#eb5440','--todoOneBtn':'#37c2fa','--todoTwoBtn':'#66bb6e','--appOne':'#ffad5d','--appTwo':'#ff962f',
img:'lake-blue.png',selectedImg:'lake-blue-selected.png'},
'--todoTwo':'#eb5440','--todoOneBtn':'#37c2fa','--todoTwoBtn':'#66bb6e','--appOne':'#ffad5d','--appTwo':'#ff962f','--quickPositioningBgc':'#66bb6a'},
{'id':'creamy-coffee','name':'乳脂咖','--platTitle':'#b3a184','--btnBgc':'#c1ae8f','--btnBor':'#c7b494','--btnHover':'#a79373',
'--modTitleOne':'#b3a184','--modTitleTwo':'#c7b79c','--noticeOne':'#c7b79c','--noticeTwo':'#dbcdb7','--todoOne':'#84b4fb',
'--todoTwo':'#6089c1','--todoOneBtn':'#ef7d8c','--todoTwoBtn':'#4799d4','--appOne':'#ffab8b','--appTwo':'#ef845c',
img:'yelan-green.png',selectedImg:'yelan-green-selected.png'},
'--todoTwo':'#6089c1','--todoOneBtn':'#ef7d8c','--todoTwoBtn':'#4799d4','--appOne':'#ffab8b','--appTwo':'#ef845c','--quickPositioningBgc':'#b3a184'},
{'id':'ocean-green','name':'海洋绿','--platTitle':'#17c4b5','--btnBgc':'#18ccbd','--btnBor':'#1ad6c6','--btnHover':'#12998e',
'--modTitleOne':'#11998e','--modTitleTwo':'#38d2c5','--noticeOne':'#6ab5ef','--noticeTwo':'#6cd2bc','--todoOne':'#f4729d',
'--todoTwo':'#f55b8e','--todoOneBtn':'#18c3b6','--todoTwoBtn':'#38a2ee','--appOne':'#f4a53d','--appTwo':'#f19113',
img:'cherry-pink.png',selectedImg:'cherry-pink-selected.png'},
'--todoTwo':'#f55b8e','--todoOneBtn':'#18c3b6','--todoTwoBtn':'#38a2ee','--appOne':'#f4a53d','--appTwo':'#f19113','--quickPositioningBgc':'#17c4b5'},
{'id':'midnight-blue','name':'午夜蓝','--platTitle':'#1f56b2','--btnBgc':'#296cdd','--btnBor':'#0673dd','--btnHover':'#124498',
'--modTitleOne':'#468bff','--modTitleTwo':'#5f9bff','--noticeOne':'#54b7cd','--noticeTwo':'#7bb5f1','--todoOne':'#fe7466',
'--todoTwo':'#ea4c50','--todoOneBtn':'#00befa','--todoTwoBtn':'#0161eb','--appOne':'#fea854','--appTwo':'#fb830e',
img:'lemon-yellow.png',selectedImg:'lemon-yellow-selected.png'},
'--todoTwo':'#ea4c50','--todoOneBtn':'#00befa','--todoTwoBtn':'#0161eb','--appOne':'#fea854','--appTwo':'#fb830e','--quickPositioningBgc':'#1f56b2'},
{'id':'cornflower-blue','name':'矢车菊蓝','--platTitle':'#83baff','--btnBgc':'#6ba7f3','--btnBor':'#91c3ff','--btnHover':'#59cfff',
'--modTitleOne':'#5f9fff','--modTitleTwo':'#83baff','--noticeOne':'#9bc5fa','--noticeTwo':'#90d2ed','--todoOne':'#6ae5c5',
'--todoTwo':'#29c19b','--todoOneBtn':'#116fde','--todoTwoBtn':'#36e1f0','--appOne':'#6ee5e9','--appTwo':'#3fc0c4',
img:'classic-blue.png',selectedImg:'classic-blue-selected.png'},
'--todoTwo':'#29c19b','--todoOneBtn':'#116fde','--todoTwoBtn':'#36e1f0','--appOne':'#6ee5e9','--appTwo':'#3fc0c4','--quickPositioningBgc':'#83baff'},
{'id':'peach','name':'蜜桃粉','--platTitle':'#f7c8ce','--btnBgc':'#f794a8','--btnBor':'#ffcbd2','--btnHover':'#e46e86',
'--modTitleOne':'#f5aebc','--modTitleTwo':'#ffcfd5','--noticeOne':'#f1a8b7','--noticeTwo':'#f6d6db','--todoOne':'#8ae2e6',
'--todoTwo':'#5cc8cc','--todoOneBtn':'#f785b0','--todoTwoBtn':'#ff748f','--appOne':'#fabede','--appTwo':'#e6a1c5',
img:'lavender.png',selectedImg:'lavender-selected.png'},
'--todoTwo':'#5cc8cc','--todoOneBtn':'#f785b0','--todoTwoBtn':'#ff748f','--appOne':'#fabede','--appTwo':'#e6a1c5','--quickPositioningBgc':'#f2bcc3'},
{'id':'peruvian-brown','name':'秘鲁棕','--platTitle':'#c18672','--btnBgc':'#d7947d','--btnBor':'#dc9d88','--btnHover':'#aa6d59',
'--modTitleOne':'#bd7d69','--modTitleTwo':'#db9881','--noticeOne':'#d1a89b','--noticeTwo':'#e6c4b9','--todoOne':'#f8ac60',
'--todoTwo':'#db8e40','--todoOneBtn':'#eb6380','--todoTwoBtn':'#eb6452','--appOne':'#fb9c96','--appTwo':'#ea6359',
img:'almond-white.png',selectedImg:'almond-white-selected.png'},
'--todoTwo':'#db8e40','--todoOneBtn':'#eb6380','--todoTwoBtn':'#eb6452','--appOne':'#fb9c96','--appTwo':'#ea6359','--quickPositioningBgc':'#c18672'},
{'id':'taro-purple','name':'香芋紫','--platTitle':'#857896','--btnBgc':'#aa99bf','--btnBor':'#857896','--btnHover':'#6d6080',
'--modTitleOne':'#857896','--modTitleTwo':'#9d8fa5','--noticeOne':'#b8b2bf','--noticeTwo':'#d8cfd4','--todoOne':'#81c486',
'--todoTwo':'#53ab53','--todoOneBtn':'#cb80b4','--todoTwoBtn':'#947bcb','--appOne':'#e1ca87','--appTwo':'#c4a957',
img:'lavender.png',selectedImg:'lavender-selected.png'},
'--todoTwo':'#53ab53','--todoOneBtn':'#cb80b4','--todoTwoBtn':'#947bcb','--appOne':'#e1ca87','--appTwo':'#c4a957','--quickPositioningBgc':'#857896'},
{'id':'deDay-black','name':'墨黛黑','--platTitle':'#212121','--btnBgc':'#5b5b5b','--btnBor':'#6b6b6b','--btnHover':'#1c424d',
'--modTitleOne':'#212121','--modTitleTwo':'#535c5c','--noticeOne':'#616162','--noticeTwo':'#757a71','--todoOne':'#8c9993',
'--todoTwo':'#8c9993','--todoOneBtn':'#6e9d9f','--todoTwoBtn':'#325953','--appOne':'#719999','--appTwo':'#719999',
img:'lavender.png',selectedImg:'lavender-selected.png'}
'--todoTwo':'#8c9993','--todoOneBtn':'#6e9d9f','--todoTwoBtn':'#325953','--appOne':'#719999','--appTwo':'#719999','--quickPositioningBgc':'#212121'}
]
/*
* 默认显示mouduleId

@ -0,0 +1,113 @@
<template>
<div v-if="show === false" class="quick-tag-style" @click.stop="showPanel">
<a-icon type="environment" style="margin-bottom: 4px"/>
<div class="quick-name-style">快速定位</div>
</div>
<div v-else class="quick-panel-style">
<template v-for="moduleTitle in moduleData">
<div v-if="moduleTitle.module_list.length > 0" :key="moduleTitle.module_type_id" class="module-title-style"
@click="btnClick(moduleTitle.module_type_id)" :title="moduleTitle.module_type_name">
{{moduleTitle.module_type_name}}
</div>
</template>
</div>
</template>
<script>
import {Icon} from 'ant-design-vue';
import _ from 'lodash'
export default {
name: "QuickPositioning",
props:["positionData"],
data:function () {
return{
show:false,
moduleData:this.positionData && Array.isArray(this.positionData)?_.cloneDeep(this.positionData):[]
}
},
components:{
AIcon:Icon,
},
methods:{
showPanel:function () {
this.show = true;
},
onWindowClick:function () {
window.removeEventListener("click",this.onWindowClick)
this.show = false;
},
btnClick:function (id) {
this.$emit("quickPosition",id)
}
},
updated(){
if (this.show){
window.addEventListener("click",this.onWindowClick)
}
},
watch:{
positionData:function (newData) {
this.moduleData = newData && Array.isArray(newData)?_.cloneDeep(newData):[]
}
}
}
</script>
<style scoped lang="scss">
.quick-tag-style{
position: absolute;
right: 0;
top: calc(50vh - 50px);
width: 34px;
height: 100px;
display: flex;
flex-direction: column;
align-content: center;
align-items: center;
justify-content: center;
justify-items: center;
background-color: var(--quickPositioningBgc);
font-size: 14px;
color: white;
border-radius: 2px;
cursor: pointer;
.quick-name-style{
width: 14px;
line-height: 15px;
font-weight: bold;
}
}
.quick-panel-style{
display: flex;
flex-direction: column;
position: absolute;
right: 0;
top: calc(50vh - 50px);
width: 140px;
height: 270px;
padding: 20px;
background-color: var(--quickPositioningBgc);
border-radius: 8px;
justify-content: space-between;
.module-title-style{
width: 100%;
height: 30px;
border:1px solid #ffffff;
line-height: 30px;
text-align: center;
overflow: hidden;
word-break: keep-all;
white-space: nowrap;
border-radius: 15px;
font-size: 14px;
color: white;
cursor: pointer;
&:hover{
color:#f46c1a;
background: linear-gradient(to bottom,#fff1c2,#ffffff);
background:-moz-linear-gradient(to bottom,#fff1c2,#ffffff);
background:-webkit-linear-gradient(bottom,#fff1c2,#ffffff);
}
}
}
</style>

@ -13,4 +13,5 @@
--todoTwoBtn:'';//2
--appOne:'';//1
--appTwo:'';//2
--quickPositioningBgc:''//
}

Loading…
Cancel
Save