Browse Source

单位考评评级重构,增加主表,服务联调(新增,修改,删除);年度业绩指标计划申报详情删除数据后刷新列表(包含任务中心);

SunZehao 1 year ago
parent
commit
46f9e743c7

+ 24 - 3
src/api/api.js

@@ -774,7 +774,28 @@ export function apiGetevaluationdownloadReport(params) {
 }
 
 
-//--------单位绩效考核评级列表
+//--------单位绩效考核评级列表---主表
+export function apiGetorganizationyearratinglist(params) {
+    return httpRequest({
+        url: 'organization-year-rating/list',
+        method: 'get',
+        params: params
+    })
+}
+//--------单位绩效考核评级列表---新增/修改---主表
+export function apiGetorganizationyearratingsave(params) {
+    return httpRequest.post('organization-year-rating/save', params)
+}
+//----单位绩效考核评级列表---删除---主表
+export function apiPostorganizationyearratingDelete(params) {
+    return httpRequest({
+        url: `organization-year-rating/remove/${params}`,
+        method: 'post'
+    })
+}
+
+
+//--------单位绩效考核评级列表---次表
 export function apiGetorganizationratinglist(params) {
     return httpRequest({
         url: 'organization-rating/list',
@@ -782,11 +803,11 @@ export function apiGetorganizationratinglist(params) {
         params: params
     })
 }
-//--------单位绩效考核评级列表---新增/修改
+//--------单位绩效考核评级列表---新增/修改---次表
 export function apiGetorganizationratingsave(params) {
     return httpRequest.post('organization-rating/save', params)
 }
-//----单位绩效考核评级列表---删除
+//----单位绩效考核评级列表---删除---次表
 export function apiPostorganizationratingDelete(params) {
     return httpRequest({
         url: `organization-rating/remove/${params}`,

+ 3 - 0
src/assets/css/main.css

@@ -203,6 +203,9 @@ a {
 .el-button--warning{
     background-color: #F5A623 !important;
 }
+.el-button--export{
+    background-color: #4ee6cb !important;
+}
 
 /* 表格 */
 .el-table th {

+ 22 - 12
src/components/assessment/assessmentApplicationFrom.vue

@@ -598,20 +598,30 @@ export default {
             }).then(() => {
                 let that = this
                 let paramsArr = []
-                that.changeSituationSelect.forEach(it =>{
-                    paramsArr.push(it.id)
-                })
-                apiGetevaluationdeptadDeleteComplete(paramsArr.join(',')).then(datas =>{
-                    if (datas) {
-                        that.$message({
-                            type: 'success',
-                            message: '删除成功!'
-                        });
-                        that.activeName = 'second'
-                        that.changeSituationSelect = []
-                        that.getDetails(that.rowMsg.id)
+                that.changeSituationSelect.forEach(item =>{
+                    if (!item.id) {
+                        that.secondWorkSituation.forEach((it, index) =>{
+                            if (it === item) {
+                                that.secondWorkSituation.splice(index, 1)
+                            }
+                        })
+                    } else {
+                        paramsArr.push(item.id)
                     }
                 })
+                if (paramsArr.length>0) {
+                    apiGetevaluationdeptadDeleteComplete(paramsArr.join(',')).then(datas =>{
+                        if (datas) {
+                            that.$message({
+                                type: 'success',
+                                message: '删除成功!'
+                            });
+                            that.activeName = 'second'
+                            that.changeSituationSelect = []
+                            that.getDetails(that.rowMsg.id)
+                        }
+                    })
+                }
             })
         },
     }

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

@@ -44,7 +44,7 @@
                             </el-select>
                         </div> -->
                         <seachs @handleSeach="getreportTableData" :showRest="false"></seachs>
-                        <el-button type="info" icon="Download" size="mini" @click="handleExport" style="margin-left:10px">导出</el-button>
+                        <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%">

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

@@ -330,7 +330,7 @@ export default {
                             type: 'success',
                             message: '删除成功!'
                         });
-                        that.getevaluStartList()
+                        that.getDetails(that.rowMsg.id)
                         that.changeDateSelect = []
                     })
                 }

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

@@ -77,7 +77,6 @@
                     <el-table-column label="操作" width="100">
                         <template #default="scope">
                             <p class="indicitem" v-if="scope.row.stage === '流程未启动'" @click="agetdeptresponsibility(scope.row)">启动</p>
-                            <!-- <p class="indicitem" v-else @click="getDetail(scope.row)">详情</p> -->
                             <p class="indicitem"  @click="evaluationRevision(scope.row)"
                              v-else-if="scope.row.stage === '流程已结束'" >修订</p>
                             <p style="font-size: 12px;margin-right: 20px;" v-else >已启动</p>

+ 628 - 0
src/components/assessment/evaluationUnitRatingDialog.vue

@@ -0,0 +1,628 @@
+<template>
+    <div class="evaluationUnitRatingDialog">
+        <el-dialog title="单位考评评级详情" v-model="ratingdialogVisible" :fullscreen="true" :close-on-click-modal="false">
+            <div class="evaluationUnitRatingBtn">
+                <div class="collectSeach" :style="$utils.collectSeachSty()">
+                    <div class="exceed">
+                        <span class="exceedSpan">单位名称:</span>
+                        <el-input v-model="resCompanyName" placeholder="请输入单位名称"></el-input>
+                    </div>
+                    <div class="exceed">
+                        <span class="exceedSpan">业务属性:</span>
+                        <el-select v-model="businessStr" placeholder="请选择业务属性" clearable >
+                            <el-option
+                            v-for="item in binSectionoptions"
+                            :key="item.sectionCode"
+                            :label="item.sectionName"
+                            :value="item.sectionCode">
+                            </el-option>
+                        </el-select>
+                    </div>
+                    <seachs @handleSeach="getSeachData" @handleRest="resetSeach"></seachs>
+                </div>
+                <div class="PeriodBtn" :style="$utils.PeriodBtnSty()">
+                    <btns
+                    :showImport="$utils.havePurview('evaluationUnitRate:oneLevel:import')"
+                    :showExport="$utils.havePurview('evaluationUnitRate:oneLevel:export')"
+                    :showSave="$utils.havePurview('evaluationUnitRate:oneLevel:save')"
+                    :showAdd="$utils.havePurview('evaluationUnitRate:oneLevel:add')"
+                    :showDelete="$utils.havePurview('evaluationUnitRate:oneLevel:delete')"
+                    :disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
+                    :disDelete="changeDateSelect.length === 0"
+                    :disImport="false"
+                    :disExport="false"
+                    @handleAdd="handleAdd"
+                    @handleEdit="handleEdit"
+                    @handleDelete="handleDelete"
+                    @handleImport="handleImport"
+                    @handleExport="handleExport"
+                    ></btns>
+                </div>
+                <div class="evaluationUnitRatingTableData">
+                    <!-- @row-click="rowClickToggle" -->
+                    <el-table :data="evaluationRatingDiaData" style="width: 100%" ref="tableSS" :class="unitRatingTableSty()"
+                    @select="rowClick" @select-all="rowClick">
+                        <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                        <el-table-column type="index" label="序号" align="center"></el-table-column>
+                        <el-table-column label="考评单位" width="200">
+                            <template #default="scope">
+                                <el-tooltip
+                                    class="box-item"
+                                    effect="customized"
+                                    :content="scope.row.organizationShortName"
+                                    placement="right"
+                                >
+                                    <span class="tooltipCC">{{scope.row.organizationShortName}}</span>
+                                </el-tooltip>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="业务板块" prop="binSectionName" />
+                        <el-table-column label="考评年度" prop="year" />
+                        <el-table-column label="生成经营评级" prop="scjyRate" />
+                        <el-table-column label="前期评级" prop="qqRate" />
+                        <el-table-column label="基建评级" prop="jjRate" />
+                        <el-table-column label="年度评级" prop="yearRate" />
+                    </el-table>
+                    <el-pagination
+                        @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange"
+                        :current-page="page.currentPage"
+                        :page-size="page.pagesize"
+                        layout="total, prev, pager, next, jumper"
+                        :total="page.total">
+                    </el-pagination>
+                </div>
+                <el-dialog :title="title" custom-class="startToDia" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                    <div class="periodFrom">
+                        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">      
+                            <el-form-item label="考评单位" prop="companyRuleF">
+                                <el-select v-model="ruleForm.companyRuleF" placeholder="请选择考评单位" :disabled="isSave">
+                                    <el-option
+                                    v-for="item in companyData"
+                                    :key="item.organizationId"
+                                    :label="item.organizationShortName"
+                                    :value="item.organizationId">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务属性" prop="binSection">
+                                <el-select v-model="ruleForm.binSection" placeholder="请选择业务属性">
+                                    <el-option
+                                    v-for="item in binSectionoptions"
+                                    :key="item.sectionCode"
+                                    :label="item.sectionName"
+                                    :value="item.sectionCode">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="年份" prop="year">
+                                <el-date-picker
+                                    v-model="ruleForm.year"
+                                    :disabled="isSave"
+                                    type="year"
+                                    value-format="YYYY"
+                                    placeholder="请选择年份"
+                                    />
+                            </el-form-item>
+                            <el-form-item label="生成经营评级">
+                                <el-select v-model="ruleForm.scjyRate" placeholder="请选择评级">
+                                    <el-option
+                                    v-for="item in ratingArr"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="前期评级">
+                                <el-select v-model="ruleForm.qqRate" placeholder="请选择评级">
+                                    <el-option
+                                    v-for="item in ratingArr"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="基建评级">
+                                <el-select v-model="ruleForm.jjRate" placeholder="请选择评级">
+                                    <el-option
+                                    v-for="item in ratingArr"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="年度评级">
+                                <el-select v-model="ruleForm.yearRate" placeholder="请选择评级">
+                                    <el-option
+                                    v-for="item in ratingArr"
+                                    :key="item.value"
+                                    :label="item.label"
+                                    :value="item.value">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="描述" prop="remark">
+                                <el-input v-model="ruleForm.remark" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveevaluaStart('ruleForm')">确 定</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button type="primary" @click="ratingdialogVisible = false">取 消</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
+    </div>
+</template>
+
+<script>
+import importDailog from '../importPage/importDailog.vue'
+import btns from '../elbuttonS.vue'
+import seachs from '../seachGroup.vue'
+import ExcelJS from 'exceljs'
+import fileSave from 'file-saver'
+import {apiGetorganizationratinglist, apiGetorganizationratingsave,apiGetOrganizationListAll,apiGetbinsectionList,
+apiPostorganizationratingDelete} from '../../api/api'
+export default {
+    components: {
+        importDailog,
+        btns,
+        seachs
+    },
+    data() {
+        return {
+            dialogVisible: false,
+            ratingdialogVisible: false,
+            isSave: false,
+            title: '',
+            evalradio: {},
+            changeDateSelect: [],
+            evaluationRatingDiaData:[],
+            companyData: [],
+            binSectionoptions: [],
+            ruleForm: {
+                companyRuleF: '',
+                year: '',
+                binSection: '',
+                scjyRate: '',
+                qqRate: '',
+                jjRate: '',
+                yearRate: '',
+                remark: ''
+            },
+            rules: {
+                companyRuleF: [
+                    { required: true, message: '请选择考评单位', trigger: 'change' }
+                ],
+                binSection: [
+                    { required: true, message: '请选择考评单位', trigger: 'change' }
+                ],
+                year: [
+                    { required: true, message: '请选择年份', trigger: 'change' }
+                ]
+            },
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            resCompanyName: '',
+            businessStr: '',
+            monthArr: [],
+            ratingArr: [],
+            winPix: window.devicePixelRatio,
+            innerWidth: window.innerWidth,
+            rowObj: {}
+        }
+    },
+    created() {
+        this.ratingArr = [
+            {
+                label: 'A级',
+                value: 'A'
+            },
+            {
+                label: 'B级',
+                value: 'B'
+            },
+            {
+                label: 'C级',
+                value: 'C'
+            }
+        ]
+    },
+    methods:{
+        init(row) {
+            this.ratingdialogVisible = true
+            this.rowObj = row
+            this.getevaluRatingDiaList(row)
+            this.getOrganizetionData()
+            this.getDataDictionary()
+        },
+        // 查询列表页面
+        getevaluRatingDiaList(row) {
+            let that = this
+            let params = {
+                pageNum: that.page.currentPage,
+                pageSize: that.page.pagesize,
+                organizationYearRatingId: row.id,
+                organizationId: that.resCompanyName,
+                binSection: that.businessStr,
+                year: row.year
+            }
+            apiGetorganizationratinglist(params).then(datas =>{
+                if (datas && datas.data.records) {
+                    that.evaluationRatingDiaData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        //查询单位数据
+        getOrganizetionData() {
+            let that = this
+            let params = {
+                evaluationCycle: 'NDKP',
+                organizationType: 'DWKP'
+            }
+            apiGetOrganizationListAll(params).then(datas => {
+                if (datas && datas.data) {
+                    that.companyData = datas.data
+                }
+            })
+        },
+        // 查询属性和阶段
+        getDataDictionary() {
+            let that = this
+            let params = {
+                type: '1'
+            }
+            apiGetbinsectionList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.binSectionoptions = datas.data
+                }
+            })
+        },
+        saveevaluaStart(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改考评启动数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let orgName = ''
+            this.companyData.forEach(item =>{
+                if (item.organizationId === that.ruleForm.companyRuleF) {
+                    orgName = item.organizationShortName
+                }
+            })
+            let params = {
+                organizationId: that.ruleForm.companyRuleF,
+                organizationShortName: orgName,
+                year: that.ruleForm.year,
+                binSection: that.ruleForm.binSection,
+                scjyRate: that.ruleForm.scjyRate,
+                qqRate: that.ruleForm.qqRate,
+                jjRate: that.ruleForm.jjRate,
+                yearRate: that.ruleForm.yearRate,
+                remark: that.ruleForm.remark
+            }
+            if (that.isSave) {
+                params.id = that.evalradio.id
+            }
+            apiGetorganizationratingsave(params).then(datas =>{
+                if (!datas.success) {
+                    that.$message({
+                        message: datas.message,
+                        type: 'error'
+                    });
+                } else {
+                    if (!that.isSave) {
+                        that.$message({
+                            message: '单位绩效考核评级新增成功',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message({
+                            message: '单位绩效考核评级修改成功',
+                            type: 'success'
+                        });
+                    }
+                    that.dialogVisible = false
+                    that.changeDateSelect = []
+                    that.getevaluRatingDiaList(this.rowObj)
+                }
+            })
+        },
+        getSeachData() {
+            this.getevaluRatingDiaList(this.rowObj)
+        },
+        resetSeach() {
+            this.resCompanyName = ''
+            this.businessStr = ''
+            this.getevaluRatingDiaList(this.rowObj)
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+            this.getevaluRatingDiaList(this.rowObj)
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+            this.getevaluRatingDiaList(this.rowObj)
+        },
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        // rowClickToggle(row) {
+        //     this.$refs.tableSS.toggleRowSelection(row)
+        // },
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新建单位绩效考核评级'
+            this.$nextTick(() =>{
+                this.ruleForm = {
+                    companyRuleF: '',
+                    year: '',
+                    binSection: '',
+                    scjyRate: '',
+                    qqRate: '',
+                    jjRate: '',
+                    yearRate: '',
+                    remark: ''
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改单位绩效考核评级'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                companyRuleF: this.evalradio.organizationId,
+                year: this.evalradio.year,
+                binSection: this.evalradio.binSection,
+                scjyRate: this.evalradio.scjyRate,
+                qqRate: this.evalradio.qqRate,
+                jjRate: this.evalradio.jjRate,
+                yearRate: this.evalradio.yearRate,
+                remark: this.evalradio.remark
+            }
+        },
+        //删除
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                apiPostorganizationratingDelete(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.getevaluRatingDiaList(this.rowObj)
+                    that.changeDateSelect = []
+                })
+            })
+        },  
+        handleImport() {
+            this.$refs.importPage.upload.title = "单位考评评级"
+            this.$refs.importPage.upload.open = true
+            this.$refs.importPage.upload.url = '/organization-rating/import'
+        },
+        successImport(val) {
+            this.getevaluRatingDiaList(this.rowObj)
+        },
+        handleExport() {
+            let data = this.evaluationRatingDiaData  //接口返回数据
+            const workbook = new ExcelJS.Workbook()
+            const worksheet = workbook.addWorksheet('Sheet1')
+            //根据数据自己调整
+            let colums = []
+            colums = [
+                { header: 'ID', key: 'id', width: 26, hidden: true},
+                { header: '考评单位', key: 'organizationShortName', width: 26 },
+                { header: '考评单位ID', key: 'organizationId', width: 26, hidden: true },
+                { header: '业务板块ID', key: 'binSection', width: 26, hidden: true },
+                { header: '考评年度', key: 'year', width: 26 },
+                { header: '生成经营评级', key: 'scjyRate', width: 26 },
+                { header: '前期评级', key: 'qqRate', width: 26 },
+                { header: '基建评级', key: 'jjRate', width: 26 },
+                { header: '年度评级', key: 'yearRate', width: 26 },
+                { header: '备注', key: 'remake', width: 26 },
+            ]
+            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`)
+            })
+        },
+        unitRatingTableSty() {
+            if (this.winPix === 1.25 || this.innerWidth < 1800) {
+                return 'unitRating125Table'
+            } else {
+                return 'unitRating100Table'
+            }
+        }
+    }
+}
+</script>
+
+<style lang="less">
+.evaluationUnitRatingDialog{
+    .el-overlay{
+        .el-dialog{
+            // margin-top: 7vh;
+            .el-dialog__body{
+                padding: 0 20px !important;
+                .evaluationUnitRatingBtn{
+                    .collectSeach{
+                        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;
+                                    }
+                                }
+                            }
+                        }
+                        .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: flex-end;
+                        padding: 20px 0;
+                    }
+                    .el-button{
+                        height: 30px;
+                        // width:100px;
+                        padding: 0 20px ;
+                        // padding-top: 8px;
+                        span{
+                            margin:0;
+                        }
+                    }
+                    .evaluationUnitRatingTableData{
+                        .unitRating125Table{
+                            .el-table__body-wrapper{
+                                height: 63vh !important;
+                            }
+                        }
+                        .unitRating100Table{
+                            .el-table__body-wrapper{
+                                height: 65vh !important;
+                            }
+                        }
+                        .el-table{
+                            .el-input__inner{
+                                height: 30px !important;
+                            }
+                            .el-radio__label{
+                                display: none;
+                            }
+                            .tooltipCC{
+                                width: 300px !important;
+                                display: inline-block;
+                                overflow: hidden;
+                                text-overflow: ellipsis;
+                                white-space: nowrap;
+                            }
+                            .tooltipCCDes{
+                                width: 50px;
+                                display: inline-block;
+                                overflow: hidden;
+                                text-overflow: ellipsis;
+                                white-space: nowrap;
+                            }
+                            .indicitem{
+                                color: #409EFF;
+                                font-size: 12px;
+                                margin-right: 20px;
+                                cursor:pointer;
+                                &:hover{
+                                    text-decoration: underline;
+                                }
+                            }
+                        }
+                        .el-pagination{
+                            margin-top: 20px;
+                            text-align: end;
+                            position: relative;
+                        }
+                    }
+                    .el-overlay{
+                        .startToDia{
+                            .el-dialog__body{
+                                padding: 30px 60px 30px 20px !important;
+                                .periodFrom{
+                                    .el-select, .el-input{
+                                        width: 100%;
+                                    }
+                                    .el-input{
+                                        height: 30px;
+                                    }
+                                }
+                                .flowSty{
+                                    width: 100%;
+                                    height: 70vh;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            .el-dialog__footer{
+                .dialog-footer{
+                    display: flex;
+                    justify-content: center;
+                    .el-button{
+                        width: 180px !important;
+                        height: 40px !important;
+                    }
+                }
+            }
+        }
+    }
+    
+}
+</style>

+ 175 - 233
src/components/assessment/evaluationUnitRatingPage.vue

@@ -3,19 +3,12 @@
         <div class="evaluationUnitRatingBtn">
             <div class="collectSeach" :style="$utils.collectSeachSty()">
                 <div class="exceed">
-                    <span class="exceedSpan">单位名称:</span>
-                    <el-input v-model="resCompanyName" placeholder="请输入单位名称"></el-input>
+                    <span class="exceedSpan">评级编码:</span>
+                    <el-input v-model="ratingCode" placeholder="请输入评级编码"></el-input>
                 </div>
                 <div class="exceed">
-                    <span class="exceedSpan">业务属性:</span>
-                    <el-select v-model="businessStr" placeholder="请选择业务属性" clearable >
-                        <el-option
-                        v-for="item in binSectionoptions"
-                        :key="item.sectionCode"
-                        :label="item.sectionName"
-                        :value="item.sectionCode">
-                        </el-option>
-                    </el-select>
+                    <span class="exceedSpan">评级描述:</span>
+                    <el-input v-model="ratingDes" placeholder="请输入评级描述"></el-input>
                 </div>
                 <div class="exceed">
                     <span class="exceedSpan" style="width: 80px">考评年度:</span>
@@ -25,71 +18,53 @@
             </div>
             <div class="PeriodBtn" :style="$utils.PeriodBtnSty()">
                 <btns
-                :showImport="$utils.havePurview('evaluationUnitRate:oneLevel:import')"
-                :showExport="$utils.havePurview('evaluationUnitRate:oneLevel:export')"
-                :showSave="$utils.havePurview('evaluationUnitRate:oneLevel:save')"
-                :showAdd="$utils.havePurview('evaluationUnitRate:oneLevel:add')"
-                :showDelete="$utils.havePurview('evaluationUnitRate:oneLevel:delete')"
+                :showImport="false" :showExport="false" :showSave="true" :showAdd="true" :showDelete="true"
                 :disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
                 :disDelete="changeDateSelect.length === 0"
-                :disImport="false"
-                :disExport="false"
+                :disImport="false" :disExport="false"
                 @handleAdd="handleAdd"
                 @handleEdit="handleEdit"
                 @handleDelete="handleDelete"
-                @handleImport="handleImport"
-                @handleExport="handleExport"
                 ></btns>
             </div>
             <div class="evaluationUnitRatingTableData">
                  <!-- @row-click="rowClickToggle" -->
-                <el-table :data="evaluationUnitRatingData" style="width: 100%" ref="tableSS" :class="unitRatingTableSty()"
-                 @select="rowClick" @select-all="rowClick">
+                <el-table :data="evaluationUnitRatingData" style="width: 100%" :class="unitRatingTableSty()"
+                 @select="rowClick" @select-all="rowClick" @row-dblclick="rowClickToggle">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
                     <el-table-column type="index" label="序号" align="center"></el-table-column>
-                    <el-table-column label="考评单位" width="200">
+                    <el-table-column label="编码" prop="yearRatingCode" />
+                    <el-table-column label="描述" prop="des" />
+                    <el-table-column label="年份" prop="year" />
+                    <el-table-column label="状态" prop="stage" width="200">
                         <template #default="scope">
-                            <el-tooltip
-                                class="box-item"
-                                effect="customized"
-                                :content="scope.row.organizationShortName"
-                                placement="right"
-                            >
-                                <span class="tooltipCC">{{scope.row.organizationShortName}}</span>
-                            </el-tooltip>
+                            <p class="indicitem" @click="seeStates(scope.row)">{{scope.row.stage}}</p>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="创建人" prop="createName" />
+                    <el-table-column label="创建时间" prop="createTime" />
+                    <el-table-column label="操作" width="160">
+                        <template #default="scope">
+                            <div style="display:flex">
+                                <p class="indicitem" v-if="scope.row.stage === '流程未启动'" @click="agetdeptresponsibility(scope.row)">启动</p>
+                                <p style="font-size: 12px;margin-right: 20px;" v-else-if="scope.row.stage === '流程已结束'" >已结束</p>
+                                <p style="font-size: 12px;margin-right: 20px;" v-else >已启动</p>
+                            </div>
                         </template>
                     </el-table-column>
-                    <el-table-column label="业务板块" prop="binSectionName" />
-                    <el-table-column label="考评年度" prop="year" />
-                    <el-table-column label="生成经营评级" prop="scjyRate" />
-                    <el-table-column label="前期评级" prop="qqRate" />
-                    <el-table-column label="基建评级" prop="jjRate" />
-                    <el-table-column label="年度评级" prop="yearRate" />
                 </el-table>
+                <el-pagination
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange"
+                    :current-page="page.currentPage"
+                    :page-size="page.pagesize"
+                    layout="total, prev, pager, next, jumper"
+                    :total="page.total">
+                </el-pagination>
             </div>
             <el-dialog :title="title" custom-class="startToDia" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
                 <div class="periodFrom">
-                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">      
-                        <el-form-item label="考评单位" prop="companyRuleF">
-                            <el-select v-model="ruleForm.companyRuleF" placeholder="请选择考评单位" :disabled="isSave">
-                                <el-option
-                                v-for="item in companyData"
-                                :key="item.organizationId"
-                                :label="item.organizationShortName"
-                                :value="item.organizationId">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="业务属性" prop="binSection">
-                            <el-select v-model="ruleForm.binSection" placeholder="请选择业务属性">
-                                <el-option
-                                v-for="item in binSectionoptions"
-                                :key="item.sectionCode"
-                                :label="item.sectionName"
-                                :value="item.sectionCode">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
+                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
                         <el-form-item label="年份" prop="year">
                             <el-date-picker
                                 v-model="ruleForm.year"
@@ -99,112 +74,93 @@
                                 placeholder="请选择年份"
                                 />
                         </el-form-item>
-                        <el-form-item label="生成经营评级">
-                            <el-select v-model="ruleForm.scjyRate" placeholder="请选择评级">
-                                <el-option
-                                v-for="item in ratingArr"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="前期评级">
-                            <el-select v-model="ruleForm.qqRate" placeholder="请选择评级">
-                                <el-option
-                                v-for="item in ratingArr"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="基建评级">
-                            <el-select v-model="ruleForm.jjRate" placeholder="请选择评级">
-                                <el-option
-                                v-for="item in ratingArr"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="年度评级">
-                            <el-select v-model="ruleForm.yearRate" placeholder="请选择评级">
-                                <el-option
-                                v-for="item in ratingArr"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="描述" prop="remark">
-                            <el-input v-model="ruleForm.remark" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                        <el-form-item label="描述" prop="des">
+                            <el-input v-model="ruleForm.des" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
                         </el-form-item>
                     </el-form>
                 </div>
-                <template #footer>
+                <template #footer v-if="isSave && evalradio.stage !== '流程启动'">
                     <span class="dialog-footer">
                         <el-button @click="dialogVisible = false">取 消</el-button>
                         <el-button type="primary" @click="saveevaluaStart('ruleForm')">确 定</el-button>
                     </span>
                 </template>
             </el-dialog>
+            <el-dialog title="流程详情" v-model="statesVisible" :fullscreen="true" :close-on-click-modal="false">
+                <div class="flowSty">
+                    <iframe id="iframeContain" width="100%" height="500px"
+                     frameborder="0" class="iframe" name="iframeContain" seamless scrolling="no" :src="iframeURL">            
+                    </iframe>
+                    <el-table :data="stageArr" style="width: 100%">
+                        <el-table-column type="index" label="序号" align="center" />
+                        <el-table-column label="任务名称" prop="taskName" />
+                        <el-table-column label="任务创建时间" prop="createTime" />
+                        <el-table-column label="任务处理时间" prop="approveTime" />
+                        <el-table-column label="候选人" prop="assignInfo" width="300">
+                            <template #default="scope">
+                                <span>{{changeAssignInfo(scope.row)}}</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="执行人" prop="approverName" />
+                        <el-table-column label="处理状态" prop="status">
+                            <template #default="scope">
+                                <div v-if="scope.row.status === 'start'">启动</div>
+                                <div v-else-if="scope.row.status === 'agree'">同意</div>
+                                <div v-else-if="scope.row.status === 'awaiting_check'">等待,待审批</div>
+                                <div v-else-if="scope.row.status === 'reject'">驳回</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="备注/意见" prop="opinion" />
+                    </el-table>
+                </div>
+            </el-dialog>
         </div>
-        <start-from-list ref="startFromDetail" ></start-from-list>
-        <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
+        <rating-dialog ref="ratingDialog" ></rating-dialog>
     </div>
 </template>
 
 <script>
-import importDailog from '../importPage/importDailog.vue'
-import startFromList from './evaluationDeptStartFrom.vue'
+import ratingDialog from './evaluationUnitRatingDialog.vue'
 import btns from '../elbuttonS.vue'
 import seachs from '../seachGroup.vue'
-import ExcelJS from 'exceljs'
-import fileSave from 'file-saver'
-import {apiGetorganizationratinglist, apiGetorganizationratingsave,apiGetOrganizationListAll,apiGetbinsectionList,
-apiPostorganizationratingDelete} from '../../api/api'
+import {apiGetorganizationyearratinglist, apiGetorganizationyearratingsave,apiGetworkflowgetOpinion,apiGetdoAction,
+apiPostorganizationyearratingDelete} from '../../api/api'
 export default {
     components: {
-        startFromList,
-        importDailog,
+        ratingDialog,
         btns,
         seachs
     },
     data() {
         return {
             dialogVisible: false,
+            statesVisible: false,
             isSave: false,
             title: '',
+            iframeURL: '',
             evalradio: {},
             changeDateSelect: [],
             evaluationUnitRatingData:[],
-            companyData: [],
-            binSectionoptions: [],
+            stageArr: [],
             ruleForm: {
-                companyRuleF: '',
                 year: '',
-                binSection: '',
-                scjyRate: '',
-                qqRate: '',
-                jjRate: '',
-                yearRate: '',
-                remark: ''
+                des: ''
             },
             rules: {
-                companyRuleF: [
-                    { required: true, message: '请选择考评单位', trigger: 'change' }
-                ],
-                binSection: [
-                    { required: true, message: '请选择考评单位', trigger: 'change' }
-                ],
                 year: [
                     { required: true, message: '请选择年份', trigger: 'change' }
+                ],
+                des: [
+                    { required: true, message: '请输入描述', trigger: 'blur' }
                 ]
             },
-            resCompanyName: '',
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            ratingCode: '',
+            ratingDes: '',
             businessStr: '',
             resAnnual: '',
             monthArr: [],
@@ -230,50 +186,32 @@ export default {
         ]
         this.resAnnual = new Date().getFullYear().toString()
         this.getevaluRatingList()
-        this.getOrganizetionData()
-        this.getDataDictionary()
     },
     methods:{
         // 查询列表页面
         getevaluRatingList() {
             let that = this
             let params = {
-                pageNum: 1,
-                pageSize: 500,
-                organizationId: that.resCompanyName,
-                binSection: that.businessStr,
+                pageNum: that.page.currentPage,
+                pageSize: that.page.pagesize,
+                des: that.ratingDes,
+                yearRatingCode: that.ratingCode,
                 year: that.resAnnual
             }
-            apiGetorganizationratinglist(params).then(datas =>{
+            apiGetorganizationyearratinglist(params).then(datas =>{
                 if (datas && datas.data.records) {
                     that.evaluationUnitRatingData = datas.data.records
+                    that.page.total = datas.data.total
                 }
             })
         },
-        //查询单位数据
-        getOrganizetionData() {
-            let that = this
-            let params = {
-                evaluationCycle: 'NDKP',
-                organizationType: 'DWKP'
-            }
-            apiGetOrganizationListAll(params).then(datas => {
-                if (datas && datas.data) {
-                    that.companyData = datas.data
-                }
-            })
+        handleSizeChange(val){
+            this.page.pagesize = val
+            this.getevaluRatingList()
         },
-        // 查询属性和阶段
-        getDataDictionary() {
-            let that = this
-            let params = {
-                type: '1'
-            }
-            apiGetbinsectionList(params).then(datas =>{
-                if (datas && datas.data) {
-                    that.binSectionoptions = datas.data
-                }
-            })
+        handleCurrentChange(val){
+            this.page.currentPage =val
+            this.getevaluRatingList()
         },
         saveevaluaStart(formName) {
             let that = this
@@ -286,27 +224,17 @@ export default {
         //新增/修改考评启动数据
         saveAndEditIndicatorData() {
             let that = this
-            let orgName = ''
-            this.companyData.forEach(item =>{
-                if (item.organizationId === that.ruleForm.companyRuleF) {
-                    orgName = item.organizationShortName
-                }
-            })
+            // let userMes = JSON.parse(window.sessionStorage.getItem('user'))
             let params = {
-                organizationId: that.ruleForm.companyRuleF,
-                organizationShortName: orgName,
+                // createName: userMes.name,
+                createName: '组织人事部',
                 year: that.ruleForm.year,
-                binSection: that.ruleForm.binSection,
-                scjyRate: that.ruleForm.scjyRate,
-                qqRate: that.ruleForm.qqRate,
-                jjRate: that.ruleForm.jjRate,
-                yearRate: that.ruleForm.yearRate,
-                remark: that.ruleForm.remark
+                des: that.ruleForm.des
             }
             if (that.isSave) {
                 params.id = that.evalradio.id
             }
-            apiGetorganizationratingsave(params).then(datas =>{
+            apiGetorganizationyearratingsave(params).then(datas =>{
                 if (!datas.success) {
                     that.$message({
                         message: datas.message,
@@ -334,31 +262,90 @@ export default {
             this.getevaluRatingList()
         },
         resetSeach() {
-            this.resCompanyName = ''
-            this.businessStr = ''
+            this.ratingDes = ''
+            this.ratingCode = ''
             this.resAnnual = ''
             this.getevaluRatingList()
         },
         rowClick(selection, row) {
             this.changeDateSelect = selection
         },
-        // rowClickToggle(row) {
-        //     this.$refs.tableSS.toggleRowSelection(row)
-        // },
+        rowClickToggle(row) {
+            this.$refs.ratingDialog.init(row)
+        },
+        seeStates(row) {
+            if (!row.instId) {
+                this.$message({
+                    type: 'error',
+                    message: '无法查看流程'
+                });
+            } else {
+                this.statesVisible = true
+                let url = ''
+                if (window.location.hostname === '10.65.78.81') {
+                    url = 'http://10.65.79.85:8080'
+                } else {
+                    url = 'http://10.65.78.23:8080'
+                }
+                this.iframeURL = url+'/agilebpm-ui/bpm/instance/instanceImageDialog.html?instanceId='+row.instId+'&iamCode='+window.localStorage.getItem('code')
+                this.getstageData(row.instId)
+            }
+        },
+        // 根据流程id获取业务id
+        getstageData(id) {
+            let that = this
+            let params = {
+                instId: id,
+                iamCode: window.localStorage.getItem('code')
+            }
+            apiGetworkflowgetOpinion(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.stageArr = datas.data.data                    
+                }
+            })
+        },
+        changeAssignInfo(row) {
+            let showStr = ''
+            if (row.assignInfo) {
+                showStr = row.assignInfo.substring(row.assignInfo.indexOf('-')+1, row.assignInfo.length).substring(0, row.assignInfo.substring(row.assignInfo.indexOf('-')+1, row.assignInfo.length).indexOf('-'))
+            }
+            return showStr
+        },
+        agetdeptresponsibility(row) {
+            let that = this
+            let par = {
+                defKey: "nddwpj",
+                businessKey: row.id,
+                action: "start",
+                opinion: "年度单位评级",
+                iamCode: window.localStorage.getItem('code')
+            }
+            if (row.instId === null || row.instId === '') {
+                apiGetdoAction(par).then(datas =>{
+                    if (datas && datas.data) {
+                        if (datas.data.isOk) {
+                            that.$message({
+                                message: '流程已启动',
+                                type: 'success'
+                            });
+                        } else {
+                            that.$message({
+                                message: datas.data.msg,
+                                type: 'error'
+                            });
+                        }
+                    }
+                })
+            }
+        },
         handleAdd() {
             this.dialogVisible = true
             this.isSave = false
             this.title = '新建单位绩效考核评级'
             this.$nextTick(() =>{
                 this.ruleForm = {
-                    companyRuleF: '',
                     year: '',
-                    binSection: '',
-                    scjyRate: '',
-                    qqRate: '',
-                    jjRate: '',
-                    yearRate: '',
-                    remark: ''
+                    des: ''
                 }
             })
         },
@@ -368,14 +355,8 @@ export default {
             this.title = '修改单位绩效考核评级'
             this.evalradio = this.changeDateSelect[0]
             this.ruleForm = {
-                companyRuleF: this.evalradio.organizationId,
                 year: this.evalradio.year,
-                binSection: this.evalradio.binSection,
-                scjyRate: this.evalradio.scjyRate,
-                qqRate: this.evalradio.qqRate,
-                jjRate: this.evalradio.jjRate,
-                yearRate: this.evalradio.yearRate,
-                remark: this.evalradio.remark
+                des: this.evalradio.des
             }
         },
         //删除
@@ -390,7 +371,7 @@ export default {
                 that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                apiPostorganizationratingDelete(paramsArr.join(',')).then(datas =>{
+                apiPostorganizationyearratingDelete(paramsArr.join(',')).then(datas =>{
                     that.$message({
                         type: 'success',
                         message: '删除成功!'
@@ -399,45 +380,6 @@ export default {
                     that.changeDateSelect = []
                 })
             })
-        },  
-        handleImport() {
-            this.$refs.importPage.upload.title = "单位考评评级"
-            this.$refs.importPage.upload.open = true
-            this.$refs.importPage.upload.url = '/organization-rating/import'
-        },
-        successImport(val) {
-            this.getevaluRatingList()
-        },
-        handleExport() {
-            let data = this.evaluationUnitRatingData  //接口返回数据
-            const workbook = new ExcelJS.Workbook()
-            const worksheet = workbook.addWorksheet('Sheet1')
-            //根据数据自己调整
-            let colums = []
-            colums = [
-                { header: 'ID', key: 'id', width: 26, hidden: true},
-                { header: '考评单位', key: 'organizationShortName', width: 26 },
-                { header: '考评单位ID', key: 'organizationId', width: 26, hidden: true },
-                { header: '业务板块ID', key: 'binSection', width: 26, hidden: true },
-                { header: '考评年度', key: 'year', width: 26 },
-                { header: '生成经营评级', key: 'scjyRate', width: 26 },
-                { header: '前期评级', key: 'qqRate', width: 26 },
-                { header: '基建评级', key: 'jjRate', width: 26 },
-                { header: '年度评级', key: 'yearRate', width: 26 },
-                { header: '备注', key: 'remake', width: 26 },
-            ]
-            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`)
-            })
         },
         unitRatingTableSty() {
             if (this.winPix === 1.25 || this.innerWidth < 1800) {
@@ -514,12 +456,12 @@ export default {
         .evaluationUnitRatingTableData{
             .unitRating125Table{
                 .el-table__body-wrapper{
-                    height: 63vh !important;
+                    height: 53vh !important;
                 }
             }
             .unitRating100Table{
                 .el-table__body-wrapper{
-                    height: 65vh !important;
+                    height: 60vh !important;
                 }
             }
             .el-table{

+ 1 - 1
src/components/elbuttonS.vue

@@ -44,7 +44,7 @@
         </el-col>
         <el-col :span="1.5" v-if="showExport">
             <el-button
-            type="info"
+            type="warning"
             icon="Download"
             size="mini"
             :disabled="disExport"

+ 24 - 14
src/components/taskCenter/taskApplicationFrom.vue

@@ -503,7 +503,7 @@ export default {
                 businessPlanId: this.keyId,
                 employeeId: '',
                 employeeNo: '',
-                suggestedValue: 1.00,
+                suggestedValue: 1,
                 serialNumber: 0
             }
             this.quantifiedList.unshift(obj)
@@ -525,7 +525,7 @@ export default {
                     employeeId: item.employeeId,
                     employeeName: item.employeeName,
                     employeeNo: item.employeeNo,
-                    suggestedValue: Number(item.suggestedValue).toFixed(2),
+                    suggestedValue: Number(item.suggestedValue),
                     serialNumber: item.serialNumber
                 }
                 if (!item.showInput) {
@@ -789,20 +789,30 @@ export default {
             }).then(() => {
                 let that = this
                 let paramsArr = []
-                that.changeSituationSelect.forEach(it =>{
-                    paramsArr.push(it.id)
-                })
-                apiGetevaluationdeptadDeleteComplete(paramsArr.join(',')).then(datas =>{
-                    if (datas) {
-                        that.$message({
-                            type: 'success',
-                            message: '删除成功!'
-                        });
-                        that.activeName = 'second'
-                        that.changeSituationSelect = []
-                        that.getDetails(that.keyId)
+                that.changeSituationSelect.forEach(item =>{
+                    if (!item.id) {
+                        that.secondWorkSituation.forEach((it, index) =>{
+                            if (it === item) {
+                                that.secondWorkSituation.splice(index, 1)
+                            }
+                        })
+                    } else {
+                        paramsArr.push(item.id)
                     }
                 })
+                if (paramsArr.length>0) {
+                    apiGetevaluationdeptadDeleteComplete(paramsArr.join(',')).then(datas =>{
+                        if (datas) {
+                            that.$message({
+                                type: 'success',
+                                message: '删除成功!'
+                            });
+                            that.activeName = 'second'
+                            that.changeSituationSelect = []
+                            that.getDetails(that.keyId)
+                        }
+                    })
+                }
             })
         },
     }

+ 1 - 1
src/components/taskCenter/taskCenterDeptStartFrom.vue

@@ -321,7 +321,7 @@ export default {
                             type: 'success',
                             message: '删除成功!'
                         });
-                        that.getevaluStartList()
+                        that.getDetails(that.importId)
                         that.changeDateSelect = []
                     })
                 }

+ 6 - 1
src/components/taskCenter/taskCenterPage.vue

@@ -61,11 +61,13 @@
         <task-center-dept-evl ref="taskCenterdeptEvl" @approveMsg="approveMsg"></task-center-dept-evl>
         <task-center-dept-business-evl ref="taskCenterdeptbusinessEvl" @approveMsg="approveMsg"></task-center-dept-business-evl>
         <task-application-from ref="taskApplicationFrom" @approveMsg="approveMsg"></task-application-from>
+        <task-unit-rating-from ref="taskUnitRating"></task-unit-rating-from>
     </div>
 </template>
 
 <script>
 import {apiPostTodoTaskList, apiPostgetInstanceAndChildren} from '../../api/api'
+import taskUnitRatingFrom from './taskUnitRatingFrom.vue'
 import taskEvaluationStart from './taskEvaluationStart.vue'
 import taskCenterEvl from './taskCenterEvlNewFrom.vue'
 import taskCenterDeptEvl from './taskCenterDeptStartFrom.vue'
@@ -77,7 +79,8 @@ export default {
         taskCenterEvl,
         taskCenterDeptEvl,
         taskCenterDeptBusinessEvl,
-        taskApplicationFrom
+        taskApplicationFrom,
+        taskUnitRatingFrom
     },
     data() {
         return {
@@ -145,6 +148,8 @@ export default {
                         that.$refs.taskCenterEvl.init(row, allData)
                     } else if (taskDefKey === 'dwkpmbqd' || taskDefKey === 'dwkpmbxd') {
                         that.$refs.taskEvaluationStart.init(row, allData)
+                    } else if (taskDefKey === 'nddwpj') {
+                        that.$refs.taskUnitRating.init(row, keyId, allData)
                     }
                 }
             })

+ 788 - 0
src/components/taskCenter/taskUnitRatingFrom.vue

@@ -0,0 +1,788 @@
+<template>
+    <div class="taskUnitRatingDetail">
+        <el-dialog title="单位考评评级详情" v-model="ratingdialogVisible" :fullscreen="true" :close-on-click-modal="false">
+            <div class="taskUnit">
+                <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.year}}</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.recStage}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">创建人:</span>
+                            <span>{{receiptMsg.createName}}</span>
+                        </div>
+                    </el-col>
+                </el-row>
+                <div class="evaluationUnitRatingBtn">
+                    <div class="headerRight">
+                        <div class="seachFor">
+                            <el-input v-model="resCompanyName" placeholder="请输入单位名称" clearable @keyup.enter="getevaluRatingDiaList(rowObj, rowkeyId)"></el-input>
+                            <el-select v-model="businessStr" placeholder="请选择业务属性" clearable  @change="getevaluRatingDiaList(rowObj, rowkeyId)">
+                                <el-option
+                                v-for="item in binSectionoptions"
+                                :key="item.sectionCode"
+                                :label="item.sectionName"
+                                :value="item.sectionCode">
+                                </el-option>
+                            </el-select>
+                        </div>
+                        <div class="tableBtn add" @click="handleAdd">
+                            <img :src="addIcon" alt="">
+                            <span>新增</span>
+                        </div>
+                        <div class="tableBtn save" @click="handleEdit">
+                            <img :src="saveIcon" alt="">
+                            <span>保存</span>
+                        </div>
+                        <div class="tableBtn delete" @click="handleDelete">
+                            <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 class="evaluationUnitRatingTableData">
+                        <!-- @row-click="rowClickToggle" -->
+                        <el-table :data="evaluationRatingDiaData" style="width: 100%" ref="tableSS"
+                        @select="rowClick" @select-all="rowClick">
+                            <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                            <el-table-column type="index" label="序号" align="center"></el-table-column>
+                            <el-table-column label="考评单位" width="200">
+                                <template #default="scope">
+                                    <el-tooltip
+                                        class="box-item"
+                                        effect="customized"
+                                        :content="scope.row.organizationShortName"
+                                        placement="right"
+                                    >
+                                        <span class="tooltipCC">{{scope.row.organizationShortName}}</span>
+                                    </el-tooltip>
+                                </template>
+                            </el-table-column>
+                            <el-table-column label="业务板块" prop="binSectionName" />
+                            <el-table-column label="考评年度" prop="year" />
+                            <el-table-column label="生成经营评级" prop="scjyRate" />
+                            <el-table-column label="前期评级" prop="qqRate" />
+                            <el-table-column label="基建评级" prop="jjRate" />
+                            <el-table-column label="年度评级" prop="yearRate" />
+                        </el-table>
+                        <el-pagination
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                            :current-page="page.currentPage"
+                            :page-size="page.pagesize"
+                            layout="total, prev, pager, next, jumper"
+                            :total="page.total">
+                        </el-pagination>
+                        <div>
+                    <p class="starttitleSty">审批意见:</p>
+                        <el-input v-model="descMsg" :rows="3" type="textarea" placeholder="请输入审批意见"></el-input>
+                    </div>
+                    </div>
+                    <el-dialog :title="title" custom-class="startToDia" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                        <div class="periodFrom">
+                            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">      
+                                <el-form-item label="考评单位" prop="companyRuleF">
+                                    <el-select v-model="ruleForm.companyRuleF" placeholder="请选择考评单位" :disabled="isSave">
+                                        <el-option
+                                        v-for="item in companyData"
+                                        :key="item.organizationId"
+                                        :label="item.organizationShortName"
+                                        :value="item.organizationId">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="业务属性" prop="binSection">
+                                    <el-select v-model="ruleForm.binSection" placeholder="请选择业务属性">
+                                        <el-option
+                                        v-for="item in binSectionoptions"
+                                        :key="item.sectionCode"
+                                        :label="item.sectionName"
+                                        :value="item.sectionCode">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="年份" prop="year">
+                                    <el-date-picker
+                                        v-model="ruleForm.year"
+                                        :disabled="isSave"
+                                        type="year"
+                                        value-format="YYYY"
+                                        placeholder="请选择年份"
+                                        />
+                                </el-form-item>
+                                <el-form-item label="生成经营评级">
+                                    <el-select v-model="ruleForm.scjyRate" placeholder="请选择评级">
+                                        <el-option
+                                        v-for="item in ratingArr"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="前期评级">
+                                    <el-select v-model="ruleForm.qqRate" placeholder="请选择评级">
+                                        <el-option
+                                        v-for="item in ratingArr"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="基建评级">
+                                    <el-select v-model="ruleForm.jjRate" placeholder="请选择评级">
+                                        <el-option
+                                        v-for="item in ratingArr"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="年度评级">
+                                    <el-select v-model="ruleForm.yearRate" placeholder="请选择评级">
+                                        <el-option
+                                        v-for="item in ratingArr"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                                <el-form-item label="描述" prop="remark">
+                                    <el-input v-model="ruleForm.remark" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                                </el-form-item>
+                            </el-form>
+                        </div>
+                        <template #footer>
+                            <span class="dialog-footer">
+                                <el-button @click="dialogVisible = false">取 消</el-button>
+                                <el-button type="primary" @click="saveevaluaStart('ruleForm')">确 定</el-button>
+                            </span>
+                        </template>
+                    </el-dialog>
+                </div>
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button type="primary" @click="examineAndApprove('agree')">同 意</el-button>
+                    <el-button @click="examineAndApprove('reject')">拒 绝</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <import-dailog ref="importPage" @successImport="successImport"></import-dailog>
+    </div>
+</template>
+
+<script>
+import importDailog from '../importPage/importDailog.vue'
+import btns from '../elbuttonS.vue'
+import seachs from '../seachGroup.vue'
+import ExcelJS from 'exceljs'
+import fileSave from 'file-saver'
+import addIcon from '../../assets/btnIcon/add.png'
+import saveIcon from '../../assets/btnIcon/save.png'
+import deleteIcon from '../../assets/btnIcon/delete.png'
+import exportIcon from '../../assets/btnIcon/export.png'
+import importIcon from '../../assets/btnIcon/import.png'
+import {apiGetorganizationratinglist, apiGetorganizationratingsave,apiGetOrganizationListAll,apiGetbinsectionList,
+apiPostorganizationratingDelete, apiPostIsdoAction} from '../../api/api'
+export default {
+    components: {
+        importDailog,
+        btns,
+        seachs
+    },
+    data() {
+        return {
+            dialogVisible: false,
+            ratingdialogVisible: false,
+            isSave: false,
+            title: '',
+            descMsg: '',
+            evalradio: {},
+            addIcon: addIcon,
+            saveIcon: saveIcon,
+            deleteIcon: deleteIcon,
+            exportIcon: exportIcon,
+            importIcon: importIcon,
+            changeDateSelect: [],
+            evaluationRatingDiaData:[],
+            companyData: [],
+            binSectionoptions: [],
+            ruleForm: {
+                companyRuleF: '',
+                year: '',
+                binSection: '',
+                scjyRate: '',
+                qqRate: '',
+                jjRate: '',
+                yearRate: '',
+                remark: ''
+            },
+            rules: {
+                companyRuleF: [
+                    { required: true, message: '请选择考评单位', trigger: 'change' }
+                ],
+                binSection: [
+                    { required: true, message: '请选择考评单位', trigger: 'change' }
+                ],
+                year: [
+                    { required: true, message: '请选择年份', trigger: 'change' }
+                ]
+            },
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            receiptMsg: {
+                code: '',
+                des: '',
+                stage: '',
+                createName: '',
+                createDate: '',
+                year: '',
+                recStage: ''
+            },
+            resCompanyName: '',
+            businessStr: '',
+            monthArr: [],
+            ratingArr: [],
+            winPix: window.devicePixelRatio,
+            innerWidth: window.innerWidth,
+            rowObj: {},
+            instanceChild: {},
+            rowkeyId: ''
+        }
+    },
+    created() {
+        this.ratingArr = [
+            {
+                label: 'A级',
+                value: 'A'
+            },
+            {
+                label: 'B级',
+                value: 'B'
+            },
+            {
+                label: 'C级',
+                value: 'C'
+            }
+        ]
+    },
+    methods:{
+        init(row, keyId, allData) {
+            this.ratingdialogVisible = true
+            this.rowObj = row
+            this.rowkeyId = keyId
+            this.instanceChild = allData
+            this.receiptMsg = {
+                code: row.responsibilityCode,
+                des: row.des,
+                stage: row.stage,
+                createName: row.createName,
+                createDate: row.createTime,
+                year: row.year,
+                recStage: '有效'
+            }
+            this.getevaluRatingDiaList(row, keyId)
+            this.getOrganizetionData()
+            this.getDataDictionary()
+        },
+        // 查询列表页面
+        getevaluRatingDiaList(row, id) {
+            let that = this
+            let params = {
+                pageNum: that.page.currentPage,
+                pageSize: that.page.pagesize,
+                organizationYearRatingId: id,
+                organizationId: that.resCompanyName,
+                binSection: that.businessStr,
+                year: row.year
+            }
+            apiGetorganizationratinglist(params).then(datas =>{
+                if (datas && datas.data.records) {
+                    that.evaluationRatingDiaData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        //查询单位数据
+        getOrganizetionData() {
+            let that = this
+            let params = {
+                evaluationCycle: 'NDKP',
+                organizationType: 'DWKP'
+            }
+            apiGetOrganizationListAll(params).then(datas => {
+                if (datas && datas.data) {
+                    that.companyData = datas.data
+                }
+            })
+        },
+        // 查询属性和阶段
+        getDataDictionary() {
+            let that = this
+            let params = {
+                type: '1'
+            }
+            apiGetbinsectionList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.binSectionoptions = datas.data
+                }
+            })
+        },
+        saveevaluaStart(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改考评启动数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let orgName = ''
+            this.companyData.forEach(item =>{
+                if (item.organizationId === that.ruleForm.companyRuleF) {
+                    orgName = item.organizationShortName
+                }
+            })
+            let params = {
+                organizationId: that.ruleForm.companyRuleF,
+                organizationShortName: orgName,
+                year: that.ruleForm.year,
+                binSection: that.ruleForm.binSection,
+                scjyRate: that.ruleForm.scjyRate,
+                qqRate: that.ruleForm.qqRate,
+                jjRate: that.ruleForm.jjRate,
+                yearRate: that.ruleForm.yearRate,
+                remark: that.ruleForm.remark
+            }
+            if (that.isSave) {
+                params.id = that.evalradio.id
+            }
+            apiGetorganizationratingsave(params).then(datas =>{
+                if (!datas.success) {
+                    that.$message({
+                        message: datas.message,
+                        type: 'error'
+                    });
+                } else {
+                    if (!that.isSave) {
+                        that.$message({
+                            message: '单位绩效考核评级新增成功',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message({
+                            message: '单位绩效考核评级修改成功',
+                            type: 'success'
+                        });
+                    }
+                    that.dialogVisible = false
+                    that.changeDateSelect = []
+                    that.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+                }
+            })
+        },
+        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'
+                        })
+                    }
+                }
+            })
+        },
+        getSeachData() {
+            this.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+        },
+        resetSeach() {
+            this.resCompanyName = ''
+            this.businessStr = ''
+            this.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+            this.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+            this.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+        },
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        // rowClickToggle(row) {
+        //     this.$refs.tableSS.toggleRowSelection(row)
+        // },
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新建单位绩效考核评级'
+            this.$nextTick(() =>{
+                this.ruleForm = {
+                    companyRuleF: '',
+                    year: '',
+                    binSection: '',
+                    scjyRate: '',
+                    qqRate: '',
+                    jjRate: '',
+                    yearRate: '',
+                    remark: ''
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改单位绩效考核评级'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                companyRuleF: this.evalradio.organizationId,
+                year: this.evalradio.year,
+                binSection: this.evalradio.binSection,
+                scjyRate: this.evalradio.scjyRate,
+                qqRate: this.evalradio.qqRate,
+                jjRate: this.evalradio.jjRate,
+                yearRate: this.evalradio.yearRate,
+                remark: this.evalradio.remark
+            }
+        },
+        //删除
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                apiPostorganizationratingDelete(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+                    that.changeDateSelect = []
+                })
+            })
+        },  
+        handleImport() {
+            this.$refs.importPage.upload.title = "单位考评评级"
+            this.$refs.importPage.upload.open = true
+            this.$refs.importPage.upload.url = '/organization-rating/import'
+        },
+        successImport(val) {
+            this.getevaluRatingDiaList(that.rowObj, that.rowkeyId)
+        },
+        handleExport() {
+            let data = this.evaluationRatingDiaData  //接口返回数据
+            const workbook = new ExcelJS.Workbook()
+            const worksheet = workbook.addWorksheet('Sheet1')
+            //根据数据自己调整
+            let colums = []
+            colums = [
+                { header: 'ID', key: 'id', width: 26, hidden: true},
+                { header: '考评单位', key: 'organizationShortName', width: 26 },
+                { header: '考评单位ID', key: 'organizationId', width: 26, hidden: true },
+                { header: '业务板块ID', key: 'binSection', width: 26, hidden: true },
+                { header: '考评年度', key: 'year', width: 26 },
+                { header: '生成经营评级', key: 'scjyRate', width: 26 },
+                { header: '前期评级', key: 'qqRate', width: 26 },
+                { header: '基建评级', key: 'jjRate', width: 26 },
+                { header: '年度评级', key: 'yearRate', width: 26 },
+                { header: '备注', key: 'remake', width: 26 },
+            ]
+            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">
+.taskUnitRatingDetail{
+    .el-overlay{
+        .el-dialog{
+            // margin-top: 7vh;
+            .el-dialog__body{
+                padding: 0 20px !important;
+                .taskUnit{
+                    .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;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    .evaluationUnitRatingBtn{
+                        .headerRight{
+                            display: flex;
+                            justify-content: flex-end;
+                            width: 100%;
+                            margin: 15px 0;
+                            .seachFor{
+                                display: flex;
+                                .el-input{
+                                    height: 30px;
+                                    margin-right: 5px;
+                                    width: 150px;
+                                    .el-input__inner{
+                                        height:30px;
+                                    }
+                                    // .el-input__suffix{
+                                    //     .el-select__caret{
+                                    //         line-height:30px;
+                                    //     }
+                                    // }
+                                }
+                                .el-icon{
+                                    margin: 5px 10px 0 10px;
+                                    cursor: pointer;
+                                }
+                            }
+                            .tableBtn {
+                                display: flex;
+                                height: 20px;
+                                margin: 5px 8px 0 8px;
+                                // width: 20%;
+                                width: fit-content;
+                                img{
+                                    margin-right: 5px;
+                                    margin-top: 1px;
+                                }
+                                span{
+                                    display: inline-block;
+                                    width: 35px;
+                                    font-size: 14px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: 400;
+                                }
+                            }
+                            .add{
+                                cursor: pointer;
+                                span{
+                                    color: #3B7AD1;
+                                }
+                            }
+                            .save{
+                                cursor: pointer;
+                                span{
+                                    color: #50C14E;
+                                }
+                            }
+                            .import{
+                                cursor: pointer;
+                                span{
+                                    color: #ce1e78;
+                                }
+                            }
+                            .export{
+                                cursor: pointer;
+                                span{
+                                    color: #2baa8a;
+                                }
+                            }
+                        }
+                        .evaluationUnitRatingTableData{
+                            .el-table{
+                                .el-table__body-wrapper{
+                                    height: 40vh !important;
+                                }
+                                .el-input__inner{
+                                    height: 30px !important;
+                                }
+                                .el-radio__label{
+                                    display: none;
+                                }
+                                .tooltipCC{
+                                    width: 300px !important;
+                                    display: inline-block;
+                                    overflow: hidden;
+                                    text-overflow: ellipsis;
+                                    white-space: nowrap;
+                                }
+                                .tooltipCCDes{
+                                    width: 50px;
+                                    display: inline-block;
+                                    overflow: hidden;
+                                    text-overflow: ellipsis;
+                                    white-space: nowrap;
+                                }
+                                .indicitem{
+                                    color: #409EFF;
+                                    font-size: 12px;
+                                    margin-right: 20px;
+                                    cursor:pointer;
+                                    &:hover{
+                                        text-decoration: underline;
+                                    }
+                                }
+                            }
+                            .el-pagination{
+                                margin-top: 20px;
+                                text-align: end;
+                                position: relative;
+                            }
+                        }
+                        .el-overlay{
+                            .startToDia{
+                                .el-dialog__body{
+                                    padding: 30px 60px 30px 20px !important;
+                                    .periodFrom{
+                                        .el-select, .el-input{
+                                            width: 100%;
+                                        }
+                                        .el-input{
+                                            height: 30px;
+                                        }
+                                    }
+                                    .flowSty{
+                                        width: 100%;
+                                        height: 70vh;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            .el-dialog__footer{
+                .dialog-footer{
+                    display: flex;
+                    justify-content: center;
+                    .el-button{
+                        width: 180px !important;
+                        height: 40px !important;
+                    }
+                }
+            }
+        }
+    }
+    
+}
+</style>

+ 1 - 2
src/utils/baseUrl.js

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

+ 7 - 3
src/views/Login.vue

@@ -136,9 +136,13 @@ export default {
                     loginApi(userName, passwordRsa).then(datas=>{
                         if (datas) {
                             if (datas.success) {
-                                // setToken('token', datas.data.access_token)
-                                window.localStorage.setItem('token', datas.data.access_token)
-                                that.getTokenCode(datas.data.access_token)
+                                if (datas.data.error_description) {
+                                    that.loginLoading = false
+                                    ElMessage.error(datas.data.error_description);
+                                }else {
+                                    window.localStorage.setItem('token', datas.data.access_token)
+                                    that.getTokenCode(datas.data.access_token)
+                                }
                             } else {
                                 ElMessage.error(datas.message);
                                 that.loginLoading = false