82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
| <template>
 | |
|   <div class="notice-marquee_wrapper">
 | |
|     <marquee ref="mar" hspace="0" direction="left" width="500" @mouseout="start()" @mouseover="stop()">
 | |
|       <!-- <i class="el-icon-message-solid" /> -->
 | |
|       <svg-icon v-if="noticeList.length > 0" icon-class="speaker" />
 | |
|       <span v-for="item in noticeList" :key="item.Id" style="cursor:pointer;" @click="showDetail(item)">
 | |
|         {{ item.Content }}
 | |
|       </span>
 | |
|     </marquee>
 | |
|   </div>
 | |
| </template>
 | |
| <script>
 | |
| import { setSystemNoticeHaveRead } from '@/api/global'
 | |
| import { getBasicDataSelects } from '@/api/dictionary/dictionary'
 | |
| export default {
 | |
|   name: 'NoticeMarquee',
 | |
|   data() {
 | |
|     return {
 | |
|       noteType: []
 | |
|     }
 | |
|   },
 | |
|   computed: {
 | |
|     noticeList() {
 | |
|       return this.$store.state.global.noticeList || []
 | |
|     }
 | |
|   },
 | |
|   mounted() {
 | |
|     this.getDicData()
 | |
|   },
 | |
|   methods: {
 | |
|     start() {
 | |
|       this.$refs['mar'].start()
 | |
|     },
 | |
|     stop() {
 | |
|       this.$refs['mar'].stop()
 | |
|     },
 | |
|     showDetail(item) {
 | |
|       var currentNoticeType = ''
 | |
|       const i = this.noteType.findIndex(note => note.Code * 1 === item.NoticeTypeEnum)
 | |
|       if (i > -1) {
 | |
|         currentNoticeType = this.noteType[i].Value
 | |
|       }
 | |
|       const h = this.$createElement
 | |
|       this.$msgbox({
 | |
|         title: currentNoticeType,
 | |
|         message: h('span', null, item.Content),
 | |
|         beforeClose: (action, instance, done) => {
 | |
|           if (action === 'confirm') {
 | |
|             instance.confirmButtonLoading = true
 | |
|             setSystemNoticeHaveRead(item.Id).then(async res => {
 | |
|               if (res.IsSuccess) {
 | |
|                 await this.$store.dispatch('global/getNoticeList')
 | |
|               }
 | |
|               instance.confirmButtonLoading = false
 | |
|               done()
 | |
|             }).catch(() => { instance.confirmButtonLoading = false })
 | |
|           } else {
 | |
|             done()
 | |
|           }
 | |
|         }
 | |
|       })
 | |
|     },
 | |
|     getDicData() {
 | |
|       getBasicDataSelects(['NoteType']).then(res => {
 | |
|         this.noteType = res.Result.NoteType
 | |
|       })
 | |
|     }
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| <style lang="scss" scoped>
 | |
| .notice-marquee_wrapper{
 | |
|   /deep/ .el-dialog__header{
 | |
|     padding: 10px;
 | |
|   }
 | |
|   /deep/ .el-dialog__body{
 | |
|     padding: 10px 20px;
 | |
|     line-height: 25px;
 | |
|   }
 | |
| }
 | |
| </style>
 |