瀏覽代碼

本部部门业绩指标计划页面列表服务联调,新增修改删除服务联调;部门考评配置页面修改问题;月季度考评详情新增搜索功能;

SunZehao 2 年之前
父節點
當前提交
19723bcc30

+ 37 - 6
src/api/api.js

@@ -129,7 +129,7 @@ export function apiGetworkflowgetOpinion(params) {
 }
 
 
-//部门目标责任
+//单位考评目标启动 ---列
 export function apiGetdeptresponsibilityList(params) {
     return httpRequest({
         url: 'dept-responsibility/list',
@@ -137,10 +137,22 @@ export function apiGetdeptresponsibilityList(params) {
         params: params
     })
 }
-//----"部门目标责任表-保存or修改"
+//部门考评目标启动 ---列表
+export function apiGetevaluatiodeptplanList(params) {
+    return httpRequest({
+        url: 'evaluation-dept-plan/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"单位考评目标启动-保存or修改"
 export function apiGetdeptresponsibilitySave(params) {
     return httpRequest.post('dept-responsibility/save', params)
 }
+//----"部门考评目标启动-保存or修改"
+export function apiGetevaluationdeptplanSave(params) {
+    return httpRequest.post('evaluation-dept-plan/save', params)
+}
 
 //------考评启动(流程)
 export function apiGetdoAction(params) {
@@ -164,7 +176,7 @@ export function apiGetdeptresponsibilitygenerate(params) {
         params: params
     })
 }
-//------考评启动-详情
+//------单位考评启动-详情
 export function apiGetdeptresponDetail(params) {
     return httpRequest({
         url: 'responsibility-indicator-info/planValueList',
@@ -172,17 +184,36 @@ export function apiGetdeptresponDetail(params) {
         params: params
     })
 }
-//------考评启动-详情-修改
+//------部门考评启动-详情
+export function apiGetevaluationdeptplanDetail(params) {
+    return httpRequest({
+        url: `evaluation-dept-plan/details/${params}`,
+        method: 'get'
+    })
+}
+//------单位考评启动-详情-修改
 export function apiGetindicatorsaveBatchDto(params) {
     return httpRequest.post('responsibility-indicator-info/saveBatchDto', params)
 }
-//----"考评启动-删除"
+//------部门考评启动-详情-修改
+export function apiGetevaluationdeptplanUpdate(params) {
+    return httpRequest.post('evaluation-dept-plan/update', params)
+}
+
+//----"单位--考评启动-删除"
 export function apiPostresponsiDelete(params) {
     return httpRequest({
         url: `dept-responsibility/remove/${params}`,
         method: 'post'
     })
 }
+//----"部门--考评启动-删除"
+export function apiPostevaluationdeptplanDelete(params) {
+    return httpRequest({
+        url: `evaluation-dept-plan/removeAll/${params}`,
+        method: 'post'
+    })
+}
 
 //----单位/部门考评配置所有数据
 export function apiGetOrganizationListAll(params) {
@@ -247,7 +278,7 @@ export function apiPostOrgEvaSave(params) {
 //月/年考评指标明细
 export function apiGetOrgEvalInfoList(params) {
     return httpRequest({
-        url: 'organization-evaluation-info/finishValueList',
+        url: 'organization-evaluation-info/finishValueListNew',
         method: 'get',
         params: params
     })

+ 608 - 0
src/components/assessment/evaluationDeptStartFrom.vue

@@ -0,0 +1,608 @@
+<template>
+    <div class="deptstartFrom">
+        <el-dialog title="考评启动详情" v-model="dialogVisible" :fullscreen="true" :close-on-click-modal="false">
+            <div class="startDetail">
+                <p class="starttitleSty">单据信息:</p>
+                <el-row class="danjuMsg">
+                    <el-col :span="6">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">业务编号:</span>
+                            <span>{{receiptMsg.code}}</span>
+                        </div>
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">创建日期:</span>
+                            <span>{{receiptMsg.createDate}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">业务简述:</span>
+                            <span>{{receiptMsg.des}}</span>
+                        </div>
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">考评周期:</span>
+                            <span>{{receiptMsg.type}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">流程状态:</span>
+                            <span>{{receiptMsg.stage}}</span>
+                        </div>
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">年度:</span>
+                            <span>{{receiptMsg.year}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">创建人:</span>
+                            <span>{{receiptMsg.createName}}</span>
+                        </div>
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">单据状态:</span>
+                            <span>{{receiptMsg.recStage}}</span>
+                        </div>
+                    </el-col>
+                </el-row>
+                <div class="btnASeach">
+                    <div class="detaTableBtns">
+                        <div class="tableBtn save" @click="saveDetail">
+                            <img :src="saveIcon" alt="">
+                            <span>保存</span>
+                        </div>
+                        <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>
+                </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="值">
+                                <template #default="scope">
+                                    <el-input v-model="scope.row.targetValue"
+                                     type="textarea" :rows="1" 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" >
+                                <template #default="scope">
+                                     <!-- :disabled="!scope.row.updateMark" -->
+                                    <el-select v-model="scope.row.auditStatus" :disabled="!scope.row.updateMark" placeholder="请选择审核状态">
+                                        <el-option
+                                        v-for="item in statusData"
+                                        :key="item.id"
+                                        :label="item.name"
+                                        :value="item.id">
+                                        </el-option>
+                                    </el-select>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <el-pagination
+                            @current-change="handleCurrentChangeLeft"
+                            :current-page="pageLeft.currentPage"
+                            :page-size="pageLeft.pagesize"
+                            layout="total, prev, pager, next, jumper"
+                            :total="pageLeft.total">
+                        </el-pagination>
+                    </el-tab-pane>
+                </el-tabs>
+                
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button type="primary" @click="dialogVisible = false">取 消</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
+    </div>
+</template>
+
+<script>
+import importDailog from '../importPage/importDailog.vue'
+import {apiGetevaluationdeptplanDetail,apiGetevaluationdeptplanUpdate, apiGetOrganizationRule, apiPostIsdoAction,
+apiGetindicatorListAll, apiGetbinstageList, apiGetIndicatorTypeList} from '../../api/api'
+import ExcelJS from 'exceljs'
+import fileSave from 'file-saver'
+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'
+export default {
+    components: {
+        importDailog
+    },
+    data() {
+        return {
+            dialogVisible: false,
+            activeName: 'first',
+            quantifiedList: [],
+            changeDateSelect: [],
+            receiptMsg: {
+                code: '',
+                des: '',
+                stage: '',
+                createName: '',
+                createDate: '',
+                type: '',
+                year: '',
+                recStage: ''
+            },
+            addIcon: addIcon,
+            saveIcon: saveIcon,
+            editIcon: editIcon,
+            deleteIcon: deleteIcon,
+            exportIcon: exportIcon,
+            importIcon: importIcon,
+            rowMsg: {},
+            orgruleData: [],
+            indicatorTypeData: [],
+            stageData: [],
+            indicItemoptions: [],
+            sectionNameArr: [],
+            deptNameArr: [],
+            statusData: [],
+            pageLeft:{
+                pagesize: 15,
+                currentPage: 1,
+                total: 0
+            },
+            pageRight:{
+                pagesize: 15,
+                currentPage: 1,
+                total: 0
+            },
+        }
+    },
+    created() {
+        this.statusData = [
+            {
+                name: '已完成',
+                id: '1'
+            },
+            {
+                name: '待审核',
+                id: '0'
+            },
+            {
+                name: '未开始',
+                id: '-1'
+            }
+        ]
+    },
+    methods: {
+        init(row) {
+            this.dialogVisible = true
+            this.activeName = 'first'
+            this.receiptMsg = {
+                code: row.responsibilityCode,
+                des: row.des,
+                stage: row.stage,
+                createName: row.createName,
+                createDate: row.createTime,
+                type: row.checkCycle === 'YDKP'?'月度考评':row.checkCycle === 'JDKP'?'季度考评':'年度考评',
+                year: row.appraisalYear,
+                recStage: '有效'
+            }
+            this.getDetails(row.id)
+            // this.getOrgRule(row)
+            this.getindList()
+            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
+                    }
+                    this.deptNameArr.push(obj)
+                }
+            })
+        },
+        handleClick() {
+            this.changeDateSelect = []
+        },
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        handleCurrentChangeLeft(val) {
+            this.pageLeft.currentPage = val
+        },
+        handleCurrentChangeRight(val) {
+            this.pageRight.currentPage = val
+        },
+        //获取详情
+        getDetails(id) {
+            let that = this
+            that.quantifiedList = []
+            apiGetevaluationdeptplanDetail(id).then(datas =>{
+                if (datas && datas.data) {
+                    that.quantifiedList = datas.data
+                    that.pageLeft.total = datas.data.length
+                }
+            })
+        },
+        addTableDetail() {
+            let obj = {
+                showInput: true,
+                stageName: '',
+                sectionName: '',
+                organizationName: '',
+                deptName: '',
+                typeName: '',
+                optionName: '',
+                nonQuantifiedValue: ''
+            }
+            this.nonQuantifiedList.unshift(obj)
+        },
+        saveDetail() {
+            let that = this
+            let params = []
+            that.quantifiedList.forEach(item =>{
+                let obj = {
+                    id: item.id,
+                    targetValue: item.targetValue,
+                    auditStatus: item.auditStatus
+                }
+                params.push(obj)
+            })
+            apiGetevaluationdeptplanUpdate(params).then(datas =>{
+                if (datas) {
+                    if (datas.success) {
+                        that.$message({
+                            message: '保存成功',
+                            type: 'success'
+                        });
+                        that.getDetails(that.rowMsg.id)
+                    } else {
+                        that.$message({
+                            message: datas.data,
+                            type: 'error'
+                        })
+                    }
+                }
+            })
+        },
+        examineAndApprove(type) {
+            let that = this
+            let actionCS = ''
+            if (type === 'agree') {
+                if (that.rowMsg.taskType === 'SIGN') {
+                    actionCS = 'signAgree'
+                } else if (that.rowMsg.taskType === 'NORMAL') {
+                    actionCS = 'agree'
+                }
+            } else {
+                if (that.rowMsg.taskType === 'SIGN') {
+                    actionCS = 'signReject'
+                } else if (that.rowMsg.taskType === 'NORMAL') {
+                    actionCS = 'reject'
+                }
+            }
+            let params = {
+                taskId: that.rowMsg.id, //任务ID
+                nodeId: that.rowMsg.nodeId, //节点ID
+                action: actionCS, //固定值
+                instanceId: that.rowMsg.instId, //流程实例ID
+                opinion: that.descMsg, //审批意见
+                iamCode: window.localStorage.getItem('code'), //认证后code值
+                taskName: that.rowMsg.name,
+                defKey: that.instanceChild.defKey,
+                bizKey: that.instanceChild.bizKey
+            }
+            apiPostIsdoAction(params).then(datas =>{
+                if (datas && datas.data) {
+                    if (datas.data.isOk) {
+                        that.$message({
+                            message: datas.data.data,
+                            type: 'success'
+                        })
+                        that.dialogVisible = false
+                        that.$emit('approveMsg', datas.data.isOk)
+                    } else {
+                        that.$message({
+                            message: datas.data.msg,
+                            type: 'error'
+                        })
+                    }
+                }
+            })
+        },
+        handleImport() {
+            this.$refs.importPage.upload.title = "考评目标信息导入"
+            this.$refs.importPage.upload.open = true
+            this.$refs.importPage.upload.url = '/responsibility-indicator-info/import'
+        },
+        successImport(val) {
+            this.getDetails(this.rowMsg.id)
+        },
+        handleExport() {
+            let data = []  //接口返回数据
+            const workbook = new ExcelJS.Workbook()
+            const worksheet = workbook.addWorksheet('Sheet1')
+            //根据数据自己调整
+            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 },
+            ]
+            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)
+                    }
+                })
+            }
+            worksheet.columns = colums
+            worksheet.getRow(1).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`)
+            })
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.deptstartFrom{
+    .el-overlay{
+        .el-dialog{
+            // margin-top: 7vh;
+            .el-dialog__body{
+                padding: 0 20px !important;
+                .startDetail{
+                    .starttitleSty{
+                        font-size: 18px;
+                        font-family: Microsoft YaHei;
+                        font-weight: bold;
+                        color: #3B7AD1;
+                        // line-height: 12px;
+                        margin: 20px 0 20px 10px;
+                    }
+                    .danjuMsg{
+                        border: 1px solid #D6DBEA;
+                        padding: 10px 20px;
+                        border-radius: 10px;
+                        margin-bottom: 20px;
+                        .danjuMsg_data{
+                            padding: 5px 0 10px 0;
+                            .data_tit{
+                                margin-right: 10px;
+                                font-weight: bold;
+                                font-size: 14px;
+                                font-family: Microsoft YaHei;
+                                color: #8991B0;
+                            }
+                            .data_tit_wd{
+                                display: inline-block;
+                                width: 90px;
+                            }
+                            .el-form-item--small{
+                                .el-input{
+                                    height: 25px;
+                                    width: 160px;
+                                }
+                                margin-bottom: 0;
+                                .el-input-number{
+                                    height: 25px;
+                                    .el-input-number__decrease, .el-input-number__increase{
+                                        right: -39px;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .btnASeach{
+                        display: flex;
+                        z-index: 11111;
+                        justify-content: end;
+                        position: relative;
+                        top: 32px;
+                        left: 50vw;
+                        width: 50%;
+                        .detaTableBtns{
+                            display: flex;
+                            width: 300px;
+                            margin-top: 5px;
+                            .tableBtn {
+                                display: flex;
+                                height: 20px;
+                                margin: 0 10px;
+                                img{
+                                    margin-right: 5px;
+                                    margin-top: 1px;
+                                }
+                                span{
+                                    font-size: 14px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: 400;
+                                }
+                            }
+                            .add{
+                                cursor: pointer;
+                                span{
+                                    color: #3B7AD1;
+                                }
+                            }
+                            .save{
+                                cursor: pointer;
+                                span{
+                                    color: #50C14E;
+                                }
+                            }
+                            .edit{
+                                span{
+                                    color: #F5A623;
+                                }
+                            }
+                            .delete{
+                                cursor: no-drop;
+                                span{
+                                    color: #F65177;
+                                }
+                            }
+                            .import{
+                                cursor: pointer;
+                                span{
+                                    color: #ce1e78;
+                                }
+                            }
+                            .export{
+                                cursor: pointer;
+                                span{
+                                    color: #2baa8a;
+                                }
+                            }
+                        }
+                    }
+                    .el-tabs{
+                        .el-tabs__header{
+                            .el-tabs__nav{
+                                .el-tabs__item{
+                                    font-size: 18px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: bold;
+                                    margin: 0 10px;                                    
+                                    color: #8991B0;
+                                }
+                                .is-active{
+                                    font-size: 18px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: bold;
+                                    color: #3B7AD1;
+                                    margin: 0 10px;
+                                }
+                            }
+                        }
+                        
+                        .el-table{
+                            margin-bottom: 10px;
+                            .el-table__body-wrapper{
+                                height: 50vh;
+                            }
+                            .el-table__row{
+                                .cell{
+                                    .el-input{
+                                        height: 24px;
+                                        .el-input__inner{
+                                            height: 24px;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            .el-dialog__footer{
+                .dialog-footer{
+                    display: flex;
+                    justify-content: center;
+                    .el-button{
+                        width: 180px !important;
+                        height: 40px !important;
+                    }
+                }
+            }
+        }
+    }
+    
+}
+</style>

+ 55 - 93
src/components/assessment/evaluationDeptStartPage.vue

@@ -18,8 +18,8 @@
                 :showImport="false"
                 :showExport="false"
                 :showSave="false"
-                :showAdd="$utils.havePurview('evalStart:oneLevel:add')"
-                :showDelete="$utils.havePurview('evalStart:oneLevel:delete')"
+                :showAdd="true"
+                :showDelete="true"
                 :disDelete="changeDateSelect.length === 0"
                 :disImport="true"
                 :disExport="true"
@@ -32,19 +32,19 @@
                  @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="考评部门" width="400">
                         <template #default="scope">
                             <el-tooltip
                                 class="box-item"
                                 effect="customized"
-                                :content="scope.row.createOrgName"
+                                :content="scope.row.deptName"
                                 placement="top"
                             >
-                                <span class="tooltipCC">{{scope.row.createOrgName}}</span>
+                                <span class="tooltipCC">{{scope.row.deptName}}</span>
                             </el-tooltip>
                         </template>
                     </el-table-column>
-                    <el-table-column label="考评年度" prop="year" width="120" />
+                    <el-table-column label="考评年度" prop="appraisalYear" width="120" />
                     <el-table-column label="业务简述" prop="des" width="400">
                         <template #default="scope">
                             <div v-if="!scope.row.chngeDes">
@@ -63,13 +63,6 @@
                             </div>
                         </template>
                     </el-table-column>
-                    <!-- <el-table-column label="业务类别">
-                        <template #default="scope">
-                            <span v-if="scope.row.checkCycle === 'YDKP'" style="font-size: 12px;">月度考评</span>
-                            <span v-else-if="scope.row.checkCycle === 'JDKP'" style="font-size: 12px;">季度考评</span>
-                            <span v-else style="font-size: 12px;">年度考评</span>
-                        </template>
-                    </el-table-column> -->
                     <el-table-column label="流程状态" prop="stage" width="200">
                         <template #default="scope">
                             <p class="indicitem" @click="seeStates(scope.row)">{{scope.row.stage}}</p>
@@ -95,7 +88,7 @@
                 <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="organizationType">
-                            <el-select v-model="ruleForm.organizationType" placeholder="请选择考评类别" @change="(val)=>chooseRule(val,'类别')">
+                            <el-select v-model="ruleForm.organizationType" placeholder="请选择考评类别" disabled>
                                 <el-option
                                 v-for="item in organizationType"
                                 :key="item.code"
@@ -105,7 +98,7 @@
                             </el-select>
                         </el-form-item>                            
                         <el-form-item label="考评周期" prop="evaluationCycle">
-                            <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择考评周期" disabled @change="(val)=>chooseRule(val,'周期')">
+                            <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择考评周期" disabled>
                                 <el-option
                                 v-for="item in periodData"
                                 :key="item.keyValue"
@@ -115,16 +108,6 @@
                                 </el-option>
                             </el-select>
                         </el-form-item>
-                        <!-- <el-form-item label="考评规则" prop="evaluateRule">
-                            <el-select v-model="ruleForm.evaluateRule"  placeholder="请选择考评规则">
-                                <el-option
-                                v-for="item in ruleDataAll"
-                                :key="item.id"
-                                :label="item.evaluateRuleName"
-                                :value="item.id">
-                                </el-option>
-                            </el-select>
-                        </el-form-item> -->
                         <el-form-item label="年份" prop="year">
                             <el-date-picker
                                 v-model="ruleForm.year"
@@ -133,9 +116,6 @@
                                 placeholder="请选择年份"
                                 />
                         </el-form-item>
-                        <el-form-item label="月份" v-if="!isShowYear">
-                            <el-input-number v-model="ruleForm.month" :min="1" :max="12" />
-                        </el-form-item>
                         <el-form-item label="描述" prop="desc">
                             <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
                         </el-form-item>
@@ -169,11 +149,10 @@
 </template>
 
 <script>
-import startFromList from './evaluationStartFrom.vue'
+import startFromList from './evaluationDeptStartFrom.vue'
 import btns from '../elbuttonS.vue'
-import { getToken } from '../../api/auth'
-import {apiGetdeptresponsibilityList, apiGetdeptresponsibilitySave,apiGetdoAction,apiGetworkflowgetOpinion,
-apiGetdeptresponsibilitygenerate, apiGetdatadictionaryList, apiPostresponsiDelete} from '../../api/api'
+import {apiGetevaluatiodeptplanList, apiGetevaluationdeptplanSave,apiGetdoAction,apiGetworkflowgetOpinion,
+apiGetdeptresponsibilitygenerate, apiGetdatadictionaryList, apiPostevaluationdeptplanDelete} from '../../api/api'
 export default {
     components: {
         startFromList,
@@ -221,7 +200,6 @@ export default {
             organizationType: [],
             periodData: [],
             ruleDataAll: [],
-            isShowYear: true,
             rescode: '',
             resDes: '',
             stageArr: []
@@ -248,11 +226,10 @@ export default {
             let params = {
                 pageNum: that.page.currentPage,
                 pageSize: that.page.pagesize,
-                chechCycle: 'NDKP',
                 responsibilityCode: that.rescode,
                 des: that.resDes
             }
-            apiGetdeptresponsibilityList(params).then(datas =>{
+            apiGetevaluatiodeptplanList(params).then(datas =>{
                 if (datas && datas.data) {
                     that.evaluationStartData = datas.data.records
                     that.page.total = datas.data.total
@@ -271,18 +248,9 @@ export default {
                 }
             })
         },
-        chooseRule(val, type) {
-            if (type === '周期') {
-                if (val === 'YDKP' || val === 'JDKP') {
-                    this.isShowYear = false
-                } else {
-                    this.isShowYear = true
-                }
-            }
-        },
         modifyDesFn(row) {
             let that = this
-            apiGetdeptresponsibilitySave(row).then(datas =>{
+            apiGetevaluationdeptplanSave(row).then(datas =>{
                 if (!datas.success) {
                     that.$message({
                         message: datas.message,
@@ -308,25 +276,19 @@ export default {
         //新增/修改考评启动数据
         saveAndEditIndicatorData() {
             let that = this
-            let userMes = JSON.parse(window.sessionStorage.getItem('user'))
+            // let userMes = JSON.parse(window.sessionStorage.getItem('user'))
             let params = {
-                organizationType: that.ruleForm.organizationType,
-                checkCycle: that.ruleForm.evaluationCycle,
-                // organizationEvaluationRuleId: that.ruleForm.evaluateRule,
-                year: that.ruleForm.year,
+                evaluationCategory: that.ruleForm.organizationType,
+                businessClass: that.ruleForm.evaluationCycle,
+                appraisalYear: that.ruleForm.year,
                 des: that.ruleForm.desc,
-                createOrgId: userMes.unitId,
-                createOrgName: userMes.unitName,
-                createBy: userMes.id,
-                createName: userMes.name
+                // createBy: userMes.id,
+                // createName: userMes.name
             }
             if (that.isSave) {
-                params.id = this.evalradio.id
-            }
-            if (!that.isShowYear) {
-                params.month = that.ruleForm.month
+                params.id = that.evalradio.id
             }
-            apiGetdeptresponsibilitySave(params).then(datas =>{
+            apiGetevaluationdeptplanSave(params).then(datas =>{
                 if (!datas.success) {
                     that.$message({
                         message: datas.message,
@@ -353,10 +315,10 @@ export default {
         agetdeptresponsibility(row) {
             let that = this
             let par = {
-                defKey: "dwkpmbqd",
+                defKey: "bbbmyjzbjh",
                 businessKey: row.id,
                 action: "start",
-                opinion: "考评目标启动",
+                opinion: "本部部门业绩指标计划启动",
                 iamCode: window.localStorage.getItem('code')
             }
             if (row.instId === null || row.instId === '') {
@@ -469,7 +431,7 @@ export default {
             this.$nextTick(() =>{
                 this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
-                    organizationType: '',
+                    organizationType: 'BMKP',
                     evaluationCycle: 'NDKP',
                     // evaluateRule: '',
                     year: '',
@@ -490,7 +452,7 @@ export default {
                 that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                apiPostresponsiDelete(paramsArr.join(',')).then(datas =>{
+                apiPostevaluationdeptplanDelete(paramsArr.join(',')).then(datas =>{
                     that.$message({
                         type: 'success',
                         message: '删除成功!'
@@ -508,38 +470,26 @@ export default {
 .evaluationStart{
     .evaluationStartBtn{
         .collectSeach{
+            display: flex;
+            padding: 24px 20px;
+            border-bottom: 1px solid#D6DBEA;
+            .exceed{
                 display: flex;
-                padding: 24px 20px;
-                border-bottom: 1px solid#D6DBEA;
-                .exceed{
-                    display: flex;
-                    .exceedSpan{
-                        width: 100px;
-                        height: 12px;
-                        font-size: 14px;
-                        font-family: Microsoft YaHei;
-                        font-weight: 400;
-                        color: #8991B0;
-                        line-height: 12px;
-                        margin-top: 14px;
-                    }
-                    .el-input{
-                        margin-right:10px;
-                        height: 40px;
-                        .el-input__inner{
-                            height:40px;
-                        }
-                        .el-input__suffix{
-                            .el-select__caret{
-                                line-height:30px;
-                            }
-                        }
-                    }
+                .exceedSpan{
+                    width: 100px;
+                    height: 12px;
+                    font-size: 14px;
+                    font-family: Microsoft YaHei;
+                    font-weight: 400;
+                    color: #8991B0;
+                    line-height: 12px;
+                    margin-top: 14px;
                 }
-                .el-select{
+                .el-input{
                     margin-right:10px;
+                    height: 40px;
                     .el-input__inner{
-                        height:30px;
+                        height:40px;
                     }
                     .el-input__suffix{
                         .el-select__caret{
@@ -547,14 +497,26 @@ export default {
                         }
                     }
                 }
+            }
+            .el-select{
+                margin-right:10px;
+                .el-input__inner{
+                    height:30px;
+                }
+                .el-input__suffix{
+                    .el-select__caret{
+                        line-height:30px;
+                    }
+                }
+            }
         }
         span{
             font-size:14px;
         }
         .PeriodBtn{
             display: flex;
-                justify-content: end;
-                padding: 20px 0;
+            justify-content: end;
+            padding: 20px 0;
         }
         .el-button{
             height: 30px;

+ 2 - 2
src/components/assessment/evaluationMonthPage.vue

@@ -37,10 +37,10 @@
                             <el-tooltip
                                 class="tooltipName"
                                 effect="customized"
-                                :content="scope.row.organizationName"
+                                :content="scope.row.createOrgName"
                                 placement="top"
                             >
-                                <span class="tooltipCC">{{scope.row.organizationName}}</span>
+                                <span class="tooltipCC">{{scope.row.createOrgName}}</span>
                             </el-tooltip>
                         </template>
                     </el-table-column>

+ 2 - 2
src/components/assessment/evaluationQuarterPage.vue

@@ -38,10 +38,10 @@
                             <el-tooltip
                                 class="tooltipName"
                                 effect="customized"
-                                :content="scope.row.organizationName"
+                                :content="scope.row.createOrgName"
                                 placement="right"
                             >
-                                <span class="tooltipCC">{{scope.row.organizationName}}</span>
+                                <span class="tooltipCC">{{scope.row.createOrgName}}</span>
                             </el-tooltip>
                         </template>
                     </el-table-column>

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

@@ -20,7 +20,7 @@
                             <span>{{receiptMsg.des}}</span>
                         </div>
                         <div class="danjuMsg_data">
-                            <span class="data_tit">业务类别:</span>
+                            <span class="data_tit">考评周期:</span>
                             <span>{{receiptMsg.type}}</span>
                         </div>
                     </el-col>

+ 176 - 76
src/components/assessment/monthQuarterFrom.vue

@@ -45,30 +45,47 @@
                         </div>
                     </el-col>
                 </el-row>
-                <div class="detaTableBtns">
-                    <div class="tableBtn add" @click="addTableDetail" v-if="activeName === 'second'">
-                        <img :src="addIcon" alt="">
-                        <span>新增</span>
+                <div class="btnASeach">
+                    <div class="seachFor">
+                        <el-select v-model="moduleNameSa" placeholder="请选择业务属性">
+                            <el-option
+                            v-for="item in moduleData"
+                            :key="item.id"
+                            :label="item.sectionName"
+                            :value="item.id">
+                            </el-option>
+                        </el-select>
+                        <el-input v-model="compNameSa" placeholder="请输入单位名称"></el-input>
+                        <el-input v-model="deptNameSa" placeholder="请输入填报部门"></el-input>
+                        <el-input v-model="evalNameSa" placeholder="请输入指标名称"></el-input>
+                        <el-icon :size="20" color="#3B7AD1" @click="seachDeptAEval"><Search /></el-icon>
+                        <el-icon :size="20" color="#3B7AD1" @click="clearDeptAEval"><CircleClose /></el-icon>
                     </div>
-                    <div class="tableBtn save" @click="saveDetail" v-if="$utils.havePurview('monthQuarter:twoLevel:save')">
-                        <img :src="saveIcon" alt="">
-                        <span>保存</span>
-                    </div>
-                    <!-- <div class="tableBtn edit">
-                        <img :src="editIcon" alt="">
-                        <span>新增</span>
-                    </div> -->
-                    <!-- <div class="tableBtn delete">
-                        <img :src="deleteIcon" alt="">
-                        <span>删除</span>
-                    </div> -->
-                    <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 class="detaTableBtns">
+                        <div class="tableBtn add" @click="addTableDetail" v-if="activeName === 'second'">
+                            <img :src="addIcon" alt="">
+                            <span>新增</span>
+                        </div>
+                        <div class="tableBtn save" @click="saveDetail" v-if="$utils.havePurview('monthQuarter:twoLevel:save')">
+                            <img :src="saveIcon" alt="">
+                            <span>保存</span>
+                        </div>
+                        <!-- <div class="tableBtn edit">
+                            <img :src="editIcon" alt="">
+                            <span>新增</span>
+                        </div> -->
+                        <!-- <div class="tableBtn delete">
+                            <img :src="deleteIcon" alt="">
+                            <span>删除</span>
+                        </div> -->
+                        <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>
                 </div>
                 <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
@@ -240,7 +257,7 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetOrgEvalInfoList,apiGetOrgEvaInfoBatchDto, apiGetOrganizationRule, 
+import {apiGetOrgEvalInfoList,apiGetOrgEvaInfoBatchDto, apiGetOrganizationRule, apiGetbinsectionList,
 apiGetindicatorListAll, apiGetbinstageList, apiGetIndicatorTypeList} from '../../api/api'
 import ExcelJS from 'exceljs'
 import fileSave from 'file-saver'
@@ -289,6 +306,11 @@ export default {
                 currentPage: 1,
                 total: 0
             },
+            moduleData: [],
+            moduleNameSa: '',
+            compNameSa: '',
+            deptNameSa: '',
+            evalNameSa: ''
         }
     },
     created() {
@@ -321,13 +343,20 @@ export default {
                 year: row.year,
                 recStage: '有效'
             }
-            this.getDetails(row.id)
+            this.getDetails(row.id, '是')
+            this.getModelData()
             this.getOrgRule(row)
             this.getindList()
             this.rowMsg = row
         },
-        handleClick() {
-            this.changeDateSelect = []
+        // 获取业务属性
+        getModelData() {
+            let that = this
+            apiGetbinsectionList().then(datas =>{
+                if (datas && datas.data) {
+                    that.moduleData = datas.data
+                }
+            })
         },
         rowClick(selection, row) {
             this.changeDateSelect = selection
@@ -339,22 +368,76 @@ export default {
             this.pageRight.currentPage = val
         },
         //获取详情
-        getDetails(id) {
+        getDetails(id, isevl) {
             let that = this
-            that.quantifiedList = []
-            that.nonQuantifiedList = []
             let params = {
-                organizationEvaluationId: id
+                organizationEvaluationId: id,
+                isQuantified: isevl,
+                binSection: that.moduleNameSa,
+                organizationShortName: that.compNameSa,
+                dept: that.deptNameSa,
+                indicatorName: that.evalNameSa
             }
             apiGetOrgEvalInfoList(params).then(datas =>{
                 if (datas && datas.data) {
-                    that.quantifiedList = datas.data.quantifiedList
-                    that.pageLeft.total = datas.data.quantifiedList.length
-                    that.nonQuantifiedList = datas.data.nonQuantifiedList.length>0?datas.data.nonQuantifiedList:[]
-                    that.pageRight.total = datas.data.nonQuantifiedList.length
+                    if (isevl === '是') {
+                        that.quantifiedList = datas.data
+                        that.pageLeft.total = datas.data.length
+                    } else {
+                        that.nonQuantifiedList = datas.data
+                        that.pageRight.total = datas.data.length
+                    }
                 }
             })
         },
+        seachDeptAEval() {
+            if (this.activeName = 'first') {
+                this.pageLeft = {
+                    pagesize: 15,
+                    currentPage: 1,
+                    total: 0
+                }
+                this.getDetails(this.rowMsg.id, '是')
+            } else {
+                this.pageRight = {
+                    pagesize: 15,
+                    currentPage: 1,
+                    total: 0
+                }
+                this.getDetails(this.rowMsg.id, '否')
+            }
+        },
+        clearDeptAEval() {
+            this.moduleNameSa = ''
+            this.compNameSa = ''
+            this.deptNameSa = ''
+            this.evalNameSa = ''
+            this.seachDeptAEval()
+        },
+        handleClick(val) {
+            this.changeDateSelect = []
+            this.compNameSa = ''
+            this.deptNameSa = ''
+            this.evalNameSa = ''
+            this.moduleNameSa = ''
+            if (val.props.name === 'first') {
+                this.quantifiedList = []
+                this.pageLeft = {
+                    pagesize: 15,
+                    currentPage: 1,
+                    total: 0
+                }
+                this.getDetails(this.rowMsg.id, '是')
+            } else {
+                this.nonQuantifiedList = []
+                this.pageRight = {
+                    pagesize: 15,
+                    currentPage: 1,
+                    total: 0
+                }
+                this.getDetails(this.rowMsg.id, '否')
+            }
+        },
         // 考评评价指标内容
         getOrgRule(row) {
             let that = this
@@ -574,7 +657,7 @@ export default {
                         border: 1px solid #D6DBEA;
                         padding: 10px 20px;
                         border-radius: 10px;
-                        margin-bottom: 20px;
+                        // margin-bottom: 20px;
                         .danjuMsg_data{
                             padding: 5px 0 10px 0;
                             .data_tit{
@@ -606,59 +689,76 @@ export default {
                     .el-select, .el-input{
                         width: 100%;
                     }
-                    .detaTableBtns{
+                    .btnASeach{
                         display: flex;
-                        width: 340px;
+                        z-index: 11111;
+                        justify-content: end;
                         position: relative;
                         top: 32px;
-                        left: 80vw;
-                        z-index: 11111;
-                        .tableBtn {
+                        left: 50vw;
+                        width: 50%;
+                        .seachFor{
                             display: flex;
-                            margin-right: 30px;
-                            img{
+                            .el-input, .el-select{
                                 margin-right: 5px;
-                                margin-top: 1px;
                             }
-                            span{
-                                font-size: 14px;
-                                font-family: Microsoft YaHei;
-                                font-weight: 400;
+                            .el-icon{
+                                margin: 5px 10px 0 10px;
+                                cursor: pointer;
                             }
                         }
-                        .add{
-                            cursor: pointer;
-                            span{
-                                color: #3B7AD1;
+                        .detaTableBtns{
+                            display: flex;
+                            width: 360px;
+                            margin-top: 5px;
+                            .tableBtn {
+                                display: flex;
+                                height: 20px;
+                                margin: 0 10px;
+                                img{
+                                    margin-right: 5px;
+                                    margin-top: 1px;
+                                }
+                                span{
+                                    font-size: 14px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: 400;
+                                }
                             }
-                        }
-                        .save{
-                            cursor: pointer;
-                            span{
-                                color: #50C14E;
+                            .add{
+                                cursor: pointer;
+                                span{
+                                    color: #3B7AD1;
+                                }
                             }
-                        }
-                        .edit{
-                            span{
-                                color: #F5A623;
+                            .save{
+                                cursor: pointer;
+                                span{
+                                    color: #50C14E;
+                                }
                             }
-                        }
-                        .delete{
-                            cursor: no-drop;
-                            span{
-                                color: #F65177;
+                            .edit{
+                                span{
+                                    color: #F5A623;
+                                }
                             }
-                        }
-                        .import{
-                            cursor: pointer;
-                            span{
-                                color: #ce1e78;
+                            .delete{
+                                cursor: no-drop;
+                                span{
+                                    color: #F65177;
+                                }
                             }
-                        }
-                        .export{
-                            cursor: pointer;
-                            span{
-                                color: #2baa8a;
+                            .import{
+                                cursor: pointer;
+                                span{
+                                    color: #ce1e78;
+                                }
+                            }
+                            .export{
+                                cursor: pointer;
+                                span{
+                                    color: #2baa8a;
+                                }
                             }
                         }
                     }

+ 15 - 10
src/components/evaluationSystem/evaluationDepartmentPage.vue

@@ -33,7 +33,7 @@
             <div class="evaluationDepartmentTableData">
                 <el-table :data="evaluationDepartmentData" style="width: 100%" @select="rowClick" @select-all="rowClick">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
-                    <el-table-column label="部门编码" prop="deptId" />
+                    <el-table-column label="部门编码" prop="shortDeptName" />
                     <el-table-column label="部门名称" prop="deptName"  width="300" />
                     <!-- <el-table-column label="部门简称" prop="shortDeptName" /> -->
                     <el-table-column label="考评类型" >
@@ -64,9 +64,9 @@
                                     <el-select v-model="ruleForm.department" placeholder="请选择所属部门">
                                         <el-option
                                         v-for="item in departData"
-                                        :key="item.dataKey"
+                                        :key="item.id"
                                         :label="item.keyName"
-                                        :value="item.dataKey">
+                                        :value="item.id">
                                         </el-option>
                                     </el-select>
                                 </el-form-item>
@@ -386,13 +386,16 @@ export default {
         saveAndEditIndicatorData() {
             let that = this
             let orgName = ''
+            let shortName = ''
             that.departData.forEach(item =>{
-                if (item.dataKey === that.ruleForm.department) {
+                if (item.id === that.ruleForm.department) {
                     orgName = item.keyName
+                    shortName = item.dataKey
                 }
             })
             let params = {
                 deptName: orgName,
+                shortDeptName: shortName,
                 deptId: that.ruleForm.department,
                 evaluationCategory: 'BMKP',
                 annual: that.ruleForm.year,
@@ -463,12 +466,14 @@ export default {
                     data.evaluationDeptIndicatorItemList.forEach((it,index) =>{
                         if (it.indicatorItemCode === row.indicatorItemCode) {
                             data.evaluationDeptIndicatorItemList.splice(index, 1)
-                            apiGetevaluationdeptremoveItem(row.id).then(datas =>{
-                                that.$message({
-                                    type: 'success',
-                                    message: '删除成功!'
-                                });
-                            })
+                            if (row.id) {
+                                apiGetevaluationdeptremoveItem(row.id).then(datas =>{
+                                    that.$message({
+                                        type: 'success',
+                                        message: '删除成功!'
+                                    });
+                                })
+                            }
                         }
                     })
                 }

+ 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 
 }