Browse Source

首页通告栏新增公告详情页面,通告详情页面增加附件预览;通告管理页面增加附件预览功能;新增考评预警规则页面列表,新增页面;

SunZehao 1 year ago
parent
commit
50734bd5ff

+ 193 - 0
src/components/gateWay/gateWayNotificationDetail.vue

@@ -0,0 +1,193 @@
+<template>
+    <div class="notificationDetail">
+        <el-dialog title="公告详情" custom-class="startToDia" v-model="dialogVisible" width="900px" :close-on-click-modal="false">
+            <div class="notifcaFrom">
+                <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">      
+                    <el-form-item label="公告标题" prop="noticeTitle">
+                        <el-input v-model="ruleForm.noticeTitle"  placeholder="请输入公告标题" />
+                    </el-form-item>
+                    <el-form-item label="公告内容" prop="noticeContent">
+                        <el-input v-model="ruleForm.noticeContent"
+                            type="textarea" :rows="10" placeholder="请输入公告内容"></el-input>
+                    </el-form-item>
+                    <el-form-item label="发布对象" prop="sendTo">
+                        <el-select v-model="ruleForm.sendTo" placeholder="请选择发布对象">
+                            <el-option
+                            v-for="item in sendToData"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12" v-if="ruleForm.sendTo === '个别部门'">
+                            <el-form-item label="个别部门" prop="sendToContent">
+                                <el-select v-model="ruleForm.sendToContent" multiple collapse-tags placeholder="请选择部门">
+                                    <el-option
+                                    v-for="item in departData"
+                                    :key="item.id"
+                                    :label="item.keyName"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="排序">
+                                <el-input-number v-model="ruleForm.serialNumber" :min="1" />
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-form-item label="附件">
+                        <div class="fliesHeader">
+                            <span>附件名</span>
+                            <span>发送单位</span>
+                            <span>操作</span>
+                        </div>
+                        <div v-for="it in filesListEdit" :key="it">
+                            <div class="fliesMain">
+                                <div>
+                                    <img :src="file" style="margin-right: 10px" >
+                                    <span class="fliesMainSpan spanOne">{{it}}</span>
+                                </div>
+                                <span class="fliesMainSpan spanTwo" style="font-size:14px">{{it.releaseDeptName}}</span>
+                                <!-- <span>{{userMes.unitName}}</span> -->
+                                <div class="fileOperate">
+                                    <div @click="previewFile(it)" style="cursor:pointer">
+                                        <img :src="yulan" style="margin-right: 10px;" >
+                                        <span style="font-size:14px">预览</span>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </el-form-item>
+                </el-form>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import yulan from '../../assets/btnIcon/yulan.png'
+import fileDelete from '../../assets/btnIcon/fileDelete.png'
+export default {
+    data() {
+        return {
+            dialogVisible: false,
+            ruleForm: {
+                serialNumber: 1,
+                noticeTitle: '',
+                noticeContent: '',
+                sendTo: '',
+                sendToContent: [],
+                releaseDept: '',
+                releasePeople: '',
+            },
+            filesListEdit: [],
+            yulan: yulan,
+            fileDelete: fileDelete
+        }
+    },
+    methods: {
+        init(row) {
+            this.dialogVisible = true
+            this.filesListEdit = []
+            this.ruleForm = {
+                serialNumber: row.serialNumber*1,
+                noticeTitle: row.noticeTitle,
+                noticeContent: row.noticeContent,
+                sendTo: row.sendTo,
+                sendToContent: row.sendToContent.split(','),
+                releaseDept: row.releaseDept,
+                releasePeople: row.releasePeople
+            }
+            let filesArr = row.noticeAnnex.split(',')
+            this.filesListEdit = filesArr
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.notificationDetail{
+    .el-overlay{
+        .startToDia{
+            margin-top: 5vh;
+            background: #EDEFF5;
+            .el-dialog__body{
+                padding: 30px 60px 30px 20px !important;
+                .notifcaFrom{
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .el-input{
+                        height: 30px;
+                    }
+                    .uploadFiles{
+                        .el-button{
+                            height: 25px !important;
+                        }
+                    }
+                    .fliesHeader{
+                        width: 100%;
+                        display: flex;
+                        justify-content: space-around;
+                        span{
+                            font-size: 14px;
+                        }
+                    }
+                    .fliesMain{
+                        width: 100%;
+                        display: flex;
+                        .fliesMainSpan{
+                            display: inline-block;
+                            width: 260px;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                            white-space: nowrap;
+                        }
+                        .spanOne{
+                            color: #1063CB;
+                            font-size: 14px;
+                        }
+                        .fileOperate{
+                            width: 160px;
+                            display: flex;
+                            justify-content: space-around;
+                            .removeImg{
+                                margin-right: 10px;
+                                position: relative;
+                                top: 2px;
+                            }
+                        }
+                        .removeDiv{
+                            width: 160px;
+                            .removeImg{
+                                margin: 0 10px 0 20px;
+                                position: relative;
+                                top: 3px;
+                            }
+                        }
+                    }
+                }
+                .flowSty{
+                    width: 100%;
+                    height: 70vh;
+                }
+            }
+            .el-dialog__footer{
+                background: #fff;
+                border-radius: 0 0 10px 10px;
+                text-align: left;
+                .notificationFooter{
+                    margin-left: 20px;
+                    .el-button{
+                        height: 30px !important;
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 7 - 2
src/components/gatewaynNewPage.vue

@@ -273,7 +273,7 @@
                         <div class="reportMain_msg" v-for="it in noticeData" :key="it.id">
                             <div class="rightDiv"></div>
                             <div class="rightTitMsg">
-                                <p>{{it.noticeTitle}}</p>
+                                <p @click="watchDetail(it)" style="cursor:pointer">{{it.noticeTitle}}</p>
                                 <div style="margin-top: 5px">
                                     <span style="margin-right: 10px">{{it.createTime.substring(0, it.createTime.indexOf(' '))}}</span>
                                     <span>{{it.releaseDeptName}}</span>
@@ -286,6 +286,7 @@
         </el-row>
         <year-from ref="yearFrom"></year-from>
         <season-from ref="seasonFrom"></season-from>
+        <notification-detail ref="notificationDetail"></notification-detail>
     </div>
 </template>
 
@@ -302,8 +303,9 @@ import {apiGetevaluationportallist, apiGetevaluationCircularDisplaylist} from '.
 
 import yearFrom from './gateWay/gatewayNewYearFrom.vue'
 import seasonFrom from './gateWay/gatewayNewSeasonFrom.vue'
+import notificationDetail from './gateWay/gateWayNotificationDetail.vue'
 export default {
-    components: {yearFrom, seasonFrom},
+    components: {yearFrom, seasonFrom, notificationDetail},
     data() {
         return {
             noticeData: [],
@@ -371,6 +373,9 @@ export default {
             }
             this.getGateWayData()
         },
+        watchDetail(row) {
+            this.$refs.notificationDetail.init(row)
+        },
         arrowLeft() {
             if (this.seasonStr === '第一季度') {
                 this.seasonStr = '第三季度'

+ 8 - 7
src/components/notification/notificationMangePage.vue

@@ -166,8 +166,7 @@
                                             <img :src="file" style="margin-right: 10px" >
                                             <span class="fliesMainSpan spanOne">{{it.name}}</span>
                                         </div>
-                                        <span class="fliesMainSpan spanTwo">国能(绥中)发电有限责任公司</span>
-                                        <!-- <span>{{userMes.unitName}}</span> -->
+                                        <span class="fliesMainSpan spanTwo">{{userMes.unitName}}</span>
                                         <div class="removeDiv">
                                             <!-- <div @click="previewFile(it)" style="cursor:pointer">
                                                 <img :src="yulan" style="margin-right: 10px;" >
@@ -188,7 +187,7 @@
                                             <img :src="file" style="margin-right: 10px" >
                                             <span class="fliesMainSpan spanOne">{{it.name}}</span>
                                         </div>
-                                        <span class="fliesMainSpan spanTwo">国能(绥中)发电有限责任公司</span>
+                                        <span class="fliesMainSpan spanTwo">{{it.releaseDeptName}}</span>
                                         <!-- <span>{{userMes.unitName}}</span> -->
                                         <div class="removeDiv">
                                             <!-- <div @click="previewFile(it)" style="cursor:pointer">
@@ -208,7 +207,7 @@
                                             <img :src="file" style="margin-right: 10px" >
                                             <span class="fliesMainSpan spanOne">{{it}}</span>
                                         </div>
-                                        <span class="fliesMainSpan spanTwo">国能(绥中)发电有限责任公司</span>
+                                        <span class="fliesMainSpan spanTwo">{{it.releaseDeptName}}</span>
                                         <!-- <span>{{userMes.unitName}}</span> -->
                                         <div class="fileOperate">
                                             <div @click="previewFile(it)" style="cursor:pointer">
@@ -328,7 +327,7 @@ export default {
         }
     },
     created() {
-        // this.userMes = JSON.parse(window.sessionStorage.getItem('user'))
+        this.userMes = JSON.parse(window.sessionStorage.getItem('user'))
         this.sendToData = [
             {
                 label: '所有单位',
@@ -569,13 +568,15 @@ export default {
             }
         },
         previewFile(it) {
-            this.filesVisible = true
+            // this.filesVisible = true
             let params = {
                 url: it
             }
-            debugger
             apiGetevaluationdeptnoticeFilePreview(params).then(datas =>{
                 if (datas) {
+                    const blob = new Blob([datas], {type: 'application/pdf'})
+                    const url = URL.createObjectURL(blob)
+                    window.open(url)
                     console.log('files', datas)
                 }
             })