对接首页的消息和待办

This commit is contained in:
qq787203167
2022-05-24 16:20:36 +08:00
parent d5e011e566
commit 57661ec11a
4 changed files with 152 additions and 15 deletions
+27
View File
@@ -0,0 +1,27 @@
<template>
<div class="JNoData">
<a-icon class="icon" type="inbox"/>
<br/>
{{$t('noData')}}
</div>
</template>
<script>
export default {
name: 'JNoData'
}
</script>
<style scoped>
.JNoData {;
position: absolute;
left: 50%;
text-align: center;
top: 50%;
transform: translate(-50%, -50%);
}
.icon {
font-size: 34px;
}
</style>
+2
View File
@@ -27,6 +27,7 @@ import JSwitch from './JSwitch.vue'
import JTime from './JTime.vue' import JTime from './JTime.vue'
import JTreeTable from './JTreeTable.vue' import JTreeTable from './JTreeTable.vue'
import JLoading from './JLoading.vue' import JLoading from './JLoading.vue'
import JNoData from './JNoData.vue'
//jerobiz //jerobiz
import JSelectDepart from '../jerobiz/JSelectDepart.vue' import JSelectDepart from '../jerobiz/JSelectDepart.vue'
import JSelectMultiUser from '../jerobiz/JSelectMultiUser.vue' import JSelectMultiUser from '../jerobiz/JSelectMultiUser.vue'
@@ -70,5 +71,6 @@ export default {
Vue.component('JSelectMultiUser', JSelectMultiUser) Vue.component('JSelectMultiUser', JSelectMultiUser)
Vue.component('JSelectRole', JSelectRole) Vue.component('JSelectRole', JSelectRole)
Vue.component('JSelectUserByDep', JSelectUserByDep) Vue.component('JSelectUserByDep', JSelectUserByDep)
Vue.component('JNoData', JNoData)
} }
} }
@@ -2,37 +2,90 @@
<div class="myList-box"> <div class="myList-box">
<div class="header-text"> <div class="header-text">
<div class="header-text-left">{{this.$t('myList')}}</div> <div class="header-text-left">{{this.$t('myList')}}</div>
<div class="header-text-right"> <div class="header-text-right" @click="moreClick">
{{$t('more')}} {{$t('more')}}
<img src="../../../assets/gengduo.png" alt=""> <img src="../../../assets/gengduo.png" alt="">
</div> </div>
</div> </div>
<div class="myList-box-content"> <div class="myList-box-content" v-if="dataSource.length > 0">
<div class="myList-box-content-box" v-for="item in 4"> <div class="myList-box-content-box" v-for="(item,index) in dataSource" :key="index" @click="prcClick(item)">
<div class="top"> <div class="top">
<span class="top-text">GB 7258 - 2017</span> <span class="top-text" :title="item.prcNum">{{item.prcNum}}</span>
<span class="top-admin">握手流程</span> <span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>
</div> </div>
<div class="button"> <div class="button">
2022-04-04 12:00:00 {{moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}}
</div> </div>
<div class="with"> <div class="with">
{{$t('Pending')}} {{$t('Pending')}}
</div> </div>
</div> </div>
</div> </div>
<div v-else style="height: 300px;position: relative">
<JNoData/>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
</template> </template>
<script> <script>
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import { mapGetters } from 'vuex'
import moment from 'moment'
export default { export default {
name: 'myList' name: 'myList',
data() {
return {
pageSize: 4,
pageNo: 1,
dataSource: [],
loading:false,
prcTypeName: {
1: this.$t('taskConfirmationProcess')
}
}
},
mounted() {
this.queryProcess()
},
methods: {
...mapGetters(['userInfo']),
queryProcess() {
this.loading = true
let parmes = {}
parmes.current = this.pageNo
parmes.size = this.pageSize
parmes.userId = this.userInfo().userId
postAction('task/todoTaskList', parmes).then((res) => {
this.dataSource = res.list || []
this.loading = false
})
},
moreClick() {
this.$router.push({
path: '/ProcessCenter'
})
},
prcClick(row) {
let index = row.taskIds.lastIndexOf(',')
row.taskIds = row.taskIds.slice(0, index)
if (row.prcType == '1') {
let newUrl = this.$router.resolve({
path: '/handshakeProcess',
query: row
})
window.open(newUrl.href, '_blank')
}
}
}
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.myList-box { .myList-box {
width: 100%; width: 100%;
position: relative;
.header-text { .header-text {
width: 100%; width: 100%;
@@ -50,6 +103,7 @@
font-weight: 400; font-weight: 400;
color: #9B9DA9; color: #9B9DA9;
margin-top: 6px; margin-top: 6px;
cursor: pointer;
} }
} }
@@ -66,7 +120,7 @@
box-sizing: border-box; box-sizing: border-box;
margin-bottom: 14px; margin-bottom: 14px;
position: relative; position: relative;
cursor: pointer;
.top { .top {
.top-text { .top-text {
font-size: 16px; font-size: 16px;
@@ -2,20 +2,20 @@
<div class="myNews-box"> <div class="myNews-box">
<div class="header-text"> <div class="header-text">
<div class="header-text-left">{{this.$t('myNews')}}</div> <div class="header-text-left">{{this.$t('myNews')}}</div>
<div class="header-text-right"> <div class="header-text-right" @click="moreClick">
{{$t('more')}} {{$t('more')}}
<img src="../../../assets/gengduo.png" alt=""> <img src="../../../assets/gengduo.png" alt="">
</div> </div>
</div> </div>
<div class="myNews-box-content"> <div class="myNews-box-content" v-if="dataSource.length > 0">
<div class="myNews-box-content-box" v-for="item in 4"> <div class="myNews-box-content-box" v-for="(item,index) in dataSource" :key="index" @click="magClick(item)">
<img src="../../../assets/wdxx.png" alt=""> <img src="../../../assets/wdxx.png" alt="">
<div class="content-box"> <div class="content-box">
<div class="top"> <div class="top" :title="item.msgContent">
XX向您推送了标准 GB 7258 - 2017 {{item.msgContent}}
</div> </div>
<div class="botton"> <div class="botton">
2022-04-04 12:00:00 {{item.sendTime}}
</div> </div>
</div> </div>
<div class="right"> <div class="right">
@@ -23,18 +23,70 @@
</div> </div>
</div> </div>
</div> </div>
<div v-else style="height: 300px;position: relative">
<JNoData/>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
</template> </template>
<script> <script>
import { getAction, putAction, deleteAction } from '@/api/manage'
export default { export default {
name: 'myNews' name: 'myNews',
data() {
return {
url: {
list: '/sys/sysAnnouncementSend/getMyAnnouncementSend',
readAllMsg: 'sys/sysAnnouncementSend/read'
},
loading: false,
pageNo: 1,
pageSize: 4,
dataSource: []
}
},
mounted() {
this.getList()
},
methods: {
getList() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
}
this.loading = true
getAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataSource = res.result.records || []
this.loading = false
} else {
this.loading = false
}
})
},
magClick(row) {
getAction(this.url.readAllMsg, { ids: row.id }).then((res) => {
})
this.$router.push({
path: '/system/MessageDetails',
query: row
})
},
moreClick() {
this.$router.push({
path: '/isps/userAnnouncement'
})
}
}
} }
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
.myNews-box { .myNews-box {
width: 100%; width: 100%;
position: relative;
.header-text { .header-text {
width: 100%; width: 100%;
@@ -52,6 +104,7 @@
font-weight: 400; font-weight: 400;
color: #9B9DA9; color: #9B9DA9;
margin-top: 6px; margin-top: 6px;
cursor: pointer;
} }
} }
@@ -65,6 +118,7 @@
border-radius: 4px; border-radius: 4px;
height: 68px; height: 68px;
margin-bottom: 14px; margin-bottom: 14px;
cursor: pointer;
img { img {
width: 36px; width: 36px;