Просмотр исходного кода

年度业绩指标计划申报包括详情页面更改需求,年度业绩指标完成情况包括详情页面更改需求;

SunZehao 11 месяцев назад
Родитель
Сommit
4875202118

+ 39 - 0
src/api/api.js

@@ -11,6 +11,13 @@ export function apiGetExportMsg(url, params) {
         params: params
     })
 }
+export function apiGetExportMsg2(url) {
+    return httpRequest({
+        url: url,
+        method: 'get',
+        responseType: 'blob'
+    })
+}
 // 导出模版接口
 export function apiGetModel(url, params) {
     return httpRequest({
@@ -627,6 +634,38 @@ export function apiGetstatisticalSummaryList(params) {
     })
 }
 
+//--------年度业绩指标计划申报统计汇总表
+export function apiGetplanSummaryList(params) {
+    return httpRequest({
+        url: `evaluation-dept-plan/statisticalSummary`,
+        method: 'get',
+        params: params
+    })
+}
+//--------年度业绩指标计划申报统计汇总表---下载
+export function apiGetplansummaryReport(params) {
+    return httpRequest({
+        url: `evaluation-dept-plan/summaryReport/${params.year}`,
+        method: 'get'
+    })
+}
+
+//--------年度业绩指标完成情况统计汇总表
+export function apiGetassessmentSummaryList(params) {
+    return httpRequest({
+        url: `evaluation-dept-assessment/statisticalSummary`,
+        method: 'get',
+        params: params
+    })
+}
+//--------年度业绩指标完成情况统计汇总表---下载
+export function apiGetassessmentsummaryReport(params) {
+    return httpRequest({
+        url: `evaluation-dept-assessment/summaryReport/${params.year}`,
+        method: 'get'
+    })
+}
+
 
 
 //----单位/部门考评配置所有数据

+ 19 - 7
src/components/assessment/evaluationDeptBusinessPage.vue

@@ -1,6 +1,6 @@
 <template>
-    <div class="evaluationStart">
-        <div class="evaluationStartBtn">
+    <div class="evaluationBusiness">
+        <div class="evaluationBusinessBtn">
             <div class="collectSeach" :style="$utils.collectSeachSty()">
                 <div class="exceed">
                     <span class="exceedSpan">业务编号:</span>
@@ -11,8 +11,12 @@
                     <el-input v-model="resDes" placeholder="请输入业务简述"></el-input>
                 </div>
                 <seachs @handleSeach="getSeachData" @handleRest="resetSeach"></seachs>
+                <el-button size="mini" color="#3B7AD1" icon="Operation" v-if="userId === '23031009'"
+                    @click="businessTableFn" style="margin-left: 10px">
+                    <span>统计汇总</span>
+                </el-button>
             </div>
-            <div class="evaluationStartTableData">
+            <div class="evaluationBusinessTableData">
                 <el-table :data="evaluationBusinessData" style="width: 100%" @row-dblclick="getDetail">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
                     <el-table-column label="业务编号" prop="responsibilityCode" width="300" />
@@ -82,11 +86,13 @@
             </el-dialog>
         </div>
         <business-from-list ref="businessFromDetail"></business-from-list>
+        <business-table ref="businessTable"></business-table>
     </div>
 </template>
 
 <script>
     import businessFromList from './evaluationDeptBusinessFrom.vue'
+    import businessTable from './evaluationDeptBusinessTab.vue'
     import btns from '../elbuttonS.vue'
     import seachs from '../seachGroup.vue'
     import {
@@ -103,6 +109,7 @@
     export default {
         components: {
             businessFromList,
+            businessTable,
             btns,
             seachs
         },
@@ -118,7 +125,8 @@
                 resDes: '',
                 iframeURL: '',
                 stageArr: [],
-                statesVisible: false
+                statesVisible: false,
+                userId: ''
             }
         },
         created() {
@@ -129,6 +137,7 @@
             getevaluBusinessList() {
                 let that = this
                 let userMes = JSON.parse(window.sessionStorage.getItem('user'))
+                this.userId = userMes.deptId
                 let params = {
                     pageNum: that.page.currentPage,
                     pageSize: that.page.pagesize,
@@ -143,6 +152,9 @@
                     }
                 })
             },
+            businessTableFn() {
+                this.$refs.businessTable.init(this.departData)
+            },
             agetdeptresponsibility(row) {
                 let that = this
                 let par = {
@@ -272,8 +284,8 @@
 </script>
 
 <style lang="less">
-    .evaluationStart {
-        .evaluationStartBtn {
+    .evaluationBusiness {
+        .evaluationBusinessBtn {
             .collectSeach {
                 display: flex;
                 padding: 24px 20px;
@@ -339,7 +351,7 @@
                 }
             }
 
-            .evaluationStartTableData {
+            .evaluationBusinessTableData {
                 .el-table {
                     .el-table__body-wrapper {
                         height: 68vh !important;

+ 218 - 0
src/components/assessment/evaluationDeptBusinessTab.vue

@@ -0,0 +1,218 @@
+<template>
+    <div class="applicationTable">
+        <el-dialog title="统计汇总详情" v-model="editEvaluaVisible" :fullscreen="true" :close-on-click-modal="false">
+            <div class="reportTAll">
+                <div class="reportTBtn">
+                    <div class="collectSeach">
+                        <div class="exceed">
+                            <span class="exceedSpan" style="width: 100px">选择时间:</span>
+                            <el-date-picker v-model="timeIds" type="year" value-format="YYYY" :clearable="false"
+                                placeholder="选择时间" />
+                        </div>
+                        <seachs @handleSeach="getreportTableData" :showRest="false"></seachs>
+                        <el-button type="warning" icon="Download" size="mini" @click="handleExport"
+                            style="margin-left:10px">导出</el-button>
+                    </div>
+                    <div class="reportTTableData" v-for="(val, key, index) in reportTableData" :key="index">
+                        <p>{{key}}</p>
+                        <el-table :data="val" ref="report-table" style="width: 100%">
+                            <el-table-column label="序号" type="index" width="50" align="center" />
+                            <el-table-column label="关键业绩指标名称" prop="targetName" align="center" />
+                            <el-table-column label="目标值" prop="targetValue" align="center" />
+                            <el-table-column label="基础分" prop="baseScore" align="center" />
+                            <el-table-column label="完成情况" prop="completionStatus" align="center" />
+                            <el-table-column label="评价标准" prop="evaluationCriteria" align="center" />
+                            <el-table-column label="自评得分" prop="evaluationScore" align="center" />
+                        </el-table>
+                    </div>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import seachs from '../seachGroup.vue'
+    import {
+        saveAs
+    } from 'file-saver'
+    import ExcelJS from 'exceljs'
+    import fileSave from 'file-saver'
+    import {
+        apiGetassessmentSummaryList,
+        apiGetassessmentsummaryReport,
+        apiGetevaluationdownloadReport
+    } from '../../api/api'
+    export default {
+        components: {
+            seachs
+        },
+        data() {
+            return {
+                editEvaluaVisible: false,
+                reportTableData: {},
+                departData: [],
+                deptLeaderOptionDet: [],
+                timeIds: '',
+            }
+        },
+        methods: {
+            init() {
+                this.editEvaluaVisible = true
+                this.reportTableData = {}
+                this.timeIds = new Date().getFullYear().toString()
+                this.getreportTableData()
+            },
+            sortMethods(a, b, it) {
+                if (a[it] < b[it]) {
+                    return -1
+                }
+            },
+            // 查询数据
+            getreportTableData() {
+                let that = this
+                let params = {
+                    year: that.timeIds
+                }
+                apiGetassessmentSummaryList(params).then(datas => {
+                    if (datas && datas.data) {
+                        that.reportTableData = datas.data
+                    }
+                })
+            },
+            handleExport() {
+                let that = this
+                let params = {
+                    year: that.timeIds
+                }
+                apiGetassessmentsummaryReport(params).then(datas => {
+                    if (datas && datas.code === 200) {
+                        apiGetevaluationdownloadReport(datas.data).then(datass => {
+                            let blob = new Blob([datass], {
+                                type: 'application/msword;charset=UTF-8'
+                            })
+                            saveAs(blob, `${datas.data}`)
+                        })
+                    }
+                })
+
+            }
+        }
+    }
+</script>
+
+<style lang="less">
+    .applicationTable {
+        .el-overlay {
+            .el-dialog {
+
+                // margin-top: 5vh !important;
+                .el-dialog__body {
+                    padding: 0 20px 30px 20px !important;
+
+                    .reportTAll {
+
+                        .el-select,
+                        .el-input {
+                            width: 100%;
+                        }
+
+                        .reportTBtn {
+                            padding: 10px 20px 0 20px;
+
+                            .collectSeach {
+                                display: flex;
+                                padding: 24px 20px;
+                                border-bottom: 1px solid#D6DBEA;
+
+                                .exceed {
+                                    display: flex;
+
+                                    .exceedSpan {
+                                        height: 12px;
+                                        font-size: 14px;
+                                        font-family: Microsoft YaHei;
+                                        font-weight: 400;
+                                        color: #8991B0;
+                                        line-height: 12px;
+                                        margin-top: 14px;
+                                    }
+
+                                    .el-date-editor {
+                                        height: 40px;
+                                    }
+                                }
+
+                                span {
+                                    font-size: 14px;
+                                }
+
+                                .PeriodBtn {
+                                    display: flex;
+                                    justify-content: flex-end;
+                                    padding: 20px 0;
+                                }
+
+                                .el-button {
+                                    height: 30px;
+                                    // width:100px;
+                                    padding: 0 30px;
+
+                                    // padding-top: 8px;
+                                    span {
+                                        margin: 0;
+                                    }
+                                }
+                            }
+                        }
+
+                        .reportTTableData {
+                            margin-top: 20px;
+
+                            p {
+                                margin: 10px 0;
+                            }
+
+                            .el-table {
+
+                                .el-input__inner {
+                                    height: 30px !important;
+                                }
+
+                                .el-radio__label {
+                                    display: none;
+                                }
+                            }
+
+                            .el-pagination {
+                                margin-top: 20px;
+                                text-align: end;
+                                position: relative;
+                            }
+                        }
+
+                        .onlyDialog {
+                            .el-overlay {
+                                .el-dialog {
+                                    margin-top: 10vh !important;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                .el-dialog__footer {
+                    .dialog-footer {
+                        display: flex;
+                        justify-content: center;
+
+                        .el-button {
+                            width: 180px !important;
+                            height: 40px !important;
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>

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

@@ -11,6 +11,10 @@
                     <el-input v-model="resDes" placeholder="请输入业务简述"></el-input>
                 </div>
                 <seachs @handleSeach="getSeachData" @handleRest="resetSeach"></seachs>
+                <el-button size="mini" color="#3B7AD1" icon="Operation" v-if="userId === '23031009'"
+                    @click="startTableFn" style="margin-left: 10px">
+                    <span>统计汇总</span>
+                </el-button>
             </div>
             <div class="PeriodBtn" :style="$utils.PeriodBtnSty()">
                 <el-button color="#3B7AD1" size="mini" @click="handleAdd" v-if="userId === '23031009'">
@@ -146,11 +150,13 @@
         </div>
         <!-- @approveMsg="approveMsg" -->
         <start-from-list ref="startFromDetail"></start-from-list>
+        <start-table ref="startTable"></start-table>
     </div>
 </template>
 
 <script>
     import startFromList from './evaluationDeptStartFrom.vue'
+    import startTable from './evaluationDeptStartTab.vue'
     import btns from '../elbuttonS.vue'
     import seachs from '../seachGroup.vue'
     import {
@@ -170,6 +176,7 @@
     export default {
         components: {
             startFromList,
+            startTable,
             btns,
             seachs
         },
@@ -299,6 +306,9 @@
                     }
                 })
             },
+            startTableFn() {
+                this.$refs.startTable.init()
+            },
             modifyDesFn(row) {
                 let that = this
                 let params = {

+ 213 - 0
src/components/assessment/evaluationDeptStartTab.vue

@@ -0,0 +1,213 @@
+<template>
+    <div class="startTableDia">
+        <el-dialog title="统计汇总详情" v-model="editEvaluaVisible" :fullscreen="true" :close-on-click-modal="false">
+            <div class="reportTAll">
+                <div class="reportTBtn">
+                    <div class="collectSeach">
+                        <div class="exceed">
+                            <span class="exceedSpan" style="width: 100px">选择时间:</span>
+                            <el-date-picker v-model="timeIds" type="year" value-format="YYYY" :clearable="false"
+                                placeholder="选择时间" />
+                        </div>
+                        <seachs @handleSeach="getreportTableData" :showRest="false"></seachs>
+                        <el-button type="warning" icon="Download" size="mini" @click="handleExport"
+                            style="margin-left:10px">导出</el-button>
+                    </div>
+                    <div class="reportTTableData">
+                        <el-table :data="reportTableData" ref="report-table" style="width: 100%">
+                            <el-table-column label="部门" prop="deptName" align="center" />
+                            <el-table-column label="序号" type="index" width="50" align="center" />
+                            <el-table-column label="关键业绩指标名称" prop="targetName" align="center" />
+                            <el-table-column label="目标值" prop="targetValue" align="center" />
+                            <el-table-column label="基础分" prop="baseScore" width="80" align="center" />
+                            <el-table-column label="评价标准" prop="evaluationCriteria" align="center" />
+                        </el-table>
+                    </div>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import seachs from '../seachGroup.vue'
+    import {
+        saveAs
+    } from 'file-saver'
+    import ExcelJS from 'exceljs'
+    import fileSave from 'file-saver'
+    import {
+        apiGetplanSummaryList,
+        apiGetplansummaryReport,
+        apiGetevaluationdownloadReport
+    } from '../../api/api'
+    export default {
+        components: {
+            seachs
+        },
+        data() {
+            return {
+                editEvaluaVisible: false,
+                reportTableData: [],
+                timeIds: '',
+                userNameS: '',
+                ispersonDept: window.sessionStorage.getItem('ispersonDept')
+            }
+        },
+        methods: {
+            init() {
+                this.editEvaluaVisible = true
+                this.reportTableData = []
+                this.timeIds = new Date().getFullYear().toString()
+                this.getreportTableData()
+            },
+            sortMethods(a, b, it) {
+                if (a[it] < b[it]) {
+                    return -1
+                }
+            },
+            // 查询数据
+            getreportTableData() {
+                let that = this
+                let params = {
+                    year: that.timeIds
+                }
+                apiGetplanSummaryList(params).then(datas => {
+                    if (datas && datas.data) {
+                        that.reportTableData = datas.data
+                    }
+                })
+            },
+            handleExport() {
+                let that = this
+                let params = {
+                    year: that.timeIds
+                }
+                apiGetplansummaryReport(params).then(datas => {
+                    if (datas && datas.code === 200) {
+                        apiGetevaluationdownloadReport(datas.data).then(datass => {
+                            let blob = new Blob([datass], {
+                                type: 'application/msword;charset=UTF-8'
+                            })
+                            saveAs(blob, `${datas.data}`)
+                        })
+                    }
+                })
+
+            }
+        }
+    }
+</script>
+
+<style lang="less">
+    .startTableDia {
+        .el-overlay {
+            .el-dialog {
+
+                // margin-top: 5vh !important;
+                .el-dialog__body {
+                    padding: 0 20px 30px 20px !important;
+
+                    .reportTAll {
+
+                        .el-select,
+                        .el-input {
+                            width: 100%;
+                        }
+
+                        .reportTBtn {
+                            padding: 10px 20px 0 20px;
+
+                            .collectSeach {
+                                display: flex;
+                                padding: 24px 20px;
+                                border-bottom: 1px solid#D6DBEA;
+
+                                .exceed {
+                                    display: flex;
+
+                                    .exceedSpan {
+                                        height: 12px;
+                                        font-size: 14px;
+                                        font-family: Microsoft YaHei;
+                                        font-weight: 400;
+                                        color: #8991B0;
+                                        line-height: 12px;
+                                        margin-top: 14px;
+                                    }
+
+                                    .el-date-editor {
+                                        height: 40px;
+                                    }
+                                }
+
+                                span {
+                                    font-size: 14px;
+                                }
+
+                                .PeriodBtn {
+                                    display: flex;
+                                    justify-content: flex-end;
+                                    padding: 20px 0;
+                                }
+
+                                .el-button {
+                                    height: 30px;
+                                    // width:100px;
+                                    padding: 0 30px;
+
+                                    // padding-top: 8px;
+                                    span {
+                                        margin: 0;
+                                    }
+                                }
+                            }
+                        }
+
+                        .reportTTableData {
+                            .el-table {
+                                .el-table__body-wrapper {
+                                    height: 65vh !important;
+                                }
+
+                                .el-input__inner {
+                                    height: 30px !important;
+                                }
+
+                                .el-radio__label {
+                                    display: none;
+                                }
+                            }
+
+                            .el-pagination {
+                                margin-top: 20px;
+                                text-align: end;
+                                position: relative;
+                            }
+                        }
+
+                        .onlyDialog {
+                            .el-overlay {
+                                .el-dialog {
+                                    margin-top: 10vh !important;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                .el-dialog__footer {
+                    .dialog-footer {
+                        display: flex;
+                        justify-content: center;
+
+                        .el-button {
+                            width: 180px !important;
+                            height: 40px !important;
+                        }
+                    }
+                }
+            }
+        }
+    }
+</style>

+ 1 - 1
src/utils/baseUrl.js

@@ -10,7 +10,7 @@ switch (process.env.NODE_ENV) {
     case 'development': 
         baseUrl.ROOT = "/api"  //开发环境url
         // baseUrl.URL = "http://10.65.59.67:28800"
-        baseUrl.URL = "http://192.168.2.17:28800"
+        baseUrl.URL = "http://192.168.2.10:28800"
         // baseUrl.URL = "http://10.65.78.23:28800"  //测试环境
         // baseUrl.URL = "http://10.65.78.81:28800"  // 正式环境
         break