Преглед изворни кода

本部部门业绩指标计划内容修改及其服务联调,本部部门绩效考核评级内容修改及其服务联调;考评系统首页开发(无服务联调);

SunZehao пре 1 година
родитељ
комит
eec3cf562a

+ 1 - 1
src/assets/css/main.css

@@ -235,7 +235,7 @@ a {
     color: #3B7AD1; 
 }
 .el-popper{
-    width: 300px;
+    width: 325px;
 }
 .el-popper .el-select-dropdown {
     min-width: 0 !important;

+ 145 - 37
src/components/assessment/evaluationDeptRatingPage.vue

@@ -1,14 +1,14 @@
 <template>
-    <div class="evaluationStart">
-        <div class="evaluationStartBtn">
+    <div class="evaluationRating">
+        <div class="evaluationRatingBtn">
             <div class="collectSeach">
                 <div class="exceed">
                     <span class="exceedSpan">部门名称:</span>
                     <el-input v-model="resDeptName" placeholder="请输入部门名称"></el-input>
                 </div>
                 <div class="exceed">
-                    <span class="exceedSpan">考评年度:</span>
-                    <el-input v-model="resAnnual" placeholder="请输入考评年度"></el-input>
+                    <span class="exceedSpan" style="width: 80px">考评年度:</span>
+                    <el-date-picker v-model="resAnnual" type="year" value-format="YYYY" placeholder="选择年份" />
                 </div>
                 <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
                 <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
@@ -29,8 +29,8 @@
                 @handleDelete="handleDelete"
                 ></btns>
             </div>
-            <div class="evaluationStartTableData">
-                <el-table :data="evaluationStartData" style="width: 100%" @select="rowClick" @select-all="rowClick">
+            <div class="evaluationRatingTableData">
+                <el-table :data="evaluationRatingData" style="width: 100%" @select="rowClick" @select-all="rowClick">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
                     <el-table-column type="index" label="序号" align="center"></el-table-column>
                     <el-table-column label="考评部门" width="200">
@@ -46,22 +46,19 @@
                         </template>
                     </el-table-column>
                     <el-table-column label="考评年度" prop="annual" />
-                    <el-table-column :label="it.label" :prop="it.value" v-for="it in monthArr" :key="it.value" />
-                    <el-table-column label="A级总数" prop="acount" />
-                    <el-table-column label="A级原因" prop="des" width="200">
+                    <el-table-column :label="it.label" :prop="it.value" v-for="it in monthArr" :key="it.value">
                         <template #default="scope">
-                            <div>
-                                <el-tooltip
-                                    class="box-item"
-                                    effect="customized"
-                                    :content="scope.row.acause"
-                                    placement="top"
-                                >
-                                    <span class="tooltipCC">{{scope.row.acause}}</span>
-                                </el-tooltip>
-                            </div>
+                            <el-tooltip
+                                class="box-item"
+                                effect="customized"
+                                :content="scope.row[it.value+'Content']"
+                                placement="top"
+                            >
+                                <span class="tooltipCCDes">{{scope.row[it.value]}}</span>
+                            </el-tooltip>
                         </template>
                     </el-table-column>
+                    <el-table-column label="A级总数" prop="acount" />
                 </el-table>
                 <el-pagination
                     @size-change="handleSizeChange"
@@ -97,7 +94,8 @@
                         <el-row>
                             <el-col :span="12">
                                 <el-form-item :label="it.label" :prop="it.value" v-for="it in monthArrLeft" :key="it.value">
-                                    <el-select v-model="ruleForm[it.value]" placeholder="请选择评级">
+                                    <el-select v-model="ruleForm[it.value]" placeholder="请选择评级" 
+                                    clearable @change="(val)=>changeAData(val, it)" @clear="(val)=>clearAData(val, it)">
                                         <el-option
                                         v-for="item in ratingArr"
                                         :key="item.value"
@@ -109,7 +107,8 @@
                             </el-col>
                             <el-col :span="12">
                                 <el-form-item :label="it.label" :prop="it.value" v-for="it in monthArrRight" :key="it.value">
-                                    <el-select v-model="ruleForm[it.value]" placeholder="请选择评级">
+                                    <el-select v-model="ruleForm[it.value]" placeholder="请选择评级"
+                                    clearable @change="(val)=>changeAData(val, it)" @clear="(val)=>clearAData(val, it)">
                                         <el-option
                                         v-for="item in ratingArr"
                                         :key="item.value"
@@ -120,8 +119,8 @@
                                 </el-form-item>
                             </el-col>
                         </el-row>
-                        <el-form-item label="A级原因" prop="acause">
-                            <el-input v-model="ruleForm.acause" :rows="5" type="textarea" placeholder="请输入A级原因"></el-input>
+                        <el-form-item :label="it.label+'通告'" :prop="it.value+'Content'" v-for="it in acauseDataArr" :key="it.value">
+                            <el-input v-model="ruleForm[it.value+'Content']" placeholder="请输入通告"></el-input>
                         </el-form-item>
                     </el-form>
                 </div>
@@ -154,7 +153,7 @@ export default {
             title: '',
             evalradio: {},
             changeDateSelect: [],
-            evaluationStartData:[],
+            evaluationRatingData:[],
             departData: [],
             page:{
                 pagesize: 12,
@@ -176,7 +175,18 @@ export default {
                 oct: '',
                 nov: '',
                 dece: '',
-                acause: ''
+                janContent: '',
+                febContent: '',
+                marContent: '',
+                aprContent: '',
+                mayContent: '',
+                junContent: '',
+                julContent: '',
+                augContent: '',
+                sepContent: '',
+                octContent: '',
+                novContent: '',
+                deceContent: ''
             },
             rules: {
                 department: [
@@ -185,8 +195,41 @@ export default {
                 year: [
                     { required: true, message: '请选择年份', trigger: 'change' }
                 ],
-                acause: [
-                    { required: true, message: '请输入A级原因', trigger: 'blur' }
+                janContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                febContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                marContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                aprContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                mayContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                junContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                julContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                augContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                sepContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                octContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                novContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
+                ],
+                deceContent: [
+                    { required: true, message: '请输入通告', trigger: 'blur' }
                 ]
             },
             resDeptName: '',
@@ -194,7 +237,8 @@ export default {
             monthArr: [],
             monthArrLeft: [],
             monthArrRight: [],
-            ratingArr: []
+            ratingArr: [],
+            acauseDataArr: []
         }
     },
     created() {
@@ -265,6 +309,7 @@ export default {
                 value: 'C'
             }
         ]
+        this.resAnnual = new Date().getFullYear().toString()
         this.getevaluRatingList()
         this.getDepartmentFromTreeData()
     },
@@ -280,7 +325,7 @@ export default {
             }
             apiGetevaluationdeptratinglist(params).then(datas =>{
                 if (datas && datas.data) {
-                    that.evaluationStartData = datas.data.records
+                    that.evaluationRatingData = datas.data.records
                     that.page.total = datas.data.total
                 }
             })
@@ -297,6 +342,23 @@ export default {
                 }
             })
         },
+        changeAData(val, data) {
+            if (val !== '') {
+                this.monthArr.forEach(it =>{
+                    if (data.label === it.label) {
+                        this.acauseDataArr.push(it)
+                    }
+    
+                })
+            }
+        },
+        clearAData(val, data) {
+            this.acauseDataArr.forEach((it, index) =>{
+                if (data.label === it.label) {
+                    this.acauseDataArr.splice(index, 1)
+                }
+            })
+        },
         saveevaluaStart(formName) {
             let that = this
             that.$refs[formName].validate((valid) => {
@@ -331,7 +393,18 @@ export default {
                 oct: that.ruleForm.oct,
                 nov: that.ruleForm.nov,
                 dece: that.ruleForm.dece,
-                acause: that.ruleForm.acause
+                janContent: that.ruleForm.janContent,
+                febContent: that.ruleForm.febContent,
+                marContent: that.ruleForm.marContent,
+                aprContent: that.ruleForm.aprContent,
+                mayContent: that.ruleForm.mayContent,
+                junContent: that.ruleForm.junContent,
+                julContent: that.ruleForm.julContent,
+                augContent: that.ruleForm.augContent,
+                sepContent: that.ruleForm.sepContent,
+                octContent: that.ruleForm.octContent,
+                novContent: that.ruleForm.novContent,
+                deceContent: that.ruleForm.deceContent
                 // createBy: userMes.id,
                 // createName: userMes.name
             }
@@ -387,6 +460,7 @@ export default {
             this.dialogVisible = true
             this.isSave = false
             this.title = '新建部门绩效考核评级'
+            this.acauseDataArr = []
             this.$nextTick(() =>{
                 this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
@@ -404,7 +478,18 @@ export default {
                     oct: '',
                     nov: '',
                     dece: '',
-                    acause: ''
+                    janContent: '',
+                    febContent: '',
+                    marContent: '',
+                    aprContent: '',
+                    mayContent: '',
+                    junContent: '',
+                    julContent: '',
+                    augContent: '',
+                    sepContent: '',
+                    octContent: '',
+                    novContent: '',
+                    deceContent: ''
                 }
             })
         },
@@ -413,6 +498,7 @@ export default {
             this.isSave = true
             this.title = '修改部门绩效考核评级'
             this.evalradio = this.changeDateSelect[0]
+            this.acauseDataArr = []
             this.ruleForm = {
                 department: this.evalradio.deptId,
                 year: this.evalradio.annual,
@@ -428,8 +514,30 @@ export default {
                 oct: this.evalradio.oct,
                 nov: this.evalradio.nov,
                 dece: this.evalradio.dece,
-                acause: this.evalradio.acause
+                janContent: this.evalradio.janContent,
+                febContent: this.evalradio.febContent,
+                marContent: this.evalradio.marContent,
+                aprContent: this.evalradio.aprContent,
+                mayContent: this.evalradio.mayContent,
+                junContent: this.evalradio.junContent,
+                julContent: this.evalradio.julContent,
+                augContent: this.evalradio.augContent,
+                sepContent: this.evalradio.sepContent,
+                octContent: this.evalradio.octContent,
+                novContent: this.evalradio.novContent,
+                deceContent: this.evalradio.deceContent
             }
+            let arr = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dece']
+            arr.forEach(it =>{
+                if (this.evalradio[it] !== '') {
+                    this.monthArr.forEach(itv =>{
+                        if (itv.value === it) {
+                            this.acauseDataArr.push(itv)
+                        }
+        
+                    })
+                }
+            })
         },
         //删除
         handleDelete() {
@@ -458,8 +566,8 @@ export default {
 </script>
 
 <style lang="less">
-.evaluationStart{
-    .evaluationStartBtn{
+.evaluationRating{
+    .evaluationRatingBtn{
         .collectSeach{
             display: flex;
             padding: 24px 20px;
@@ -518,7 +626,7 @@ export default {
                 margin:0;
             }
         }
-        .evaluationStartTableData{
+        .evaluationRatingTableData{
             .el-table{
                 .el-table__body-wrapper{
                     height: 60vh !important;
@@ -530,14 +638,14 @@ export default {
                     display: none;
                 }
                 .tooltipCC{
-                    width: 300px;
+                    width: 300px !important;
                     display: inline-block;
                     overflow: hidden;
                     text-overflow: ellipsis;
                     white-space: nowrap;
                 }
                 .tooltipCCDes{
-                    width: 200px;
+                    width: 50px;
                     display: inline-block;
                     overflow: hidden;
                     text-overflow: ellipsis;

+ 95 - 111
src/components/assessment/evaluationDeptStartFrom.vue

@@ -47,6 +47,10 @@
                 </el-row>
                 <div class="btnASeach">
                     <div class="detaTableBtns">
+                        <div class="tableBtn add" @click="addTableDetail">
+                            <img :src="addIcon" alt="">
+                            <span>新增</span>
+                        </div>
                         <div class="tableBtn save" @click="saveDetail">
                             <img :src="saveIcon" alt="">
                             <span>保存</span>
@@ -63,22 +67,55 @@
                 </div>
                 <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
                     <el-tab-pane label="考评指标项内容" name="first">
-                        <el-table :data="quantifiedList.slice((pageLeft.currentPage-1)*pageLeft.pagesize, pageLeft.currentPage*pageLeft.pagesize)" style="width: 100%" @select="rowClick" @select-all="rowClick">
-                            <el-table-column type="selection" label="操作" align="center"></el-table-column>
-                            <el-table-column type="index" label="序号" width="80" />
-                            <el-table-column label="部门名称" prop="deptName" width="300" />
-                            <el-table-column label="指标名称" prop="indicatorName" />
-                            <el-table-column label="指标项名称" prop="indicatorItemName" />
-                            <el-table-column label="值">
+                        <el-table :data="quantifiedList.slice((pageLeft.currentPage-1)*pageLeft.pagesize, pageLeft.currentPage*pageLeft.pagesize)"
+                         style="width: 100%" @select="rowClick" @select-all="rowClick">
+                            <el-table-column label="序号" type="index" width="80" />
+                            <el-table-column label="部门名称" prop="deptName" width="300">
+                                <template #default="scope">
+                                    <el-select v-model="scope.row.deptName" placeholder="请选择所属部门" v-if="scope.row.showInput">
+                                        <el-option
+                                        v-for="item in departData"
+                                        :key="item.id"
+                                        :label="item.keyName"
+                                        :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                    <span v-else>{{scope.row.deptName}}</span>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="排序" width="100" >
+                                <template #default="scope">
+                                    <el-input v-model="scope.row.serialNumber"
+                                     placeholder="请输入排序" :disabled="!scope.row.updateMark"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="指标名称" >
+                                <template #default="scope">
+                                    <el-input v-model="scope.row.targetName"
+                                     placeholder="请输入指标名称" :disabled="!scope.row.updateMark"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="目标值" width="500">
                                 <template #default="scope">
                                     <el-input v-model="scope.row.targetValue"
-                                     type="textarea" :rows="1" placeholder="请输入值" :disabled="!scope.row.updateMark"></el-input>
+                                     type="textarea" :rows="2" placeholder="请输入目标值" :disabled="!scope.row.updateMark"></el-input>
                                     <!-- <el-input-number v-model="scope.row.targetValue"
                                      :precision="2" :step="0.1" :min="0" /> -->
                                      <!-- :disabled="!scope.row.updateMark"  -->
                                 </template>
                             </el-table-column>
-                            <el-table-column label="审核状态" width="260" >
+                            <el-table-column label="基础分" width="150">
+                                <template #default="scope">
+                                    <el-input-number v-model="scope.row.baseScore" :precision="2" :step="0.1" :min="0" />
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="评价标准" >
+                                <template #default="scope">
+                                    <el-input v-model="scope.row.evaluationCriteria"
+                                     placeholder="请输入评价标准" :disabled="!scope.row.updateMark"></el-input>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="审核状态" width="200" >
                                 <template #default="scope">
                                      <!-- :disabled="!scope.row.updateMark" -->
                                     <el-select v-model="scope.row.auditStatus" :disabled="!scope.row.updateMark" placeholder="请选择审核状态">
@@ -153,8 +190,6 @@ export default {
             importIcon: importIcon,
             rowMsg: {},
             orgruleData: [],
-            indicatorTypeData: [],
-            stageData: [],
             indicItemoptions: [],
             sectionNameArr: [],
             deptNameArr: [],
@@ -169,6 +204,7 @@ export default {
                 currentPage: 1,
                 total: 0
             },
+            departData: []
         }
     },
     created() {
@@ -188,7 +224,7 @@ export default {
         ]
     },
     methods: {
-        init(row) {
+        init(row, deptData) {
             this.dialogVisible = true
             this.activeName = 'first'
             this.receiptMsg = {
@@ -202,78 +238,19 @@ export default {
                 recStage: '有效'
             }
             this.getDetails(row.id)
-            // this.getOrgRule(row)
-            this.getindList()
+            this.getshowDepartDataFn(row, deptData)
             this.rowMsg = row
+
         },
-        // 考评评价指标内容
-        getOrgRule(row) {
-            let that = this
-            let params = {
-                id: row.id,
-                type: 'mb'
-            }
-            apiGetOrganizationRule(params).then(datas =>{
-                if (datas && datas.data) {
-                    that.orgruleData = datas.data
-                }
-            })
-        },
-        getindList() {
-            let that = this
-            let params = {
-                type: 2
-            }
-            apiGetbinstageList(params).then(datas =>{
-                if (datas && datas.data) {
-                    that.stageData = datas.data
-                }
-            })
-            apiGetIndicatorTypeList(params).then(datas =>{
-                if (datas && datas.data) {
-                    that.indicatorTypeData = datas.data
-                }
-            })
-        },
-        getIndListAll(row) {
-            let that = this
-            let params = {
-                binSection: row.sectionName,
-                binStage: row.stageName
-            }
-            apiGetindicatorListAll(params).then(datas =>{
-                if (datas && datas.data) {
-                    that.indicItemoptions = datas.data
-                }
-            })
-        },
-        changeIndic(val, row) {
-            if (row.stageName !== '' && row.sectionName !== '') {
-                this.getIndListAll(row)
-            }
-        },
-        changeOrgZa(val) {
-            this.sectionNameArr = []
-            this.orgruleData.forEach(item =>{
-                if (item.id === val) {
-                    let obj = {
-                        id: item.binSection,
-                        secName: item.binSectionName
-                    }
-                    this.sectionNameArr.push(obj)
-                }
-            })
-        },
-        changeDept(val) {
-            this.deptNameArr = []
-            this.indicItemoptions.forEach(item =>{
-                if (item.id === val) {
-                    let obj = {
-                        id: item.dept,
-                        deptName: item.deptName
+        // 整合部门数据
+        getshowDepartDataFn(row, deptData) {
+            let deptIdArr = row.deptId.split(',')
+            deptIdArr.forEach(it =>{
+                deptData.forEach(itv =>{
+                    if (itv.id === it) {
+                        this.departData.push(itv)
                     }
-                    this.deptNameArr.push(obj)
-                }
+                })
             })
         },
         handleClick() {
@@ -302,24 +279,35 @@ export default {
         addTableDetail() {
             let obj = {
                 showInput: true,
-                stageName: '',
-                sectionName: '',
-                organizationName: '',
+                updateMark: true,
+                businessPlanId: this.rowMsg.id,
+                serialNumber: '1',
                 deptName: '',
-                typeName: '',
-                optionName: '',
-                nonQuantifiedValue: ''
+                targetName: '',
+                targetValue: '',
+                baseScore: 0,
+                evaluationCriteria: '',
+                auditStatus: '-1'
             }
-            this.nonQuantifiedList.unshift(obj)
+            this.quantifiedList.unshift(obj)
         },
         saveDetail() {
             let that = this
             let params = []
             that.quantifiedList.forEach(item =>{
                 let obj = {
-                    id: item.id,
+                    targetName: item.targetName,
                     targetValue: item.targetValue,
-                    auditStatus: item.auditStatus
+                    baseScore: item.baseScore.toString(),
+                    evaluationCriteria: item.evaluationCriteria,
+                    auditStatus: item.auditStatus,
+                    serialNumber: item.serialNumber
+                }
+                if (item.showInput) {
+                    obj.deptId = item.deptName
+                    obj.businessPlanId = item.businessPlanId
+                } else {
+                    obj.id = item.id
                 }
                 params.push(obj)
             })
@@ -386,9 +374,9 @@ export default {
             })
         },
         handleImport() {
-            this.$refs.importPage.upload.title = "考评目标信息导入"
+            this.$refs.importPage.upload.title = "本部部门业绩指标计划信息导入"
             this.$refs.importPage.upload.open = true
-            this.$refs.importPage.upload.url = '/responsibility-indicator-info/import'
+            this.$refs.importPage.upload.url = '/evaluation-dept-plan/import'
         },
         successImport(val) {
             this.getDetails(this.rowMsg.id)
@@ -401,25 +389,21 @@ export default {
             let colums = []
             colums = [
                 { header: 'ID', key: 'id', width: 26 },
-                { header: '单位名称', key: 'organizationShortName', width: 26 },
-                { header: '指标分类', key: 'typeName', width: 18 },
-                { header: '业务阶段', key: 'stageName', width: 18 },
-                { header: '业务属性', key: 'sectionName', width: 18 },
-                { header: '指标名称', key: 'childName', width: 18 },
-                { header: '填报部门', key: 'deptName', width: 26 },
+                { header: '业务ID', key: 'businessPlanId', width: 26 },
+                { header: '部门ID', key: 'deptId', width: 26 },
+                { header: '部门名称', key: 'deptName', width: 26 },
+                { header: '部门编码', key: 'deptCode', width: 26 },
+                { header: '排序', key: 'serialNumber', width: 26 },
+                { header: '指标名称', key: 'targetName', width: 18 },
+                { header: '目标值', key: 'targetValue', width: 18 },
+                { header: '基础分', key: 'baseScore', width: 18 },
+                { header: '评价标准', key: 'evaluationCriteria', width: 18 }
             ]
-            if (this.activeName === 'first') {
-                colums.push(
-                    { header: '目标值', key: 'quantifiedValue', width: 18 },
-                    { header: '单位', key: 'unit', width: 18 },
-                    { header: '审核状态', key: 'state', width: 18 }
-                )
-                this.quantifiedList.forEach(item =>{
-                    if (item.updateMark) {
-                        data.push(item)
-                    }
-                })
-            }
+            this.quantifiedList.forEach(item =>{
+                if (item.updateMark) {
+                    data.push(item)
+                }
+            })
             worksheet.columns = colums
             worksheet.getRow(1).font = {
                 size: 12,
@@ -430,7 +414,7 @@ export default {
             workbook.xlsx.writeBuffer().then(buffer => {
                 //这里为type
                 const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' })
-                fileSave(blob, `数据导出.xlsx`)
+                fileSave(blob, `本部部门业绩指标计划数据导出.xlsx`)
             })
         },
     }

+ 53 - 10
src/components/assessment/evaluationDeptStartPage.vue

@@ -31,8 +31,8 @@
                 <el-table :data="evaluationStartData" style="width: 100%" @select="rowClick"
                  @select-all="rowClick" @row-dblclick="getDetail" @cell-click="clickDes">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
-                    <el-table-column label="业务编号" prop="responsibilityCode" />
-                    <el-table-column label="考评部门" width="400">
+                    <el-table-column label="业务编号" prop="responsibilityCode" width="300"  />
+                    <!-- <el-table-column label="考评部门" width="400">
                         <template #default="scope">
                             <el-tooltip
                                 class="box-item"
@@ -43,9 +43,9 @@
                                 <span class="tooltipCC">{{scope.row.deptName}}</span>
                             </el-tooltip>
                         </template>
-                    </el-table-column>
-                    <el-table-column label="考评年度" prop="appraisalYear" width="120" />
-                    <el-table-column label="业务简述" prop="des" width="400">
+                    </el-table-column> -->
+                    <el-table-column label="考评年度" prop="appraisalYear" width="200" />
+                    <el-table-column label="业务简述" prop="des">
                         <template #default="scope">
                             <div v-if="!scope.row.chngeDes">
                                 <el-tooltip
@@ -87,6 +87,16 @@
             <el-dialog :title="title" custom-class="startToDia" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
                 <div class="periodFrom">
                     <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
+                        <el-form-item label="考评部门" prop="department">
+                            <el-select v-model="ruleForm.department" 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-form-item label="考评类别" prop="organizationType">
                             <el-select v-model="ruleForm.organizationType" placeholder="请选择考评类别" disabled>
                                 <el-option
@@ -173,6 +183,7 @@ export default {
                 total: 0
             },
             ruleForm: {
+                department: [],
                 organizationType: '',
                 evaluationCycle: '',
                 evaluateRule: '',
@@ -181,6 +192,9 @@ export default {
                 desc: ''
             },
             rules: {
+                department: [
+                    { required: true, message: '请选择考评部门', trigger: 'change' }
+                ],
                 organizationType: [
                     { required: true, message: '请选择考评类别', trigger: 'change' }
                 ],
@@ -202,7 +216,8 @@ export default {
             ruleDataAll: [],
             rescode: '',
             resDes: '',
-            stageArr: []
+            stageArr: [],
+            departData: []
         }
     },
     created() {
@@ -218,6 +233,7 @@ export default {
         ]
         this.getevaluStartList()
         this.getPeriodData()
+        this.getDepartmentFromTreeData()
     },
     methods:{
         // 查询列表页面
@@ -236,6 +252,18 @@ export default {
                 }
             })
         },
+        // 查询部门
+        getDepartmentFromTreeData() {
+            let that = this
+            let params = {
+                superKey: 'BM0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.departData = datas.data
+                }
+            })
+        },
         //考评周期
         getPeriodData() {
             let that = this
@@ -276,14 +304,28 @@ export default {
         //新增/修改考评启动数据
         saveAndEditIndicatorData() {
             let that = this
-            let userMes = JSON.parse(window.sessionStorage.getItem('user'))
+            // let userMes = JSON.parse(window.sessionStorage.getItem('user'))
+            let deptData = []
+            that.ruleForm.department.forEach(it =>{
+                that.departData.forEach(itv =>{
+                    if (itv.id === it) {
+                        let obj = {
+                            dataKey: itv.dataKey,
+                            id: itv.id,
+                            keyName: itv.keyName
+                        }
+                        deptData.push(obj)
+                    }
+                })
+            })
             let params = {
+                deptData: JSON.stringify(deptData),
                 evaluationCategory: that.ruleForm.organizationType,
                 businessClass: that.ruleForm.evaluationCycle,
                 appraisalYear: that.ruleForm.year,
                 des: that.ruleForm.desc,
-                createBy: userMes.id,
-                createName: userMes.name
+                // createBy: userMes.id,
+                // createName: userMes.name
             }
             if (that.isSave) {
                 params.id = that.evalradio.id
@@ -373,7 +415,7 @@ export default {
         },
         //明细
         getDetail(row) {
-            this.$refs.startFromDetail.init(row)
+            this.$refs.startFromDetail.init(row, this.departData)
         },
         seeStates(row) {
             if (!row.instId) {
@@ -431,6 +473,7 @@ export default {
             this.$nextTick(() =>{
                 this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
+                    department: [],
                     organizationType: 'BMKP',
                     evaluationCycle: 'NDKP',
                     // evaluateRule: '',

+ 1 - 1
src/components/assessment/monthQuarterFrom.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="startFrom">
-        <el-dialog title="月/季度考评详情" v-model="dialogVisible" :fullscreen="true" :close-on-click-modal="false">
+        <el-dialog title="考评详情" v-model="dialogVisible" :fullscreen="true" :close-on-click-modal="false">
             <div class="startDetail">
                 <p class="starttitleSty">单据信息:</p>
                 <el-row class="danjuMsg">

+ 711 - 11
src/components/gatewaynNewPage.vue

@@ -5,31 +5,300 @@
                 <div class="searchFn">
                     <el-date-picker v-model="value3" type="year" placeholder="选择年份" />
                     <div class="quarterChoose">
-                        <el-icon :size="20" color="#3B7AD1"><ArrowLeftBold /></el-icon>
-                        <span>第一季度</span>
-                        <el-icon :size="20" color="#3B7AD1"><ArrowRightBold /></el-icon>
+                        <el-icon :size="20" color="#3B7AD1"><ArrowLeft /></el-icon>
+                        <span class="choose">第一季度</span>
+                        <el-icon :size="20" color="#3B7AD1"><ArrowRight /></el-icon>
+                    </div>
+                </div>
+                <div class="tableHeader">
+                    <div class="headerOne"></div>
+                    <div class="headerTwo">
+                        <div class="headerComTit">
+                            <span class="headerTwoTit">评级统计</span>
+                        </div>
+                    </div>
+                    <div class="headerThree">
+                        <div class="headerComTit">
+                            <span class="headerThreeTit">年度榜</span>
+                        </div>
+                        <div class="headerNameTit">
+                            <div class="headerNameTit_left">
+                                <span>单位名称</span>
+                            </div>
+                            <div class="headerNameTit_right">
+                                <span>级别</span>
+                                <span style="margin-left: 20px">得分</span>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="headerFour">
+                        <div class="headerComTit">
+                            <span class="headerFourTit">考评排行榜</span>
+                        </div>
+                        <div class="headerNameTit">
+                            <div class="headerNameTit_left">
+                                <span>单位名称</span>
+                            </div>
+                            <div class="headerNameTit_right">
+                                <span>得分</span>
+                                <span style="margin-left: 20px">加分事项</span>
+                                <span style="margin-left: 20px">扣分事项</span>
+                                <span style="margin-left: 20px">管理加分</span>
+                                <span style="margin-left: 20px">管理扣分</span>
+                                <span style="margin-left: 20px">高于基准</span>
+                                <span style="margin-left: 20px">低于基准</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                 <!-- v-for="it in 4" :key="it" -->
+                <div class="tableMain" v-for="it in 4" :key="it">
+                    <div class="mainOne">
+                        <span>火电板块</span>
+                    </div>
+                    <div class="mainTwo">
+                        <div class="echartsNum">18</div>
+                        <div id="pieChart" style="height: 100px;width: 100%"></div>
+                        <el-row>
+                            <el-col :span="12">
+                                <span class="mainTwoComColor" style="background: #F65177;"></span>
+                                <span class="mainTwoComTit">A级</span>
+                            </el-col>
+                            <el-col :span="12">
+                                <span class="mainTwoComColor" style="background: #50C14E;"></span>
+                                <span class="mainTwoComTit">B级</span>
+                            </el-col>
+                            <el-col :span="12">
+                                <span class="mainTwoComColor" style="background: #5093E1;"></span>
+                                <span class="mainTwoComTit">C级</span>
+                            </el-col>
+                            <el-col :span="12">
+                                <span class="mainTwoComColor" style="background: #9DA5BE;"></span>
+                                <span class="mainTwoComTit">D级</span>
+                            </el-col>
+                        </el-row>
+                    </div>
+                    <div class="mainThree">
+                        <div class="mainMore"></div>
+                        <div style="display: flex" v-for="(item, index) in cupMsgArr" :key="index">
+                            <div class="mainThreeMsg">
+                                <img :src="item.img" alt="">
+                                <div class="msgProgress">
+                                    <span>{{item.name}}</span>
+                                    <span>{{item.level}}</span>
+                                    <span>{{item.points}}</span>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="mainFour">
+                        <div class="mainMore"></div>
+                        <div style="display: flex" v-for="(item, index) in chartsMsgArr" :key="index">
+                            <div class="mainFourMsg">
+                                <span>{{item.name}}</span>
+                                <span>{{item.points}}</span>
+                                <div class="mainFourImg">
+                                    <img :src="item.jiaA === 0 ? cenImg : item.jiaA === 1 ? topImg : botImg" alt="">
+                                    <img :src="item.jiaB === 0 ? cenImg : item.jiaB === 1 ? topImg : botImg" alt="">
+                                    <img :src="item.guanA === 0 ? cenImg : item.guanA === 1 ? topImg : botImg" alt="">
+                                    <img :src="item.guanB === 0 ? cenImg : item.guanB === 1 ? topImg : botImg" alt="">
+                                    <img :src="item.gaoA === 0 ? cenImg : item.gaoA === 1 ? topImg : botImg" alt="">
+                                    <img :src="item.gaoB === 0 ? cenImg : item.gaoB === 1 ? topImg : botImg" alt="">
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="tableFooter">
+                    <div class="footerOne">
+                        <span>煤电一体化</span>
+                    </div>
+                    <div class="footerTwo">
+                        <div style="display: flex" v-for="(item, index) in cupFootMsgArr" :key="index">
+                            <div class="footerTwoMsg">
+                                <img :src="item.img" alt="">
+                                <div class="footerProgress">
+                                    <span class="footerOneSpan">{{item.name}}</span>
+                                    <el-progress percentage="80" :stroke-width="5" />
+                                    <span class="footerTwoSpan">{{item.level}}</span>
+                                    <span class="footerThreeSpan">{{item.points}}</span>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="footerThree">
+                        <div class="mainMore"></div>
+                        <div style="display: flex" v-for="(item, index) in cupFootMsgArr" :key="index">
+                            <div class="footerThreeMsg" v-for="it in matterMsg" :key="it">
+                                <div class="footerImg">
+                                    <span>{{it}}</span>
+                                    <img :src="item.jiaA === 0 ? cenImg : item.jiaA === 1 ? topImg : botImg" alt="">
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </el-col>
+            <el-col :span="5" class="report">
+                <div class="gateway_report">
+                    <div class="reportTit">
+                        <p>通告栏</p>
+                    </div>
+                    <div class="reportMain">
+                        <div class="reportMain_msg" v-for="it in 10" :key="it">
+                            <div class="rightDiv"></div>
+                            <div class="rightTitMsg">
+                                <p>关于2022年度各单位年度考评得分</p>
+                                <div style="margin-top: 5px">
+                                    <span style="margin-right: 10px">2023-01-15</span>
+                                    <span>组织人事部</span>
+                                </div>
+                            </div>
+                        </div>
                     </div>
                 </div>
-                <div></div>
             </el-col>
-            <el-col :span="6" class="report"></el-col>
         </el-row>
         
     </div>
 </template>
 
 <script>
+import cup1 from '../assets/getwayImg/cup1.png'
+import cup2 from '../assets/getwayImg/cup2.png'
+import cup3 from '../assets/getwayImg/cup3.png'
+
+import topImg from '../assets/getwayImg/top.png'
+import botImg from '../assets/getwayImg/bot.png'
+import cenImg from '../assets/getwayImg/cen.png'
 export default {
     data() {
         return {
-            
+            cupMsgArr: [],
+            cupFootMsgArr: [],
+            chartsMsgArr: [],
+            matterMsg: ['加分事项', '扣分事项', '管理加分', '管理扣分', '高于基准', '低于基准'],
+            topImg: topImg,
+            botImg: botImg,
+            cenImg: cenImg,
         }
     },
     created() {
-        
+        this.cupMsgArr = [
+            {
+                level: 'A',
+                points: '134',
+                img: cup1,
+                name: '大港电厂(广安津能)'
+            },
+            {
+                level: 'A',
+                points: '134',
+                img: cup2,
+                name: '怀安热电'
+            },
+            {
+                level: 'A',
+                points: '124',
+                img: cup3,
+                name: '滨海电力'
+            }
+        ]
+        this.cupFootMsgArr = [
+            {
+                level: 'A',
+                points: '134',
+                img: cup1,
+                name: '大港电厂(广安津能)'
+            },
+            {
+                level: 'A',
+                points: '134',
+                img: cup2,
+                name: '怀安热电'
+            }
+        ]
+        this.chartsMsgArr = [
+            {
+                name: '中国国电电力上海庙公司',
+                points: '134',
+                jiaA: 1,
+                jiaB: 2,
+                guanA: 1,
+                guanB: 0,
+                gaoA: 1,
+                gaoB: 0    
+            },
+            {
+                name: '中国国电电力上海庙公司',
+                points: '134',
+                jiaA: 1,
+                jiaB: 2,
+                guanA: 1,
+                guanB: 0,
+                gaoA: 1,
+                gaoB: 0    
+            },
+            {
+                name: '中国国电电力上海庙公司',
+                points: '134',
+                jiaA: 1,
+                jiaB: 2,
+                guanA: 1,
+                guanB: 0,
+                gaoA: 1,
+                gaoB: 0    
+            }
+        ]
+    },
+    mounted() {
+        this.getEchartsData()
     },
     methods: {
-        
+        getEchartsData() {
+            let option = {
+                color: ['#F65177', '#50C14E', '#5093E1', '#9DA5BE'],
+                tooltip: {
+                    trigger: 'item'
+                },
+                series: [
+                    {
+                    name: 'Access From',
+                    type: 'pie',
+                    radius: ['50%', '70%'],
+                    avoidLabelOverlap: false,
+                    label: {
+                        show: false,
+                        position: 'center'
+                    },
+                    // emphasis: {
+                    //     label: {
+                    //     show: true,
+                    //     fontSize: 10,
+                    //     fontWeight: 'bold'
+                    //     }
+                    // },
+                    labelLine: {
+                        show: false
+                    },
+                    data: [
+                        { value: 1048, name: 'Search Engine' },
+                        { value: 735, name: 'Direct' },
+                        { value: 580, name: 'Email' },
+                        { value: 484, name: 'Union Ads' }
+                    ]
+                    }
+                ]
+            };
+            // 基于准备好的dom,初始化echarts实例
+            let dom = document.getElementById('pieChart');
+            dom.removeAttribute("_echarts_instance_")
+            let myChart = this.$echarts.init(dom);
+            myChart.setOption(option);
+            window.addEventListener("resize", function () {
+                myChart.resize()
+            })
+        },
     }
 }
 </script>
@@ -43,15 +312,446 @@ export default {
     .quarter{
         background: #fff;
         border-radius: 10px;
-        padding-right: 15px;
+        // padding-right: 15px;
         .searchFn{
             height: 50px;
             display: flex;
+            border-bottom: 1px solid #E1E3EA;
             .el-date-editor--year{
-                
+                width: 130px;
+                margin: 10px 0 0 20px;
+                .el-input__wrapper{
+                    background: #2C7EDC;
+                    height: 30px;
+                    .el-input__prefix{
+                        color: #fff;
+                    }
+                }
+            }
+            ::-webkit-input-placeholder{
+                color: #fff;
             }
             .quarterChoose{
-
+                position: relative;
+                left: 33%;
+                top: 15px;
+                width: 225px;
+                display: flex;
+                justify-content: space-around;
+                .choose{
+                    position: relative;
+                    top: -1px;
+                }
+                .el-icon{
+                    cursor: pointer;
+                }
+            }
+        }
+        .tableHeader{
+            display: flex;
+            border-bottom: 1px solid #E1E3EA;
+            height: 75px;
+            .headerComTit{
+                height: 40px;
+                border-bottom: 1px solid #E1E3EA;
+                span{
+                    font-size: 14px;
+                    color: #3B7AD1;
+                }
+            }
+            .headerNameTit{
+                display: flex;
+                justify-content: space-between;
+                padding: 8px 20px;
+                font-size: 14px;
+                color: #414141;
+            }
+            .headerOne{
+                width: 35px;
+                background: #184FB4;
+            }
+            .headerTwo{
+                width: 150px;
+                border-right: 1px solid #E1E3EA;
+                .headerTwoTit{
+                    position: relative;
+                    top: 10px;
+                    left: 40px;
+                }
+            }
+            .headerThree{
+                width: 350px;
+                border-right: 1px solid #E1E3EA;
+                .headerThreeTit{
+                    position: relative;
+                    top: 10px;
+                    left: 150px;
+                }
+            }
+            .headerFour{
+                width: calc(100% - 535px);
+                .headerFourTit{
+                    position: relative;
+                    top: 10px;
+                    left: 40%;
+                }
+            }
+        }
+        .tableMain{
+            display: flex;
+            border-bottom: 1px solid #E1E3EA;
+            height: 150px;
+            .mainOne{
+                width: 35px;
+                background: #184FB4;
+                span{
+                    display: inline-block;
+                    width: 20px;
+                    margin: 0 auto;
+                    line-height: 20px;
+                    font-size: 16px;
+                    font-weight: bold;
+                    color: #fff;
+                    position: relative;
+                    top: 30px;
+                    left: 10px;
+                }
+            }
+            .mainTwo{
+                width: 149px;
+                border-right: 1px solid #E1E3EA;
+                position: relative;
+                .echartsNum{
+                    font-size: 16px;
+                    font-weight: 600;
+                    position: absolute;
+                    top: 42px;
+                    left: 65px;
+                }
+                .mainTwoComColor{
+                    display: inline-block;
+                    width: 6px;
+                    height: 6px;
+                    border-radius: 20px;
+                    margin-left: 15px;
+                    position: relative;
+                    top: -1px;
+                }
+                .mainTwoComTit{
+                    font-size: 14px;
+                    display: inline-block;
+                    margin-left: 5px;
+                }
+            }
+            .mainThree{
+                width: 350px;
+                padding-top: 13px;
+                border-right: 1px solid #E1E3EA;
+                position: relative;
+                .mainMore{
+                    width: 0;
+                    height: 0;
+                    border-top: 10px solid transparent;
+                    border-left: 10px solid #B6BBCB;
+                    border-right: 10px solid transparent;
+                    border-bottom: 10px solid transparent;
+                    position: absolute;
+                    top: -9px;
+                    right: -9px;
+                    transform: rotate(-45deg);
+                    cursor: pointer;
+                }
+                .mainThreeMsg{
+                    display: flex;
+                    margin: 0 10px;
+                    width: 100%;
+                    height: 33px;
+                    background: #F6F7FA;
+                    margin-bottom: 8px;
+                    padding-left: 10px;
+                    padding-top: 2px;
+                    border-radius: 5px;
+                    img{
+                        width: 20px;
+                        height: 20px;
+                        position: relative;
+                        top: 5px;
+                        margin-right: 10px;
+                    }
+                    .msgProgress{
+                        margin-top: 5px;
+                        display: flex;
+                        width: 90%;
+                        span{
+                            font-size: 14px;
+                            font-family: Microsoft YaHei;
+                        }
+                        span:nth-child(1){
+                            display: inline-block;
+                            width: 70%;
+                            font-weight: 400;
+                            color: #666;
+                            margin-right: 10px;
+                        }
+                        span:nth-child(2){
+                            font-weight: 600;
+                            margin-right: 30px;
+                            color: #F65177;
+                        }
+                        span:nth-child(3){
+                            font-weight: 600;
+                            color: #666;
+                        }
+                    }
+                }
+            }
+            .mainFour{
+                width: calc(100% - 536px);
+                padding-top: 13px;
+                position: relative;
+                .mainMore{
+                    width: 0;
+                    height: 0;
+                    border-top: 10px solid transparent;
+                    border-left: 10px solid #B6BBCB;
+                    border-right: 10px solid transparent;
+                    border-bottom: 10px solid transparent;
+                    position: absolute;
+                    top: -9px;
+                    right: -9px;
+                    transform: rotate(-45deg);
+                    cursor: pointer;
+                }
+                .mainFourMsg{
+                    display: flex;
+                    margin: 0 10px;
+                    width: 100%;
+                    height: 33px;
+                    background: #F6F7FA;
+                    margin-bottom: 8px;
+                    padding-left: 10px;
+                    padding-top: 2px;
+                    border-radius: 5px;
+                    .mainFourImg{
+                        display: flex;
+                        justify-content: space-around;
+                        width: 65%;
+                        img{
+                            width: 20px;
+                            height: 20px;
+                            position: relative;
+                            top: 5px;
+                            margin-right: 33px;
+                            margin-left: 22px;
+                        }
+                    }
+                    span{
+                        font-size: 14px;
+                        font-family: Microsoft YaHei;
+                        position: relative;
+                        top: 6px;
+                    }
+                    span:nth-child(1){
+                        display: inline-block;
+                        width: 26%;
+                        font-weight: 400;
+                        color: #666;
+                        margin-right: 17px;
+                    }
+                    span:nth-child(2){
+                        font-weight: 600;
+                        margin-right: 15px;
+                        color: #666;
+                    }
+                }
+            }
+        }
+        .tableFooter{
+            display: flex;
+            height: 100px;
+            .footerOne{
+                width: 35px;
+                background: #7D8297;
+                border-radius: 0 0 0 10px;
+                span{
+                    display: inline-block;
+                    width: 20px;
+                    margin: 0 auto;
+                    line-height: 16px;
+                    font-size: 16px;
+                    font-weight: bold;
+                    color: #fff;
+                    position: relative;
+                    top: 10px;
+                    left: 10px;
+                }
+            }
+            .footerTwo{
+                width: 500px;
+                padding-top: 13px;
+                border-right: 1px solid #E1E3EA;
+                .footerTwoMsg{
+                    display: flex;
+                    margin: 0 10px;
+                    width: 100%;
+                    height: 33px;
+                    background: #F6F7FA;
+                    margin-bottom: 8px;
+                    padding-left: 10px;
+                    padding-top: 2px;
+                    border-radius: 5px;
+                    img{
+                        width: 20px;
+                        height: 20px;
+                        position: relative;
+                        top: 5px;
+                        margin-right: 10px;
+                    }
+                    .footerProgress{
+                        margin-top: 5px;
+                        display: flex;
+                        width: 91%;
+                        span{
+                            font-size: 14px;
+                            font-family: Microsoft YaHei;
+                        }
+                        .footerOneSpan{
+                            display: inline-block;
+                            width: 35%;
+                            font-weight: 400;
+                            color: #666;
+                            margin-right: 10px;
+                        }
+                        .el-progress{
+                            width: calc(50% - 15px);
+                            padding-right: 15px;
+                            position: relative;
+                            top: -3px;
+                            .el-progress__text{
+                                display: none;
+                            }
+                        }
+                        .footerTwoSpan{
+                            font-weight: 600;
+                            margin-right: 30px;
+                            color: #F65177;
+                        }
+                        .footerThreeSpan{
+                            font-weight: 600;
+                            color: #666;
+                        }
+                    }
+                }
+            }
+            .footerThree{
+                width: calc(100% - 536px);
+                padding-top: 13px;position: relative;
+                .mainMore{
+                    width: 0;
+                    height: 0;
+                    border-top: 10px solid transparent;
+                    border-left: 10px solid #B6BBCB;
+                    border-right: 10px solid transparent;
+                    border-bottom: 10px solid transparent;
+                    position: absolute;
+                    top: -9px;
+                    right: -9px;
+                    transform: rotate(-45deg);
+                    cursor: pointer;
+                }
+                .footerThreeMsg{
+                    display: flex;
+                    // margin: 0 10px;
+                    margin-left: 10px;
+                    margin-bottom: 8px;
+                    span{
+                        font-size: 14px;
+                        font-weight: 400;
+                        color: #666;
+                        font-family: Microsoft YaHei;
+                    }
+                    .footerImg{
+                        display: flex;
+                        border-radius: 5px;
+                        background: #F6F7FA;
+                        span{
+                            display: inline-block;
+                            width: 100%;
+                            height: 30px;
+                            padding: 5px 11px 0;
+                            position: relative;
+                            top: 2px;
+                        }
+                        img{
+                            width: 20px;
+                            height: 20px;
+                            position: relative;
+                            top: 5px;
+                            margin-right: 10px;
+                            position: relative;
+                            top: 7px;
+                        }
+                    }
+                }
+            }
+        }
+    }
+    .report{
+        margin-left: 20px;
+        .gateway_report{
+            width: 355px;
+            background: #fff;
+            // margin-right: 30px;
+            margin-right: calc(100% - 355px);
+            border-radius: 10px;
+            padding-bottom: 10px;
+            border: 1px solid #D6DBEA;
+            .reportTit{
+                padding: 21px 25px 10px 25px;
+                background: #E3EFFF;
+                border-radius: 10px 10px 0px 0px;
+                p{
+                    font-size: 18px;
+                    font-family: Microsoft YaHei;
+                    font-weight: bold;
+                    color: #3B7AD1;
+                }
+            }
+            .reportMain{
+                height: 79vh !important;
+                overflow-y: auto;
+                .reportMain_msg{
+                    display: flex;
+                    padding: 25px 0 25px 27px;
+                    border-bottom: 1px solid #D6DBEA;
+                    .rightDiv{
+                        width: 4px;
+                        height: 40px;
+                        background: #4883D4;
+                        border-radius: 2px;
+                        position: relative;
+                        top: 2px;
+                    }
+                    .rightTitMsg{
+                        margin-left: 15px;
+                        p{
+                            width: 300px;
+                            overflow: hidden;
+                            text-overflow: ellipsis;
+                            white-space: nowrap;
+                            font-size: 16px;
+                            font-family: Microsoft YaHei;
+                            font-weight: bold;
+                            color: #333333;
+                        }
+                        span{
+                            font-size: 14px;
+                            font-family: Microsoft YaHei;
+                            font-weight: 400;
+                            color: #8991B0;
+                        }
+                    }
+                }
             }
         }
     }