Blame view

ant-design-vue-jeecg/src/components/tools/ShowAnnouncement.vue 3.99 KB
zhangdaiscott authored
1
import xss from "xss"
2
<template>
3
4
  <j-modal
    :title="title"
5
    :width="modelStyle.width"
6
7
    :visible="visible"
    :bodyStyle ="bodyStyle"
8
    :switchFullscreen="switchFullscreen"
9
    @cancel="handleCancel"
10
   >
11
12
    <template slot="footer">
      <a-button key="back" @click="handleCancel">关闭</a-button>
13
      <a-button v-if="record.openType==='url'" type="primary" @click="toHandle">去处理</a-button>
14
    </template>
15
    <a-card class="daily-article" :loading="loading">
16
17
      <a-card-meta
        :title="record.titile"
18
19
        :description="'发布人:'+record.sender + ' 发布时间: ' + record.sendTime">
      </a-card-meta>
20
21
22
      <a-divider />
      <span v-html="record.msgContent" class="article-content"></span>
    </a-card>
23
  </j-modal>
24
25
26
</template>

<script>
27
  import {getUserList} from '@/api/api'
zhangdaiscott authored
28
  import xss from 'xss'
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  export default {
    name: "SysAnnouncementModal",
    components: {
    },
    data () {
      return {
        title:"通知消息",
        record: {},
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        visible: false,
46
        switchFullscreen: true,
47
48
49
50
        loading: false,
        bodyStyle:{
          padding: "0",
          height:(window.innerHeight*0.8)+"px",
51
52
          "overflow-y":"auto",
53
        },
54
55
56
57
58
        modelStyle:{
          width: '60%',
          style: { top: '20px' },
          fullScreen: false
        }
59
60
61
62
63
64
      }
    },
    created () {
    },
    methods: {
      detail (record) {
65
66
67
68
69
70
71
72
73
        //update-begin---author:wangshuai ---date:20220107  for:将其它页面传递过来的用户名改成用户真实姓名
        if(record.sender){
          getUserList({"username":record.sender}).then((res) =>{
            if(res.success && res.result.records.length>0){
                record.sender = res.result.records[0].realname
            }
          })
        }
        //update-end---author:wangshuai ---date:20220107  for:将其它页面传递过来的用户名改成用户真实姓名
74
        this.visible = true;
zhangdaiscott authored
75
76
77
78
79
        //update-begin-author:taoyan date:2022-7-14 for: VUEN-1702 【禁止问题】sql注入漏洞
        if(record.msgContent){
          record.msgContent = xss(record.msgContent)
        }
        //update-end-author:taoyan date:2022-7-14 for: VUEN-1702 【禁止问题】sql注入漏洞
80
81
82
83
84
        this.record = record;
      },
      handleCancel () {
        this.visible = false;
      },
85
86
87
88
89
90
91
92
93
94
95
      /** 切换全屏显示 */
      handleClickToggleFullScreen() {
        let mode = !this.modelStyle.fullScreen
        if (mode) {
          this.modelStyle.width = '100%'
          this.modelStyle.style.top = '20px'
        } else {
          this.modelStyle.width = '60%'
          this.modelStyle.style.top = '50px'
        }
        this.modelStyle.fullScreen = mode
96
97
      },
      toHandle(){
98
        if(this.record.openType==='url'){
99
100
101
102
103
          this.visible = false;
          //链接跳转
          this.$router.push({path: this.record.openPage})
        }
      },
104
105
106
107
    }
  }
</script>
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<style lang="less">
  .announcementCustomModal{
    .ant-modal-header {
      border: none;
      display: inline-block;
      position: absolute;
      z-index: 1;
      right: 56px;
      padding: 0;
      .ant-modal-title{
        .custom-btn{
          width: 56px;
          height: 56px;
          border: none;
          box-shadow: none;
        }
      }
    }
    .daily-article{
      border-bottom: 0;
    }
  }
</style>
131
132
<style scoped lang="less">
  .daily-article {
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
    .article-button {
      font-size: 1.2rem !important;
    }
    .ant-card-body {
      padding: 18px !important;
    }
    .ant-card-head {
      padding: 0 1rem;
    }
    .ant-card-meta {
      margin-bottom: 1rem;
    }
    .article-content {
      p {
        word-wrap: break-word;
        word-break: break-all;
        text-overflow: initial;
        white-space: normal;
        font-size: .9rem !important;
        margin-bottom: .8rem;
      }
    }
155
  }
156
</style>