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

修改问题;业绩考核系数中权重配置新增导入导出功能;党建考核系数新增导入导出功能;

SunZehao 1 год назад
Родитель
Сommit
47a5c8caaf

+ 2 - 2
src/api/api.js

@@ -23,8 +23,8 @@ export function apiGetModel(url, params) {
 //获取菜单数据
 export function apiGetMenuData() {
     return httpRequest({
-        // url: 'menu/menuList?parentId=10105', // 测试
-        url: 'menu/menuList?parentId=6802', // 生产
+        url: 'menu/menuList?parentId=10105', // 测试
+        // url: 'menu/menuList?parentId=6802', // 生产
         method: 'post'
     })
 }

+ 2 - 0
src/components/assessment/evaluationStartPage.vue

@@ -315,6 +315,8 @@ export default {
                 // organizationEvaluationRuleId: that.ruleForm.evaluateRule,
                 year: that.ruleForm.year,
                 des: that.ruleForm.desc,
+                createOrgId: userMes.unitId,
+                createOrgName: userMes.unitName,
                 createBy: userMes.id,
                 createName: userMes.name
             }

+ 0 - 5
src/components/assessment/monthQuarterFrom.vue

@@ -466,15 +466,10 @@ export default {
             this.$refs.importPage.upload.title = "月/季度单位信息导入"
             this.$refs.importPage.upload.open = true
             this.$refs.importPage.upload.url = '/organization-evaluation-info/import'
-            this.$refs.importPage.upload.urlName = 'standardPointManagementImport'
-            this.$refs.importPage.upload.proName = '月/季度单位信息模板.xlsx'
         },
         successImport(val) {
             this.getDetails(this.rowMsg.id)
         },
-        importLoading(val) {
-            
-        },
         handleExport() {
             let data = []  //接口返回数据
             const workbook = new ExcelJS.Workbook()

+ 144 - 11
src/components/evaluationSystem/achievementKDetail.vue

@@ -23,10 +23,20 @@
                         </div>
                     </el-col>
                 </el-row>
+                <div class="detaTableBtns">
+                    <div class="tableBtn import" @click="handleImport">
+                        <img :src="importIcon" alt="">
+                        <span>导入</span>
+                    </div>
+                    <div class="tableBtn export" @click="handleExport">
+                        <img :src="exportIcon" alt="">
+                        <span>导出</span>
+                    </div>
+                </div>
                 <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
                     <el-tab-pane label="权重分配" name="first">
                          <!-- @select="rowClick" @select-all="rowClick" -->
-                        <el-table :data="weightAllocation" style="width: 100%">
+                        <el-table :data="weightAllocation" style="width: 100%" ref="report-table_day">
                             <!-- <el-table-column type="selection" label="操作" align="center"></el-table-column> -->
                             <el-table-column type="index" label="序号" width="80" />
                             <el-table-column label="考评单位" prop="organizationName" width="300"/>
@@ -49,7 +59,7 @@
                                 <el-table-column label="K4" prop="k4" />
                             </el-table-column>
                             <el-table-column label="K" prop="k" />
-                            <el-table-column label="填报人" prop="createBy" />
+                            <el-table-column label="填报人" prop="createName" />
                             <el-table-column label="填报日期" prop="createTime" width="160" />
                         </el-table>
                     </el-tab-pane>                    
@@ -62,16 +72,24 @@
                 </span>
             </template>
         </el-dialog>
+        <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
     </div>
 </template>
 
 <script>
+import importDailog from '../importPage/importDailog.vue'
 import {apigetyeargroupcoefficientlistById} from '../../api/api'
-import addIcon from '../../assets/btnIcon/add.png'
-import saveIcon from '../../assets/btnIcon/save.png'
-import editIcon from '../../assets/btnIcon/edit.png'
-import deleteIcon from '../../assets/btnIcon/delete.png'
+import exportIcon from '../../assets/btnIcon/export.png'
+import importIcon from '../../assets/btnIcon/import.png'
+import ExcelJS from 'exceljs'
+import fileSave from 'file-saver'
+import * as XLSX from 'xlsx'
+import { saveAs } from 'file-saver'
+import  * as XLSXD from 'xlsx-js-style'
 export default {
+    components: {
+        importDailog
+    },
     data() {
         return {
             dialogVisible: false,
@@ -84,10 +102,8 @@ export default {
                 des: '',
                 year: '',
             },
-            addIcon: addIcon,
-            saveIcon: saveIcon,
-            editIcon: editIcon,
-            deleteIcon: deleteIcon,
+            exportIcon: exportIcon,
+            importIcon: importIcon,
             rowMsg: {},
             weightAllocation: []
         }
@@ -123,6 +139,91 @@ export default {
                     that.weightAllocation = datas.data.coefficientList
                 }
             })
+        },
+        handleImport() {
+            this.$refs.importPage.upload.title = "业绩考核系数信息导入"
+            this.$refs.importPage.upload.open = true
+            this.$refs.importPage.upload.url = '/year-operating-coefficient/import'
+        },
+        successImport(val) {
+            this.getDetails(this.rowMsg.id)
+        },
+        handleExport() {
+            let data = []  //接口返回数据
+            data = this.weightAllocation
+            const workbook = new ExcelJS.Workbook()
+            const worksheet = workbook.addWorksheet('Sheet1')
+            //根据数据自己调整
+            worksheet.columns = [
+                { header: 'ID', key: 'id', width: 26 },
+                { header: '考评单位', key: 'organizationName', width: 26 },
+                { header: '资产管理系数', key: 'zzc', width: 18},
+                { header: '', key: 'k1', width: 18 },
+                { header: '幅度管理系数', key: 'jzs', width: 18 },
+                { header: '', key: 'k2', width: 18 },
+                { header: '效益贡献系数', key: 'zmlrze', width: 18 },
+                { header: '', key: 'fdl', width: 18 },
+                { header: '', key: 'ddlr', width: 18 },
+                { header: '', key: 'k3', width: 18 },
+                { header: '定员管理系数', key: 'dy', width: 18 },
+                { header: '', key: 'k4', width: 18 },
+                { header: 'K', key: 'k', width: 26 },
+                { header: '填报人', key: 'createName', width: 26 },
+                { header: '填报日期', key: 'createTime', width: 26 },
+            ]
+            worksheet.getColumn(3).values = ['资产管理系数', '资产总额'];
+            worksheet.getColumn(4).values = ['', 'K1'];
+            worksheet.getColumn(5).values = ['幅度管理系数', '机组'];
+            worksheet.getColumn(6).values = ['', 'K2'];
+            worksheet.getColumn(7).values = ['效益贡献系数', '账面利润总额'];
+            worksheet.getColumn(8).values = ['', '发电量'];
+            worksheet.getColumn(9).values = ['', '度电利润'];
+            worksheet.getColumn(10).values = ['', 'K3'];
+            worksheet.getColumn(11).values = ['定员管理系数', '定员'];
+            worksheet.getColumn(12).values = ['', 'K4'];
+            //合并单元格
+            worksheet.mergeCells('A1:A2');
+            worksheet.mergeCells('B1:B2');
+            worksheet.mergeCells('C1:D1');
+            worksheet.mergeCells('E1:F1');
+            worksheet.mergeCells('G1:H1:I1:G1');
+            worksheet.mergeCells('K1:L1');
+            worksheet.mergeCells('M1:M2');
+            worksheet.mergeCells('N1:N2');
+            worksheet.mergeCells('O1:O2');
+            worksheet.getRow(1).font = {
+                size: 12,
+                bold: true
+            }
+            worksheet.getRow(2).font = {
+                size: 12,
+                bold: true
+            }
+            worksheet.addRows(data)
+
+            workbook.xlsx.writeBuffer().then(buffer => {
+                //这里为type
+                const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8' })
+                fileSave(blob, `数据导出.xlsx`)
+            })
+        },
+        exportExcel() {
+            let $e = this.$refs['report-table_day'].$el
+            try {
+                let $table = $e.querySelector('.el-table__fixed')
+                if(!$table) {
+                    $table = $e
+                }
+                const wb = XLSX.utils.table_to_book($table, {raw:true})
+
+                const wbout = XLSXD.write(wb, {bookType: 'xlsx', bookSST:true, type: 'array'})
+                saveAs(
+                    new Blob([wbout],{type: 'application/octet-stream'}),
+                    `权重分配数据导出.xlsx`,
+                )
+            } catch (e) {
+                if (typeof console !== 'undefined') console.error(e)
+            }
         }
     }
 }
@@ -148,7 +249,6 @@ export default {
                         border: 1px solid #D6DBEA;
                         padding: 10px 20px;
                         border-radius: 10px;
-                        margin-bottom: 20px;
                         .danjuMsg_data{
                             padding: 5px 0 10px 0;
                             .data_tit{
@@ -180,6 +280,39 @@ export default {
                     .el-select, .el-input{
                         width: 100%;
                     }
+                    .detaTableBtns{
+                        display: flex;
+                        width: 200px;
+                        position: relative;
+                        top: 32px;
+                        left: 88vw;
+                        z-index: 11111;
+                        .tableBtn {
+                            display: flex;
+                            margin-right: 30px;
+                            img{
+                                margin-right: 5px;
+                                margin-top: 1px;
+                            }
+                            span{
+                                font-size: 14px;
+                                font-family: Microsoft YaHei;
+                                font-weight: 400;
+                            }
+                        }
+                        .import{
+                            cursor: pointer;
+                            span{
+                                color: #ce1e78;
+                            }
+                        }
+                        .export{
+                            cursor: pointer;
+                            span{
+                                color: #2baa8a;
+                            }
+                        }
+                    }
                     .el-tabs{
                         .el-tabs__header{
                             .el-tabs__nav{

+ 7 - 14
src/components/evaluationSystem/achievementKPage.vue

@@ -199,10 +199,10 @@
                                             <el-input-number v-model="scope.row.k" :precision="2" :step="0.1" :min="0" :max="1" />
                                         </template>
                                     </el-table-column>
-                                    <el-table-column label="填报人">
-                                        <template #default="scope">
+                                    <el-table-column label="填报人" prop="createName">
+                                        <!-- <template #default="scope">
                                             <el-input v-model="scope.row.createBy" placeholder="请输入填报人"></el-input>
-                                        </template>
+                                        </template> -->
                                     </el-table-column>
                                     <el-table-column label="填报日期" prop="createTime">
                                         <!-- <template #default="scope">
@@ -228,19 +228,17 @@
             </div>
             <indicator-item ref="indicatorItem"></indicator-item>
         </div>
-        <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
         <achievement-detail ref="achievementDetail"></achievement-detail>
     </div>
 </template>
 
 <script>
-import importDailog from '../importPage/importDailog.vue'
 import achievementDetail from './achievementKDetail.vue'
 import btns from '../elbuttonS.vue'
 import {apiGetyeargroupcoefficientList, apiGetyeargroupcoefficientsaveGroup, apiDeleteyearcoefficientRemove,apiGetbinsectionList,
  apiGetorganizationstructureFromTree, apiGetorganizationgetTree, apigetyeargroupcoefficientlistById} from '../../api/api'
 export default {
-  components: { importDailog, btns, achievementDetail },
+  components: { btns, achievementDetail },
     data() {
         return {
             dialogVisible: false,
@@ -327,6 +325,7 @@ export default {
             })
         },
         addDetail() {
+            let userMes = JSON.parse(window.sessionStorage.getItem('user'))
             let obj = {
                 id: Math.random(),
                 organizationId: '',
@@ -342,7 +341,8 @@ export default {
                 dy: 0,
                 k4: 0,
                 k: 0,
-                createBy: '',
+                createBy: userMes.id,
+                createName: userMes.name,
                 createTime: this.getPowerTime(new Date())
             }
             this.weightAllocation.push(obj)
@@ -518,13 +518,6 @@ export default {
             this.coefficientStr = ''
             this.getachievementData()
         },
-        successImport(val) {
-            this.loadingImport = false
-            this.getachievementData()
-        },
-        importLoading(val) {
-            this.loadingImport = true
-        },
         handleSizeChange(val){
             this.page.pagesize = val
             this.getachievementData()

+ 12 - 10
src/components/evaluationSystem/partyBuildingKPage.vue

@@ -18,15 +18,15 @@
             </div>
             <div class="PeriodBtn">
                 <btns
-                :showImport="false"
-                :showExport="false"
+                :showImport="true"
+                :showExport="true"
                 :showAdd="$utils.havePurview('partBuildK:oneLevel:add')"
                 :showSave="$utils.havePurview('partBuildK:oneLevel:save')"
                 :showDelete="$utils.havePurview('partBuildK:oneLevel:delete')"
                 :disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
                 :disDelete="changeDateSelect.length === 0"
-                :disImport="true"
-                :disExport="true"
+                :disImport="false"
+                :disExport="false"
                 @handleAdd="handleAdd"
                 @handleEdit="handleEdit"
                 @handleDelete="handleDelete"
@@ -105,17 +105,18 @@
             </el-dialog>
             <indicator-item ref="indicatorItem"></indicator-item>
         </div>
+        <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
     </div>
 </template>
 
 <script>
-// import importDailog from '../importPage/importDailog.vue'
+import importDailog from '../importPage/importDailog.vue'
 // import partyBuildingDetail from './partyBuildingKDetail.vue'
 import btns from '../elbuttonS.vue'
 import {apiGetpartybuildingList, apiDeletepartyBuildRemove,apiGetbinsectionList,
  apiGetorganizationgetTree, apiPostpartybuildSave} from '../../api/api'
 export default {
-  components: { btns },
+  components: { btns, importDailog },
     data() {
         return {
             dialogVisible: false,
@@ -326,9 +327,6 @@ export default {
             this.loadingImport = false
             this.getpartyBuildingData()
         },
-        importLoading(val) {
-            this.loadingImport = true
-        },
         handleSizeChange(val){
             this.page.pagesize = val
             this.getpartyBuildingData()
@@ -338,8 +336,12 @@ export default {
             this.getpartyBuildingData()
         },
         handleImport() {
-            this.$refs.importPage.upload.title = "考评指标管理信息导入"
+            this.$refs.importPage.upload.title = "党建考核系数信息导入"
             this.$refs.importPage.upload.open = true
+            this.$refs.importPage.upload.url = '/party-building-multiplier/import'
+        },
+        handleExport() {
+            this.$utils.downloadPer('party-building-multiplier/export', '党建考核系数信息数据.xlsx')
         },
     }
 }

+ 2 - 2
src/utils/baseUrl.js

@@ -17,8 +17,8 @@ switch (process.env.NODE_ENV) {
  
     case 'production': 
         // baseUrl.ROOT = "http://123.60.219.66:28800/" 
-        // baseUrl.ROOT = "http://10.65.78.23:28800/" //测试环境
-        baseUrl.ROOT = "http://10.65.78.81:28800/"  // 正式环境
+        baseUrl.ROOT = "http://10.65.78.23:28800/" //测试环境
+        // baseUrl.ROOT = "http://10.65.78.81:28800/"  // 正式环境
         break 
 }
 

+ 21 - 0
src/utils/index.js

@@ -1,10 +1,31 @@
 import { saveAs } from 'file-saver'
 import { getToken } from '../api/auth'
+import {apiGetExportMsg} from '../api/api'
 
 //检查空
 const checkNull = val => val === undefined || val === null
 
 const until = {
+    //后端导出
+    downloadPer(url,fileName, idss, idsmo) {
+        let params = {}
+        // if (!idsmo) {
+        //     params = {
+        //         ids: idss ? idss.join(',') : ''
+        //     }
+        // } else {
+        //     params = {
+        //         idsMv: idss ? idss.join(',') : '',
+        //         idsBcr: idsmo ? idsmo.join(',') : '',
+        //     }
+        // }
+        apiGetExportMsg(url,params).then(datas =>{
+            let blob = new Blob([datas])
+            saveAs(blob, fileName)
+        }).catch((r) => {
+            console.error(r)
+        })
+    },
     // 权限分配
     havePurview(data) {
         let per = JSON.parse(window.localStorage.getItem('purview'))