Kaynağa Gözat

新增业绩考核系数配置页面及其详情页面,list,新增保存,删除,根据id查详情服务联调;考评规则配置新增函数服务;

SunZehao 2 yıl önce
ebeveyn
işleme
4c690b347b

+ 2 - 2
src/App.vue

@@ -6,11 +6,11 @@
 </template>
 
 <script>
-import commonHeader from '@/components/commonHeaders.vue'
+// import commonHeader from '@/components/commonHeaders.vue'
 export default {
     name: 'App',
     components:{
-        commonHeader
+        // commonHeader
     },
     data() {
         return {

+ 36 - 0
src/api/api.js

@@ -363,6 +363,35 @@ export function apiGetuserListAll(params) {
         params: params
     })
 }
+
+//业绩考核系数配置
+export function apiGetyeargroupcoefficientList(params) {
+    return httpRequest({
+        url: 'year-group-coefficient/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"业绩考核系数配置-保存/修改"
+export function apiGetyeargroupcoefficientsaveGroup(params) {
+    return httpRequest.post('year-group-coefficient/saveGroup', params)
+}
+//----"业绩考核系数配置-删除"
+export function apiDeleteyearcoefficientRemove(params) {
+    return httpRequest({
+        url: `year-group-coefficient/remove/${params}`,
+        method: 'post'
+    })
+}
+//----年度经营业绩系数-查询byid
+export function apigetyeargroupcoefficientlistById(params) {
+    return httpRequest({
+        url: `year-group-coefficient/listById`,
+        method: 'get',
+        params: params
+    })
+}
+
 //----------------------------------------考评知识库------------------------------------------------
 //----考评得分规则列表查询-list
 export function apiGetevaluationscoringruleList(params) {
@@ -383,6 +412,13 @@ export function apiGetevaluationruleRemove(params) {
         method: 'post'
     })
 }
+//函数查询
+export function apiGetfunctionList() {
+    return httpRequest({
+        url: 'function/list',
+        method: 'get'
+    })
+}
 
 //----区间评分详情查询-list
 export function apiGetintervaltableList(params) {

BIN
src/assets/loginImage/loginBak.png


BIN
src/assets/loginImage/logo.png


src/assets/logoG.png → src/assets/loginImage/logoG.png


src/assets/logoGuo.png → src/assets/loginImage/logoGuo.png


+ 230 - 0
src/components/evaluationSystem/achievementKDetail.vue

@@ -0,0 +1,230 @@
+<template>
+    <div class="startFrom">
+        <el-dialog title="业绩考核系数详情" v-model="dialogVisible" width="95vw" :close-on-click-modal="false">
+            <div class="startDetail">
+                <p class="starttitleSty">基础信息:</p>
+                <el-row class="danjuMsg">
+                    <el-col :span="10">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">单位名称:</span>
+                            <span>{{receiptMsg.organizationName}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="12">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit">年度:</span>
+                            <span>{{receiptMsg.year}}</span>
+                        </div>
+                    </el-col>
+                    <el-col :span="24">
+                        <div class="danjuMsg_data">
+                            <span class="data_tit data_tit_1">业务简述:</span>
+                            <span>{{receiptMsg.desc}}</span>
+                        </div>
+                    </el-col>
+                </el-row>
+                <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+                    <el-tab-pane label="权重分配" name="first">
+                         <!-- @select="rowClick" @select-all="rowClick" -->
+                        <el-table :data="weightAllocation" style="width: 100%">
+                            <!-- <el-table-column type="selection" label="操作" align="center"></el-table-column> -->
+                            <el-table-column type="index" label="序号" width="80" />
+                            <el-table-column label="考评单位" prop="organizationName" width="300"/>
+                            <el-table-column label="资产管理系数" align="center">
+                                <el-table-column label="资产总额" prop="zzc" />
+                                <el-table-column label="K1" prop="k1" />
+                            </el-table-column>
+                            <el-table-column label="幅度管理系数" align="center">
+                                <el-table-column label="机组" prop="jzs" />
+                                <el-table-column label="K2" prop="k2" />
+                            </el-table-column>
+                            <el-table-column label="效益贡献系数" align="center">
+                                <el-table-column label="账面利润总额" prop="zmlrze" />
+                                <el-table-column label="发电量" prop="fdl" />
+                                <el-table-column label="度电利润" prop="ddlr" />
+                                <el-table-column label="K3" prop="k3" />
+                            </el-table-column>
+                            <el-table-column label="定员管理系数" align="center">
+                                <el-table-column label="定员" prop="dy" />
+                                <el-table-column label="K4" prop="k4" />
+                            </el-table-column>
+                            <el-table-column label="K" prop="k" />
+                            <el-table-column label="填报人" prop="createBy" />
+                            <el-table-column label="填报日期" prop="createTime" width="160" />
+                        </el-table>
+                    </el-tab-pane>                    
+                </el-tabs>
+                
+            </div>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button type="primary" @click="dialogVisible = false">取 消</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {apigetyeargroupcoefficientlistById} from '../../api/api'
+import addIcon from '../../assets/btnIcon/add.png'
+import saveIcon from '../../assets/btnIcon/save.png'
+import editIcon from '../../assets/btnIcon/edit.png'
+import deleteIcon from '../../assets/btnIcon/delete.png'
+export default {
+    data() {
+        return {
+            dialogVisible: false,
+            activeName: 'first',
+            quantifiedList: [],
+            nonQuantifiedList: [],
+            changeDateSelect: [],
+            receiptMsg: {
+                organizationName: '',
+                des: '',
+                year: '',
+            },
+            addIcon: addIcon,
+            saveIcon: saveIcon,
+            editIcon: editIcon,
+            deleteIcon: deleteIcon,
+            rowMsg: {},
+            weightAllocation: []
+        }
+    },
+    created() {
+    },
+    methods: {
+        init(row) {
+            this.dialogVisible = true
+            this.activeName = 'first'
+            this.getDetails(row.id)
+            this.rowMsg = row
+        },
+        handleClick() {
+            this.changeDateSelect = []
+        },
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        //获取详情
+        getDetails(id) {
+            let that = this
+            let params = {
+                id: id
+            }
+            apigetyeargroupcoefficientlistById(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.receiptMsg = {
+                        organizationName: datas.data.createOrgName,
+                        year: datas.data.year,
+                        desc: datas.data.des
+                    }
+                    that.weightAllocation = datas.data.coefficientList
+                }
+            })
+        }
+    }
+}
+</script>
+
+<style lang="less">
+.startFrom{
+    .el-overlay{
+        .el-dialog{
+            margin-top: 7vh;
+            .el-dialog__body{
+                padding: 0 20px !important;
+                .startDetail{
+                    .starttitleSty{
+                        font-size: 18px;
+                        font-family: Microsoft YaHei;
+                        font-weight: bold;
+                        color: #3B7AD1;
+                        // line-height: 12px;
+                        margin: 20px 0 20px 10px;
+                    }
+                    .danjuMsg{
+                        border: 1px solid #D6DBEA;
+                        padding: 10px 20px;
+                        border-radius: 10px;
+                        margin-bottom: 20px;
+                        .danjuMsg_data{
+                            padding: 5px 0 10px 0;
+                            .data_tit{
+                                margin-right: 10px;
+                                font-weight: bold;
+                                font-size: 14px;
+                                font-family: Microsoft YaHei;
+                                color: #8991B0;
+                            }
+                            .data_tit_wd{
+                                display: inline-block;
+                                width: 90px;
+                            }
+                            .el-form-item--small{
+                                .el-input{
+                                    height: 25px;
+                                    width: 160px;
+                                }
+                                margin-bottom: 0;
+                                .el-input-number{
+                                    height: 25px;
+                                    .el-input-number__decrease, .el-input-number__increase{
+                                        right: -39px;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .el-tabs{
+                        .el-tabs__header{
+                            .el-tabs__nav{
+                                .el-tabs__item{
+                                    font-size: 18px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: bold;
+                                    margin: 0 10px;                                    
+                                    color: #8991B0;
+                                }
+                                .is-active{
+                                    font-size: 18px;
+                                    font-family: Microsoft YaHei;
+                                    font-weight: bold;
+                                    color: #3B7AD1;
+                                    margin: 0 10px;
+                                }
+                            }
+                        }
+                        
+                        .el-table{
+                            .el-table__body-wrapper{
+                                height: 40vh;
+                            }
+                            .el-table__row{
+                                .cell{
+                                    .el-input{
+                                        height: 24px;
+                                        .el-input__inner{
+                                            height: 24px;
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            .el-dialog__footer{
+                .dialog-footer{
+                    text-align: center;
+                }
+            }
+        }
+    }
+    
+}
+</style>

+ 761 - 0
src/components/evaluationSystem/achievementKPage.vue

@@ -0,0 +1,761 @@
+<template>
+    <div class="achievement" v-loading="loadingImport">
+        <div class="achievementBtn">
+            <div class="collectSeach">
+                <div class="exceed">
+                    <span class="exceedSpan">业务编码:</span>
+                    <el-input v-model="coefficientStr" placeholder="请输入业务编码"></el-input>
+                </div>
+                <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
+                <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
+            </div>
+            <div class="PeriodBtn">
+                <btns
+                :disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
+                :disDelete="changeDateSelect.length === 0"
+                :disImport="true"
+                :disExport="true"
+                @handleAdd="handleAdd"
+                @handleEdit="handleEdit"
+                @handleDelete="handleDelete"
+                @handleImport="handleImport"
+                @handleExport="handleExport"
+                ></btns>
+            </div>
+            <div class="achievementTableData">
+                <el-table :data="achievementData" style="width: 100%" @select="rowClick" @select-all="rowClick">
+                    <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                    <el-table-column label="序号" type="index" />
+                    <el-table-column label="业务编码" prop="coefficientCode" />
+                    <el-table-column label="单位名称" prop="createOrgName" width="300" />
+                    <el-table-column label="业务简述" prop="des" />
+                    <el-table-column label="年度" prop="year" />
+                    <el-table-column label="单据状态" prop="state" />
+                    <el-table-column label="修改人员" prop="updateBy" />
+                    <el-table-column label="修改时间" prop="updateTime" />
+                    <el-table-column label="操作">
+                        <template #default="scope">
+                            <p class="indicitem" @click="detailWatch(scope.row)">详情</p>
+                        </template>
+                    </el-table-column>
+                </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>
+            <div class="indexdialog">
+                <el-dialog :title="title" v-model="dialogVisible" width="95vw" :close-on-click-modal="false">
+                    <div class="startDetail">
+                        <p class="starttitleSty">基础信息:</p>                        
+                            <el-row class="danjuMsg">
+                                <el-col :span="6">
+                                    <div class="danjuMsg_data">
+                                        <span class="data_tit data_tit_1">单位名称:</span>
+                                        <el-select v-model="achObj.organizationName" placeholder="请选择部门" @change="changeRule">
+                                            <el-option
+                                            v-for="item in departmentDataAll"
+                                            :key="item.id"
+                                            :label="item.name"
+                                            :value="item.id">
+                                            </el-option>
+                                        </el-select>
+                                    </div>
+                                </el-col>
+                                <el-col :span="6">
+                                    <div class="danjuMsg_data">
+                                        <span class="data_tit data_tit_2">年度:</span>
+                                        <el-date-picker
+                                            v-model="achObj.year"
+                                            type="year"
+                                            value-format="YYYY"
+                                            placeholder="请选择年份"
+                                            />
+                                    </div>
+                                </el-col>
+                                <el-col :span="24">
+                                    <div class="danjuMsg_data">
+                                        <span class="data_tit data_tit_1">业务简述:</span>
+                                        <el-input v-model="achObj.desc" :rows="2" type="textarea" placeholder="请输入描述"></el-input>
+                                    </div>
+                                </el-col>
+                            </el-row>
+                        <div class="detaTableBtns">
+                            <div class="tableBtn add" @click="addDetail">
+                                <img :src="addIcon" alt="">
+                                <span>新增</span>
+                            </div>
+                            <!-- <div class="tableBtn save" @click="saveDetail">
+                                <img :src="saveIcon" alt="">
+                                <span>保存</span>
+                            </div> -->
+                            <!-- <div class="tableBtn edit">
+                                <img :src="editIcon" alt="">
+                                <span>新增</span>
+                            </div> -->
+                            <div class="tableBtn delete" @click="deleteTableData">
+                                <img :src="deleteIcon" alt="">
+                                <span>删除</span>
+                            </div>
+                        </div>
+                        <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+                            <el-tab-pane label="权重分配" name="first">
+                                <el-table :data="weightAllocation" style="width: 100%" @select="rowClickTable" @select-all="rowClickTable">
+                                    <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                                    <el-table-column type="index" label="序号" width="80" />
+                                    <el-table-column label="考评单位">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.organizationId" placeholder="请选择考评单位" @change="(val)=>chooseOrg(val, scope.row)">
+                                                <el-option
+                                                v-for="item in companyDatas"
+                                                :key="item.id"
+                                                :label="item.name"
+                                                :value="item.id">
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column label="业务属性">
+                                        <template #default="scope">
+                                            <el-select v-model="scope.row.binSection" placeholder="请选择业务属性">
+                                                <el-option
+                                                v-for="item in moduleData"
+                                                :key="item.id"
+                                                :label="item.sectionName"
+                                                :value="item.id">
+                                                </el-option>
+                                            </el-select>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column label="资产管理系数" align="center">
+                                        <el-table-column label="资产总额">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.zzc" :min="0" />
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="K1">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.k1" :precision="2" :step="0.1" :min="0" :max="1" />
+                                            </template>
+                                        </el-table-column>
+                                    </el-table-column>
+                                    <el-table-column label="幅度管理系数" align="center">
+                                        <el-table-column label="机组">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.jzs" :min="0" />
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="K2">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.k2" :precision="2" :step="0.1" :min="0" :max="1" />
+                                            </template>
+                                        </el-table-column>
+                                    </el-table-column>
+                                    <el-table-column label="效益贡献系数" align="center">
+                                        <el-table-column label="账面利润总额">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.zmlrze" :min="0" />                                                
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="发电量">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.fdl" :min="0" />
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="度电利润">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.ddlr" :min="0" />
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="K3">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.k3" :precision="2" :step="0.1" :min="0" :max="1" />
+                                            </template>
+                                        </el-table-column>
+                                    </el-table-column>
+                                    <el-table-column label="定员管理系数" align="center">
+                                        <el-table-column label="定员">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.dy" :min="0" />
+                                            </template>
+                                        </el-table-column>
+                                        <el-table-column label="K4">
+                                            <template #default="scope">
+                                                <el-input-number v-model="scope.row.k4" :precision="2" :step="0.1" :min="0" :max="1" />
+                                            </template>
+                                        </el-table-column>
+                                    </el-table-column>
+                                    <el-table-column label="K">
+                                        <template #default="scope">
+                                            <el-input-number v-model="scope.row.k" :precision="2" :step="0.1" :min="0" :max="1" />
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column label="填报人">
+                                        <template #default="scope">
+                                            <el-input v-model="scope.row.createBy" placeholder="请输入填报人"></el-input>
+                                        </template>
+                                    </el-table-column>
+                                    <el-table-column label="填报日期" prop="createTime">
+                                        <!-- <template #default="scope">
+                                            <el-date-picker
+                                                v-model="scope.row.createTime"
+                                                type="date"
+                                                value-format="YYYY-MM-DD"
+                                                :size="size"
+                                            />
+                                        </template> -->
+                                    </el-table-column>
+                                </el-table>
+                            </el-tab-pane>
+                        </el-tabs>                        
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveachievementMsg()">确 定</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </div>
+            <indicator-item ref="indicatorItem"></indicator-item>
+        </div>
+        <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
+        <achievement-detail ref="achievementDetail"></achievement-detail>
+    </div>
+</template>
+
+<script>
+import importDailog from '../importPage/importDailog.vue'
+import achievementDetail from './achievementKDetail.vue'
+import btns from '../elbuttonS.vue'
+import {apiGetyeargroupcoefficientList, apiGetyeargroupcoefficientsaveGroup, apiDeleteyearcoefficientRemove,apiGetbinsectionList,
+ apiGetorganizationstructureFromTree, apiGetorganizationgetTree, apigetyeargroupcoefficientlistById} from '../../api/api'
+export default {
+  components: { importDailog, btns, achievementDetail },
+    data() {
+        return {
+            dialogVisible: false,
+            title: '',
+            isSave: false,
+            changeDateSelect: [],
+            changeTableSelect: [],
+            coefficientStr: '',
+            achievementData:[],
+            departmentDataAll: [],
+            weightAllocation: [],
+            companyDatas: [],
+            moduleData: [],
+            achObj: {
+                organizationName: '',
+                year: '',
+                des: ''
+            },
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            evalradio: {},
+            loadingImport: false,
+            activeName: 'first',
+        }
+    },
+    created() {
+        this.getachievementData()
+        this.getDepartmentFromTreeData()
+        this.getOrganizetionData()
+        this.getBinSectionS()
+    },
+    methods:{
+        // 查询人员配置数据
+        getachievementData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize
+            }
+            if (type) {
+                params.coefficientCode = that.coefficientStr
+            }
+            apiGetyeargroupcoefficientList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.achievementData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        //根据组织树查询部门
+        getDepartmentFromTreeData() {
+            let that = this
+            let params = {
+                id: '23031001',
+                num: 1
+            }
+            apiGetorganizationstructureFromTree(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.departmentDataAll = datas.data[0].children
+                }
+            })
+        },
+        // 查询业务属性
+        getBinSectionS() {
+            let that = this
+            apiGetbinsectionList().then(datas =>{
+                if (datas && datas.data) {
+                    that.moduleData = datas.data
+                }
+            })
+        },
+        //查询组织数据
+        getOrganizetionData() {
+            let that = this
+            let params = {
+                id: '23031000',
+                num: 1
+            }
+            apiGetorganizationgetTree(params).then(datas =>{
+                if (datas && datas.data && datas.data[0].children.length>0) {
+                    that.companyDatas = datas.data[0].children
+                }
+            })
+        },
+        addDetail() {
+            let obj = {
+                id: Math.random(),
+                organizationId: '',
+                binSection: '',
+                zzc: 0,
+                k1: 0,
+                jzs: 0,
+                k2: 0,
+                zmlrze: 0,
+                fdl: 0,
+                ddlr: 0,
+                k3: 0,
+                dy: 0,
+                k4: 0,
+                k: 0,
+                createBy: '',
+                createTime: this.getPowerTime(new Date())
+            }
+            this.weightAllocation.push(obj)
+        },
+        deleteTableData() {
+            for(let i =0; i<this.changeTableSelect.length;i++) {
+                let item = this.changeTableSelect[i]
+                for(let j =0; j<this.weightAllocation.length;j++) {
+                    let it = this.weightAllocation[j]
+                    if (item.id === it.id) {
+                        this.weightAllocation.splice(j, 1)
+                    }
+                }
+            }
+        },
+        //转换时间
+        getPowerTime(date){
+            var y = date.getFullYear();  
+            var m = date.getMonth() + 1;  
+            m = m < 10 ? ('0' + m) : m;  
+            var d = date.getDate();  
+            d = d < 10 ? ('0' + d) : d;  
+            var h = date.getHours();  
+            h=h < 10 ? ('0' + h) : h;  
+            var minute = date.getMinutes();  
+            minute = minute < 10 ? ('0' + minute) : minute;
+            var second=date.getSeconds();  
+            second=second < 10 ? ('0' + second) : second;  
+            let timeF = ''
+            timeF = y + '-' + m + '-' + d+' '+h+':'+minute+ ':'+second
+            return timeF
+        },
+        //根据id查询权重数据
+        getWeightAllocation(id) {
+            let that = this
+            let params = {
+                id: id
+            }
+            apigetyeargroupcoefficientlistById(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.achObj = {
+                        organizationName: datas.data.createOrgId,
+                        year: datas.data.year,
+                        desc: datas.data.des
+                    }
+                    that.weightAllocation = datas.data.coefficientList
+                }
+            })
+        },
+        detailWatch(row) {
+            this.$refs.achievementDetail.init(row)
+        },
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增业绩考核系数'
+            this.achObj = {
+                organizationName: '',
+                year: '',
+                des: ''
+            }
+            this.weightAllocation = []
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改业绩考核系数'
+            this.evalradio = this.changeDateSelect[0]
+            this.getWeightAllocation(this.evalradio.id)
+        },
+        saveachievementMsg() {
+            let that = this
+            if (that.achObj.organizationName === '' || that.achObj.year === '') {
+                that.$message({
+                    message: '请完善基础信息',
+                    type: 'error'
+                })
+            } else {
+                that.saveAndEditIndicatorData()
+            }
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let orgName = ''
+            this.departmentDataAll.forEach(item =>{
+                if (item.id === that.achObj.organizationName) {
+                    orgName = item.name
+                }
+            })
+            let params = {
+                createOrgId: that.achObj.organizationName,
+                createOrgName: orgName,                
+                year: that.achObj.year,
+                des: that.achObj.desc,
+                coefficientList: that.weightAllocation
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetyeargroupcoefficientsaveGroup(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.getachievementData()
+                }
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                apiDeleteyearcoefficientRemove(paramsArr.join(',')).then(datas =>{
+                    if (datas) {
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.changeDateSelect = []
+                        that.getachievementData()
+                    }
+                })
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        rowClickTable(selection, row) {
+            this.changeTableSelect = selection
+        },
+        chooseOrg(val, row) {
+            this.companyDatas.forEach(item =>{
+                if (val === item.id) {
+                    row.organizationName = item.name
+                }
+            })
+        },
+        getSeachData() {
+            this.page.currentPage = 1
+            this.getachievementData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.coefficientStr = ''
+            this.getachievementData()
+        },
+        successImport(val) {
+            this.loadingImport = false
+            this.getachievementData()
+        },
+        importLoading(val) {
+            this.loadingImport = true
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+            this.getachievementData()
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+            this.getachievementData()
+        },
+        handleImport() {
+            this.$refs.importPage.upload.title = "考评指标管理信息导入"
+            this.$refs.importPage.upload.open = true
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.achievement{
+  .achievementBtn{
+        .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: 10px;
+                    }
+                    .el-input{
+                        margin-right:10px;
+                        .el-input__inner{
+                            height:30px;
+                        }
+                        .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: end;
+            padding: 20px 0;
+        }
+        .el-button{
+            height: 30px;
+            // width:100px;
+            padding: 0 30px ;
+            // padding-top: 8px;
+            span{
+                margin:0;
+            }
+        }
+        .indexdialog{
+            .el-overlay{
+                .el-dialog{
+                    margin-top: 3vh;
+                    .el-dialog__body{
+                        padding: 0 20px !important;
+                        .startDetail{
+                            .starttitleSty{
+                                font-size: 18px;
+                                font-family: Microsoft YaHei;
+                                font-weight: bold;
+                                color: #3B7AD1;
+                                // line-height: 12px;
+                                margin: 20px 0 20px 10px;
+                            }
+                            .danjuMsg{
+                                border: 1px solid #D6DBEA;
+                                padding: 10px 20px;
+                                border-radius: 10px;
+                                margin-bottom: 20px;
+                                .danjuMsg_data{
+                                    padding: 5px 0 10px 0;
+                                    display: flex;
+                                    .data_tit{
+                                        font-weight: bold;
+                                        font-size: 14px;
+                                        font-family: Microsoft YaHei;
+                                        color: #8991B0;
+                                        position: relative;
+                                        top: 7px;
+                                    }
+                                    .data_tit_1{
+                                        width: 100px;
+                                    }
+                                    .data_tit_2{
+                                        width: 60px;
+                                    }
+                                    .el-select, .el-input{
+                                        width: 90%;
+                                        height: 40px;
+                                    }
+                                    .el-textarea{
+                                        left: -7px;
+                                    }
+                                }
+                            }
+                            .detaTableBtns{
+                                display: flex;
+                                width: 300px;
+                                position: relative;
+                                top: 32px;
+                                left: 87vw;
+                                z-index: 11111;
+                                .tableBtn {
+                                    display: flex;
+                                    margin-right: 30px;
+                                    img{
+                                        margin-right: 5px;
+                                        margin-top: 1px;
+                                    }
+                                    span{
+                                        font-size: 14px;
+                                        font-family: Microsoft YaHei;
+                                        font-weight: 400;
+                                    }
+                                }
+                                .add{
+                                    cursor: pointer;
+                                    span{
+                                        color: #3B7AD1;
+                                    }
+                                }
+                                .save{
+                                    cursor: pointer;
+                                    span{
+                                        color: #50C14E;
+                                    }
+                                }
+                                .edit{
+                                    span{
+                                        color: #F5A623;
+                                    }
+                                }
+                                .delete{
+                                    cursor: pointer;
+                                    span{
+                                        color: #F65177;
+                                    }
+                                }
+                            }
+                            .el-tabs{
+                                .el-tabs__header{
+                                    .el-tabs__nav{
+                                        .el-tabs__item{
+                                            font-size: 18px;
+                                            font-family: Microsoft YaHei;
+                                            font-weight: bold;
+                                            margin: 0 10px;                                    
+                                            color: #8991B0;
+                                        }
+                                        .is-active{
+                                            font-size: 18px;
+                                            font-family: Microsoft YaHei;
+                                            font-weight: bold;
+                                            color: #3B7AD1;
+                                            margin: 0 10px;
+                                        }
+                                    }
+                                }
+                                
+                                .el-table{
+                                    .el-table__body-wrapper{
+                                        height: 33vh;
+                                    }
+                                    .el-table__row{
+                                        .cell{
+                                            .el-input{
+                                                height: 24px;
+                                                .el-input__inner{
+                                                    height: 24px;
+                                                }
+                                            }
+                                            .el-input-number--small, .el-date-editor{
+                                                width: 100px;
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+  .achievementTableData{
+    .el-table{
+        .el-table__body-wrapper{
+            height: 58vh !important;
+        }
+        .el-input__inner{
+            height: 30px !important;
+        }
+        .el-radio__label{
+            display: none;
+        }
+        
+        .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;
+    }
+    }
+    
+}
+</style>

+ 2 - 2
src/components/evaluationSystem/evaluationPersonnelPage.vue

@@ -446,13 +446,13 @@ export default {
                 confirmButtonText: '确定',
                 cancelButtonText: '取消',
                 type: 'warning'
-            }).then(async() => {
+            }).then(() => {
                 let that = this
                 let paramsArr = []
                 that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                await apiGetpersonneldeleteList(paramsArr.join(',')).then(datas =>{
+                apiGetpersonneldeleteList(paramsArr.join(',')).then(datas =>{
                     if (datas) {
                         that.$message({
                             type: 'success',

+ 18 - 217
src/components/knowledgePage/scoringRulesDetailPage.vue

@@ -113,27 +113,27 @@
                                                 @row-dblclick="tabFuncRowClickHandle"
                                                 :data="funcMsg"
                                             >
-                                                <el-table-column min-width="50%">
+                                                <el-table-column min-width="40%">
                                                     <template #default="scope">
                                                         <el-popover trigger="hover" placement="bottom">
-                                                        <p>描述:{{ scope.row.describe }}</p>
+                                                        <p>描述:{{ scope.row.formulaName }}</p>
                                                         <!-- <p>参数:{{ scope.row.param }}</p> -->
                                                         <template #reference>
                                                             <span size="medium" transition="fade-in-linear">{{
-                                                            scope.row.name
+                                                            scope.row.formulaName
                                                             }}</span>
                                                         </template>
                                                         </el-popover>
                                                     </template>
                                                 </el-table-column>
-                                                <el-table-column min-width="50%">
+                                                <el-table-column min-width="60%">
                                                     <template #default="scope">
                                                         <el-popover trigger="hover" placement="bottom">
-                                                        <p>描述:{{ scope.row.describe }}</p>
+                                                        <p>描述:{{ scope.row.description }}</p>
                                                         <!-- <p>参数:{{ scope.row.param }}</p> -->
                                                         <template #reference>
                                                             <span size="medium" transition="fade-in-linear">{{
-                                                            scope.row.lab
+                                                            scope.row.description
                                                             }}</span>
                                                         </template>
                                                         </el-popover>
@@ -210,7 +210,7 @@
 import addW from '../../assets/btnIcon/addW.png'
 import editW from '../../assets/btnIcon/editW.png'
 import deleteW from '../../assets/btnIcon/deleteW.png'
-import {apiGetintervaltableList, apiGetindicatorselectByCode, apiGetintervalscoringsaveOrUpdate, apiGetintervalscoringRemove} from '../../api/api'
+import {apiGetintervaltableList, apiGetindicatorselectByCode, apiGetintervalscoringsaveOrUpdate, apiGetintervalscoringRemove, apiGetfunctionList} from '../../api/api'
 export default {
     data() {
         return {
@@ -245,201 +245,6 @@ export default {
         }
     },
     created() {
-        this.funcMsg = [
-            { lab: "IF", name: "IF函数", param: "", describe: "", scene: "" },
-            {
-                lab: "MR",
-                name: "移动极差",
-                // param: "测点名,时间(秒)",
-                describe: "是指两个或多个连续样本值中最大值与最小值之差",
-                scene: "测点的移动极差超限报警",
-            },
-            {
-                lab: "MAR",
-                name: "均值极差",
-                // param: "测点名,时间(秒)",
-                describe: "",
-                scene: "测点的均值极差计算",
-            },
-            {
-                lab: "RiseExceed",
-                name: "上升趋势",
-                // param: "测点名,时间(秒),阈值",
-                describe: "取测点在给定的时间范围内数据上升的量是否超过阈值",
-                scene: "测点值的上升速度过快等",
-            },
-            {
-                lab: "Sustain",
-                name: "持续时间",
-                // param: "表达式,时间(秒)",
-                describe:
-                "判定状态(表达式成立)持续的时间是否超过给定的时间判断状态持续的时间",
-                scene: "",
-            },
-            {
-                lab: "LastUpdateTime",
-                name: "最近数据时间",
-                // param: "测点名",
-                describe: "",
-                scene: "判定离线,状态持续时间等",
-            },
-            {
-                lab: "abs",
-                name: "取绝对值",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "acos",
-                name: "反余弦",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "asin",
-                name: "反正弦",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "atan",
-                name: "反正切",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "atan2",
-                name: "xy坐标转为极坐标",
-                // param: "x,y",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "ceiling",
-                name: "向上取整",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "cos",
-                name: "余弦",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "cosh",
-                name: "双曲线余弦",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "exp",
-                name: "欧拉数 e 的 double 次幂的值",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "floor",
-                name: "向下取整",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "log",
-                name: "自然对数",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "log10",
-                name: "底数为 10 的对数",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "max",
-                name: "比较最大值",
-                // param: "double a, double b",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "min",
-                name: "比较最小值",
-                // param: "double a, double b",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "pow",
-                name: "返回第一个参数的第二个参数次幂的值",
-                // param: "double a, double b",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "round",
-                name: "返回最接近参数的 long,或int",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "sign",
-                name: "负数返回-1.0,整数返回1.0,0返回0.0",
-                // param: "float f/double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "sin",
-                name: "三角正弦值",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "sinh",
-                name: "双曲线正弦",
-                // param: "double x",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "sqrt",
-                name: "正平方根",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "tan",
-                name: "正切",
-                // param: "double a",
-                describe: "",
-                scene: "",
-            },
-            {
-                lab: "tanh",
-                name: "双曲线正切",
-                // param: "double x",
-                describe: "",
-                scene: "",
-            },
-            { lab: "PI", name: "圆周率", param: "", describe: "", scene: "" },
-            { lab: "E", name: "自然对数", param: "", describe: "", scene: "" },
-        ]
         this.operator = ["+", "-", "*", "/", "(", ")", ">", ">=", "<", "<=", "==", "!=",
             "&&", "||", "!", "%", "true", "false", ".", ]
     },
@@ -451,6 +256,16 @@ export default {
             this.rowevalradio = row
             this.getrulesDetailData(row)
             this.getindicItemData(row)
+            this.getFunData()
+        },
+        // 函数查询
+        getFunData() {
+            let that = this
+            apiGetfunctionList().then(datas =>{
+                if (datas && datas.data) {
+                    that.funcMsg = datas.data
+                }
+            })
         },
         // 查询考评得分规则详情列表
         getrulesDetailData(row, type) {
@@ -527,21 +342,7 @@ export default {
             let endPos = elInput.selectionEnd; //选中字符到末尾字符
             if (startPos === undefined || endPos === undefined) return;
             let txt = elInput.value;
-            let func;
-            if (
-                row.lab === "IF" ||
-                row.lab === "MR" ||
-                row.lab === "MAR" ||
-                row.lab === "RiseExceed" ||
-                row.lab === "Sustain" ||
-                row.lab === "LastUpdateTime"
-            ) {
-                func = row.lab + "()";
-            } else if (row.lab === "PI" || row.lab === "E") {
-                func = "Math." + row.lab;
-            } else {
-                func = "Math." + row.lab + "()";
-            }
+            let func = row.formulaExpresion
             // 将插值添加到选中光标位置
             let result = txt.substring(0, startPos) + func + txt.substring(endPos);
             elInput.value = result;

+ 11 - 0
src/router/index.js

@@ -157,6 +157,17 @@ const routes = [
                                 '../components/evaluationSystem/evaluationPersonnelPage.vue'
                             ),
                     },
+                    {
+                        path: '/evaluationSystem/achievementK',
+                        name: 'achievementK',
+                        meta: {
+                            title: '业绩考核系数配置',
+                        },
+                        component: () =>
+                            import(
+                                '../components/evaluationSystem/achievementKPage.vue'
+                            ),
+                    },
                 ]
             },
         ]

+ 2 - 2
src/utils/baseUrl.js

@@ -11,12 +11,12 @@ switch (process.env.NODE_ENV) {
         baseUrl.ROOT = "/api"  //开发环境url
         // baseUrl.URL = "http://192.168.2.6:8086"
         baseUrl.URL = "http://123.60.219.66:18800"
-        // baseUrl.URL = "http://10.155.32.7:8086"
+        // baseUrl.URL = "http://10.65.78.23:18800"
         break
  
     case 'production': 
         baseUrl.ROOT = "http://123.60.219.66:18800/"
-        // baseUrl.ROOT = "http://10.155.32.7:8086/"
+        // baseUrl.ROOT = "http://10.65.78.23:18800/"
         break 
 }
 

+ 1 - 1
src/views/homePage.vue

@@ -152,7 +152,7 @@ export default {
                         name: '考评人员配置',
                     },
                     {
-                        index: '',
+                        index: '/evaluationSystem/achievementK',
                         name: '业绩考核系数配置',
                     },
                     {