mirror of
https://gitee.com/maimengcloud/xm-ui-web.git
synced 2025-12-30 10:12:26 +00:00
审核记录
This commit is contained in:
@@ -11,10 +11,12 @@
|
||||
<el-anchor-link title="基本信息" @click.prevent="scrollToSection('#baseInfo')"/>
|
||||
<el-anchor-link title="负责人、部门" @click.prevent="scrollToSection('#kselfUserid')"/>
|
||||
<el-anchor-link title="考核周期" @click.prevent="scrollToSection('#calcType')"/>
|
||||
<el-anchor-link title="考核评定" @click.prevent="scrollToSection('#score')"/>
|
||||
<el-anchor-link title="考核自评" @click.prevent="scrollToSection('#kselfScore')"/>
|
||||
<el-anchor-link title="考核复评" @click.prevent="scrollToSection('#score')"/>
|
||||
<el-anchor-link title="成果交付" @click.prevent="scrollToSection('#kresult')"/>
|
||||
<el-anchor-link title="备注" @click.prevent="scrollToSection('#remark')"/>
|
||||
<el-anchor-link title="关联任务" @click.prevent="scrollToSection('#taskBox')"/>
|
||||
<el-anchor-link title="关联任务" @click.prevent="scrollToSection('#taskBox')" v-if="currOpType!='add'"/>
|
||||
<el-anchor-link title="考核记录" @click.prevent="scrollToSection('#his')" v-if="!his && currOpType!='add'"/>
|
||||
</el-anchor>
|
||||
</el-affix>
|
||||
</template>
|
||||
@@ -113,30 +115,63 @@
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card style="margin-top:20px;" id="score">
|
||||
<el-card style="margin-top:20px;" id="kselfScore">
|
||||
<template #header>
|
||||
考核评定
|
||||
考核自评 <el-text type="info"> 得分:{{editForm.score||0}}</el-text> <el-button type="primary" v-if="editForm.kadmStatus!='3' && editForm.kadmStatus!='1'" @click="editSomeFields(editForm,'kadmStatus','1')">提交复评</el-button>
|
||||
</template>
|
||||
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="目标值" prop="targetValue">
|
||||
<el-space :wrap="false">
|
||||
<el-text>{{targetValueCpd}}</el-text> <icon icon="fa-solid:angle-double-right"/> <el-tag type="success" v-if="calcStatus">已达成</el-tag> <el-tag v-if="!calcStatus" type="error">未达成</el-tag>
|
||||
</el-space>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="当前值" prop="kpiValue">
|
||||
<el-input style="width:100%;" v-model="editForm.kpiValue" placeholder="当前值" :maxlength="20" @change="editSomeFields(editForm,'kpiValue',$event)" :disabled="disField"/>
|
||||
<el-input style="width:100%;" v-model="editForm.kpiValue" placeholder="当前值" :maxlength="20" @change="editSomeFields(editForm,'kpiValue',$event)" :disabled="editForm.kadmStatus=='3'"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="评定得分" prop="score">
|
||||
<el-input style="width:100%;" v-model="editForm.score" placeholder="得分0-100分" :maxlength="20" @change="editSomeFields(editForm,'score',$event)" :disabled="disField"/>
|
||||
<el-form-item label="自评得分" prop="score">
|
||||
<el-input style="width:100%;" v-model="editForm.score" placeholder="得分0-100分" :maxlength="20" @change="editSomeFields(editForm,'score',$event)" :disabled="editForm.kadmStatus=='3'"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="评分日期" prop="scoreDate">
|
||||
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.scoreDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'scoreDate',$event)" :disabled="disField"/>
|
||||
<el-form-item label="自评日期" prop="kselfTime">
|
||||
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.kselfTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'kselfTime',$event)" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-card style="margin-top:20px;" id="score">
|
||||
<template #header>
|
||||
考核复评
|
||||
</template>
|
||||
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="复评打分" prop="score">
|
||||
<el-input style="width:100%;" v-model="editForm.score" placeholder="得分0-100分" :maxlength="20" @change="editSomeFields(editForm,'score',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="复评状态" prop="kadmStatus">
|
||||
<mdp-select width="100%" itemCode="kadmStatus" v-model="editForm.kadmStatus" :maxlength="50" @change="editSomeFields(editForm,'kadmStatus',$event)" :disabled="!someOpen||disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="复评日期" prop="scoreDate">
|
||||
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.scoreDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'scoreDate',$event)" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
<el-card style="margin-top:20px;" id="kresult">
|
||||
<template #header>
|
||||
成果交付
|
||||
@@ -155,11 +190,18 @@
|
||||
</el-card>
|
||||
<el-card style="margin-top:20px;" v-if="currOpType!='add'" id="taskBox">
|
||||
<template #header>
|
||||
关联计划任务 <el-button @click="$refs['phaseDialog'].open()" type="primary" plain icon="Link">选择任务关联kpi</el-button>
|
||||
关联计划任务 <el-button @click="$refs['phaseDialog'].open()" type="primary" plain icon="Link" v-if="!his">选择任务关联kpi</el-button>
|
||||
<el-checkbox v-model="taskBoxVisible" :true-label="true" :false-label="false">显示任务列表</el-checkbox>
|
||||
</template>
|
||||
<xm-task-box v-if="taskBoxVisible" :key="editForm.id" :kpi-id="editForm.id" :sel-project="editForm.projectId?{id:editForm.projectId}:null" ref="taskBox"/>
|
||||
</el-card>
|
||||
|
||||
<el-card style="margin-top:20px;" v-if="currOpType!='add' && !his" id="his">
|
||||
<template #header>
|
||||
审核记录
|
||||
</template>
|
||||
<xm-kpi-his v-if="kpiHisVisible" :key="editForm.id" :kpi-id="editForm.id" :sel-project="editForm.projectId?{id:editForm.projectId}:null" ref="kpiHis"/>
|
||||
</el-card>
|
||||
</el-form>
|
||||
<div class="footer">
|
||||
<el-button @click="close" icon="close">关闭</el-button>
|
||||
@@ -176,11 +218,10 @@ import * as XmKpiApi from '@/api/xm/pro/xmKpi';
|
||||
import { editXmTaskSomeFields } from '@/api/xm/core/xmTask.js';
|
||||
import { MdpFormMixin } from '@/components/mdp-ui/mixin/MdpFormMixin.js';
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import XmUserSelect from '../../core/components/XmUserSelect.vue';
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
export default {
|
||||
components: { XmUserSelect},
|
||||
components: { },
|
||||
name:'XmKpiForm',
|
||||
mixins:[MdpFormMixin],
|
||||
computed: {
|
||||
@@ -199,6 +240,33 @@ export default {
|
||||
}else{
|
||||
return ""
|
||||
}
|
||||
},
|
||||
targetValueCpd(){
|
||||
if(!this.editForm.targetValue){
|
||||
return "未设定目标值计算规则"
|
||||
}
|
||||
if(!this.editForm.kpiValue){
|
||||
return this.editForm.targetValue
|
||||
}else{
|
||||
return this.editForm.targetValue.replace(/\$\{kpiValue\}/g, this.editForm.kpiValue);
|
||||
}
|
||||
},
|
||||
calcStatus(){
|
||||
if(!this.editForm.targetValue){
|
||||
return false
|
||||
}
|
||||
if(!this.editForm.kpiValue){
|
||||
return false
|
||||
}else{
|
||||
let rule= this.editForm.targetValue.replace(/\$\{kpiValue\}/g, this.editForm.kpiValue);
|
||||
try{
|
||||
let result=eval(rule)
|
||||
return result;
|
||||
}catch(e){
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
props:{
|
||||
@@ -209,7 +277,14 @@ export default {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
parentKpi:null,
|
||||
parentKpi:{//上级指标
|
||||
type: Object,
|
||||
default: ()=>null
|
||||
},
|
||||
his:{//是否为历史模式
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -242,6 +317,7 @@ export default {
|
||||
editSomeFields: XmKpiApi.editSomeFieldsXmKpi
|
||||
},
|
||||
taskBoxVisible:false,
|
||||
kpiHisVisible: false,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -333,6 +409,12 @@ export default {
|
||||
}else{
|
||||
this.taskBoxVisible=false
|
||||
}
|
||||
if(hash=='#his'){
|
||||
this.kpiHisVisible=true
|
||||
}else{
|
||||
this.kpiHisVisible=false
|
||||
}
|
||||
|
||||
const target = document.querySelector(hash)
|
||||
target?.scrollIntoView({ behavior: 'smooth' })
|
||||
}
|
||||
|
||||
@@ -41,11 +41,10 @@
|
||||
<el-space wrap>
|
||||
<mdp-select itemCode="ktype" v-model="filters.ktype" placeholder="指标等级"/>
|
||||
|
||||
<mdp-select itemCode="calcType" v-model="filters.calcType" placeholder="考核周期"/>
|
||||
<mdp-select itemCode="calcType" v-model="filters.calcType" placeholder="考核周期"/>
|
||||
<mdp-select itemCode="kadmStatus" v-model="filters.kadmStatus" placeholder="复审状态"/>
|
||||
<mdp-select itemCode="kstatus" v-model="filters.kstatus" placeholder="状态"/>
|
||||
<mdp-select itemCode="kclass" v-model="filters.kclass" placeholder="职能分类"/>
|
||||
<el-input style="width:120px;" v-model="filters.score" placeholder="得分" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
<el-input style="width:120px;" v-model="filters.weight" placeholder="权重" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
<el-input style="width:120px;" v-model="filters.kpiIndex" placeholder="指标名称" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
|
||||
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchTableDatas()" icon="search" type="primary" plain />
|
||||
@@ -293,6 +292,10 @@ export default {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
queryScope:{//查询范围 all-所有,kself-我的, kadm-我管理的,
|
||||
type: String,
|
||||
default:''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@@ -396,6 +399,9 @@ export default {
|
||||
//页面初始化需要配置的特殊逻辑写这里
|
||||
initCurrData(){
|
||||
this.project=this.projectInfo
|
||||
if(this.queryScope=='kadm'){
|
||||
this.filters['kadmStatus']='1'
|
||||
}
|
||||
this.searchTableDatas();
|
||||
},
|
||||
|
||||
@@ -411,6 +417,12 @@ export default {
|
||||
}
|
||||
if(this.parent?.id){
|
||||
params.parentId=this.parent.id
|
||||
}
|
||||
if(this.queryScope=='kself'){
|
||||
params.kselfUserid=this.userInfo.userid
|
||||
}else if(this.queryScope=='kadm'){
|
||||
params.queryScope=this.queryScope
|
||||
params.admUserid=this.userInfo.userid
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
399
src/views/xm/pro/kpi/IndexHis.vue
Normal file
399
src/views/xm/pro/kpi/IndexHis.vue
Normal file
@@ -0,0 +1,399 @@
|
||||
<template>
|
||||
<mdp-lr-box :lspan="6" :expand="false">
|
||||
<template #left>
|
||||
<xm-kpi-tree :sel-project="projectInfo" @check-change="(data, checked, indeterminate)=>onTreeChange(data, checked, indeterminate)"/>
|
||||
</template>
|
||||
<div>
|
||||
<ContentWrap>
|
||||
<template #header>
|
||||
<el-space wrap>
|
||||
<mdp-hi-query :column-configs="columnConfigs" v-model="hiQueryParams" @change="onHiQueryParamsChange" title="高级查询,定制任意复杂的查询条件"/>
|
||||
<el-button icon="zoom-out" @click="searchReset()" title="重置查询条件并查询"/>
|
||||
<el-button icon="download" @click="export2Excel()" title="导出查询结果到excel"/>
|
||||
<mdp-table-configs :column-configs="columnConfigs" v-model="checkedColumns"/>
|
||||
<el-button type="success" ref="kanbanBtn" plain @click="openKanban('kanbanDlg')" title="看板">板</el-button>
|
||||
<span v-if="currOpType=='mng'">
|
||||
<el-button :disabled="disBtn('delBtn') || !checkBtnQx('delBtn',menuDefId) || this.sels.length===0 || load.del==true" type="danger" v-loading="load.del" @click="batchDel" icon="delete" plain />
|
||||
</span>
|
||||
<span v-else-if="currOpType=='select' && this.multiple==true">
|
||||
<el-button :disabled="disBtn('selectBtn') || this.sels.length===0" type="primary" @click="selectListConfirm" icon="check" plain />
|
||||
</span>
|
||||
<mdp-select-dept v-model="filters.deptid"/>
|
||||
<xm-project-select v-if="!projectInfo?.id" v-model="filters.projectId" :collectId="xmCollect?.id" @change2="(p)=>project=p" @clear="()=>project=null"/>
|
||||
<xm-user-select v-model="filters.kselfUserid" placeholder="负责人" :sel-project="project"/>
|
||||
|
||||
</el-space>
|
||||
</template>
|
||||
<el-space wrap>
|
||||
<mdp-select itemCode="ktype" v-model="filters.ktype" placeholder="指标等级"/>
|
||||
|
||||
<mdp-select itemCode="calcType" v-model="filters.calcType" placeholder="考核周期"/>
|
||||
<mdp-select itemCode="kadmStatus" v-model="filters.kadmStatus" placeholder="复审状态"/>
|
||||
<mdp-select itemCode="kstatus" v-model="filters.kstatus" placeholder="状态"/>
|
||||
<mdp-select itemCode="kclass" v-model="filters.kclass" placeholder="职能分类"/>
|
||||
<el-input style="width:120px;" v-model="filters.kpiIndex" placeholder="指标名称" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
|
||||
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchTableDatas()" icon="search" type="primary" plain />
|
||||
</el-space>
|
||||
</ContentWrap>
|
||||
<el-table ref="table" @expand-change="expandChange" :row-style="{heigth:'24px'}" :header-row-style="{height:ganttVisible?'86px':'24px'}" v-adaptive="{bottom:64,disabled:ganttVisible||adaptiveDisabled}" :data="treeData" row-key="id" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
|
||||
<el-table-column type="selection" width="55" fixed="left" v-if="currOpType=='mng' || this.multiple==true"/>
|
||||
<el-table-column show-overflow-tooltip sortable prop="kpiName" width="300" fixed="left" label="指标名称">
|
||||
<template #default="scope">
|
||||
<el-popover placement="right-start" :width="200" show-after="200">
|
||||
<template #reference>
|
||||
<el-link @click="currOpType=='mng'?showEdit(scope.row):showDetail(scope.row)" type="primary">
|
||||
<el-text truncated style="width:200px;">
|
||||
<icon :icon="calcIcon(scope.row.ktype)" /> {{ scope.row.kpiName }}
|
||||
</el-text>
|
||||
</el-link>
|
||||
</template>
|
||||
<template #default>
|
||||
<el-space wrap>
|
||||
<el-button v-if="currOpType=='mng'" @click="showDetail(scope.row)" icon="edit" type="primary">查看明细</el-button>
|
||||
</el-space>
|
||||
|
||||
</template>
|
||||
</el-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 可编辑字段格式
|
||||
<el-table-column prop="objType" label="对象类型" min-width="120" col-type="String" v-if="showCol('objType')">
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="objType" show-style="tag" v-model="scope.row.objType" :maxlength="50" @change="editSomeFields(scope.row,'objType',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
-->
|
||||
<el-table-column prop="kpiIndex" label="排序号" min-width="120" col-type="String" v-if="showCol('kpiIndex')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input show-style="tag" v-model="scope.row.kpiIndex" :maxlength="50" @change="editSomeFields(scope.row,'kpiIndex',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="kstatus" label="状态" min-width="120" col-type="String" itemCode="kstatus" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="kstatus" show-style="tag" v-model="scope.row.kstatus" :maxlength="50" @change="editSomeFields(scope.row,'kstatus',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="startTime" show-overflow-tooltip label="起止时间" min-width="200" col-type="Date" v-if="showCol('startTime')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-date-range showStyle="tag" v-model="scope.row" startKey="startTime" endKey="endTime" @change="editSomeFields(scope.row,'startTime',$event)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="projectId" show-overflow-tooltip label="项目编号" min-width="120" col-type="String" v-if="showCol('projectId') && !projectInfo?.id" sortable/>
|
||||
|
||||
<el-table-column prop="ktype" label="指标等级" min-width="120" col-type="String" itemCode="ktype" v-if="showCol('ktype')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="ktype" show-style="tag" v-model="scope.row.ktype" :maxlength="50" @change="editSomeFields(scope.row,'ktype',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kclass" label="职能分类" min-width="120" col-type="String" itemCode="kclass" v-if="showCol('kclass')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="kclass" show-style="tag" v-model="scope.row.kclass" :maxlength="50" @change="editSomeFields(scope.row,'kclass',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="targetValue" show-overflow-tooltip label="目标值" min-width="120" col-type="String" v-if="showCol('targetValue')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input show-style="tag" v-model="scope.row.targetValue" :maxlength="50" @change="editSomeFields(scope.row,'targetValue',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="score" label="得分" min-width="120" col-type="Integer" v-if="showCol('score')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input type="number" :max="100" :min="0" show-style="tag" v-model="scope.row.score" :maxlength="50" @change="editSomeFields(scope.row,'score',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="weight" label="权重" min-width="120" col-type="String" v-if="showCol('weight')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input show-style="tag" v-model="scope.row.weight" :maxlength="50" @change="editSomeFields(scope.row,'weight',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="kselfUsername" label="负责人" min-width="120" col-type="String" v-if="showCol('kselfUsername')" sortable>
|
||||
<template #default="scope">
|
||||
<xm-user-select showStyle="tag" v-model="scope.row.kselfUserid" :init-name="scope.row.kseflUsername" @change="editSomeFields(scope.row,'kselfUserid',$event)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="deptid" label="部门" min-width="120" col-type="String" v-if="showCol('deptid')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select-dept showStyle="tag" v-model="scope.row.deptid" @change="editSomeFields(scope.row,'deptid',$event)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kpiValue" label="当前值" min-width="120" col-type="String" v-if="showCol('kpiValue')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input show-style="tag" v-model="scope.row.kpiValue" :maxlength="50" @change="editSomeFields(scope.row,'kpiValue',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="calcType" label="考核周期" min-width="120" col-type="String" itemCode="calcType" v-if="showCol('calcType')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="calcType" show-style="tag" v-model="scope.row.calcType" :maxlength="50" @change="editSomeFields(scope.row,'calcType',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="startTime" show-overflow-tooltip label="开始时间" min-width="120" col-type="Date" v-if="showCol('startTime')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-date showStyle="tag" v-model="scope.row.startTime" @change="editSomeFields(scope.row,'startTime',$event)" :disabled="true"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="endTime" show-overflow-tooltip label="结束时间" min-width="120" col-type="Date" v-if="showCol('endTime')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-date showStyle="tag" v-model="scope.row.endTime" @change="editSomeFields(scope.row,'endTime',$event)"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="dataLink" show-overflow-tooltip label="数据来源" min-width="120" col-type="String" v-if="showCol('dataLink')" itemCode="dataLink" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-select itemCode="dataLink" multiple split="," show-style="tag" v-model="scope.row.dataLink" :maxlength="50" @change="editSomeFields(scope.row,'dataLink',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="scoreDate" show-overflow-tooltip label="评分日期" min-width="120" col-type="Date" v-if="showCol('scoreDate')" sortable/>
|
||||
|
||||
<el-table-column prop="kresult" show-overflow-tooltip label="成果" min-width="120" col-type="String" v-if="false" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input show-style="tag" v-model="scope.row.kpiName" :maxlength="50" @change="editSomeFields(scope.row,'kpiName',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kselfTime" show-overflow-tooltip label="自评时间" min-width="120" col-type="Date" v-if="showCol('kselfTime')" sortable/>
|
||||
<el-table-column prop="kadmTime" show-overflow-tooltip label="审核时间" min-width="120" col-type="Date" v-if="showCol('kadmTime')" sortable/>
|
||||
|
||||
<el-table-column prop="bizFlowState" show-overflow-tooltip label="流程状态" min-width="120" col-type="String" v-if="showCol('bizFlowState')" sortable/>
|
||||
<el-table-column prop="bizProcInstId" show-overflow-tooltip label="流程编号" min-width="120" col-type="String" v-if="showCol('bizProcInstId')" sortable/>
|
||||
<el-table-column prop="remark" show-overflow-tooltip label="备注" min-width="120" col-type="String" sortable/>
|
||||
|
||||
|
||||
<el-table-column prop="kadmUserid" show-overflow-tooltip label="审核人编号" min-width="120" col-type="String" v-if="showCol('kadmUserid')" sortable/>
|
||||
<el-table-column prop="kadmUsername" show-overflow-tooltip label="审核人名称" min-width="120" col-type="String" v-if="showCol('kadmUsername')" sortable/>
|
||||
<el-table-column prop="kselfUserid" show-overflow-tooltip label="负责人编号" min-width="120" col-type="String" v-if="showCol('kselfUserid')" sortable/>
|
||||
|
||||
<el-table-column prop="id" show-overflow-tooltip label="主键" min-width="120" col-type="String" v-if="showCol('id')" sortable/>
|
||||
<el-table-column prop="branchId" show-overflow-tooltip label="机构编码" min-width="120" col-type="String" v-if="showCol('branchId')" sortable/>
|
||||
|
||||
<el-table-column label="操作" width="100" fixed="right" v-if="currOpType=='select' && this.multiple!=true" >
|
||||
<template #default="scope">
|
||||
<el-button type="primary" @click="selectConfirm(scope.row)" icon="check"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
layout="slot,total, sizes, prev, next,pager,jumper"
|
||||
@current-change="handleCurrentChange"
|
||||
@size-change="handleSizeChange"
|
||||
:page-sizes="[10,20, 50, 100, 500]"
|
||||
:current-page="pageInfo.pageNum"
|
||||
:page-size="pageInfo.pageSize"
|
||||
:total="pageInfo.total"
|
||||
style="float:right;"
|
||||
/>
|
||||
</div>
|
||||
</mdp-lr-box>
|
||||
|
||||
<!--新增修改明细 XmKpi 项目或任务关键指标考核界面-->
|
||||
<mdp-dialog ref="formDlg" :title="menuDefName" fullscreen>
|
||||
<template v-slot="{visible,data}">
|
||||
<XmKpiForm ref="XmKpiForm" :his="true" :xm-project="projectInfo" :parentKpi="data.parentKpi" :someOpen="true" :visible="visible" :parentOpType="currOpType" :subOpType="data.subOpType" :formData="data.formData" @close="onFormClose" @submit="afterFormSubmit" @edit-fields="afterEditFields"/>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
<MdpDialog ref="kanbanDlg" fullscreen :title="menuDefName">
|
||||
<MdpTableKanban
|
||||
:hiddenCfg="{delBtn:false,addBtn:false}"
|
||||
@del="(d,cb)=>handleDel(d)"
|
||||
@plus="(cb)=>showAdd()"
|
||||
@edit="(d,cb)=>showEdit(d)"
|
||||
v-model="tableDatas"
|
||||
:columnConfigs="columnConfigs"
|
||||
:itemKey="pkNames[0]"
|
||||
:contentFun="(item)=>item[pkNames[0]]"
|
||||
/>
|
||||
<!--
|
||||
<template #toolbar="{element}">
|
||||
<MdpSelect showStyle="tag" itemCode="xmProductPstatus" disabled v-model="element.pstatus"/>
|
||||
</template>
|
||||
</MdpTableKanban>
|
||||
-->
|
||||
</MdpDialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import { MdpTableMixin } from '@/components/mdp-ui/mixin/MdpTableMixin.js';
|
||||
import * as XmKpiHisApi from '@/api/xm/pro/xmKpiHis.js';
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useXmStore } from '@/store/modules/xm'
|
||||
|
||||
export default {
|
||||
name:'XmKpiMng',
|
||||
mixins:[MdpTableMixin],
|
||||
components: {
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore,['userInfo']),
|
||||
...mapState(useXmStore,['projectInfo','xmCollect']),
|
||||
|
||||
ganttData(){
|
||||
return this.treeToList(this.treeData)
|
||||
},
|
||||
|
||||
treeData(){
|
||||
var list=this.tableDatas
|
||||
const map = {}, tree = [];
|
||||
list.forEach(item=>map[item.id]={ ...item, children: [] })
|
||||
list.forEach(item => {
|
||||
if (item.parentId !== null && map[item.parentId]) {
|
||||
map[item.parentId].children.push(map[item.id]);
|
||||
} else {
|
||||
tree.push(map[item.id]);
|
||||
}
|
||||
});
|
||||
return tree;
|
||||
},
|
||||
},
|
||||
props:{
|
||||
// 是否开启editSomeField模式
|
||||
someOpen:{
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
queryScope:{//查询范围 all-所有,kself-我的, kadm-我管理的,
|
||||
type: String,
|
||||
default:''
|
||||
},
|
||||
kpiId:{
|
||||
type: String,
|
||||
default: null,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
expandChangeRows:new Map(),
|
||||
menuDefId:'',//menu_def.id 菜单表菜单编号,用于按钮权限判断
|
||||
menuDefName:'项目或任务关键指标考核',//menu_def.name 功能名称,用于导出excel等文件名
|
||||
pkNames:["id","kadmTime"],//表格主键的java属性名称,驼峰命名,默认为id,支持多主键
|
||||
currOpType:'mng',//表格 mng-综合管理具有最大权限,所有按钮可动、detail-只看不能操作
|
||||
filters:{//查询参数
|
||||
|
||||
},
|
||||
defaultFilters:{//默认查询参数,第一次打开界面的时候用到,恢复默认值的时候用到
|
||||
|
||||
},
|
||||
pageInfo:{//分页数据
|
||||
total:0,//服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算。
|
||||
pageSize: this.pageable?10:1500,//每页数据
|
||||
count:false,//是否需要重新计算总记录数
|
||||
pageNum:1,//当前页码、从1开始计算
|
||||
orderFields:['kpi_index','kadm_time'],//排序列 如 ['sex','student_id'],必须为数据库字段
|
||||
orderDirs:['asc','desc']//升序 asc,降序desc 如 性别 升序、学生编号降序 ['asc','desc']
|
||||
},
|
||||
//增删改查(含批量)接口
|
||||
apis:{
|
||||
list: XmKpiHisApi.listXmKpiHis,
|
||||
batchDel: XmKpiHisApi.batchDelXmKpiHis,
|
||||
},
|
||||
project:null,
|
||||
ktypeDict:[],
|
||||
ganttVisible:false,
|
||||
adaptiveDisabled:false,
|
||||
expand:true,
|
||||
lspan:24
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
expandChange(row,expanded){
|
||||
this.expandChangeRows.set(row.id,expanded)
|
||||
},
|
||||
// 深度优先遍历保持顺序不变
|
||||
treeToList(tree, list = [], parent = null) {
|
||||
tree.forEach(node => {
|
||||
// 创建当前节点的副本,移除 children 属性
|
||||
const { children, ...rest } = node;
|
||||
const newNode = {
|
||||
...rest
|
||||
};
|
||||
list.push(newNode);
|
||||
// 递归处理子节点
|
||||
if (children && children.length && (this.expandChangeRows.has(node.id) && this.expandChangeRows.get(node.id)==true)) {
|
||||
this.treeToList(children, list, newNode);
|
||||
}
|
||||
});
|
||||
return list;
|
||||
},
|
||||
onTreeChange(data, checked, indeterminate){
|
||||
if(checked){
|
||||
this.parent=data
|
||||
}else{
|
||||
this.parent=null
|
||||
}
|
||||
|
||||
},
|
||||
showAddSub(parentKpi){
|
||||
this.$refs['formDlg'].open({parentKpi:parentKpi,subOpType:'add'})
|
||||
},
|
||||
calcIcon(ktype){
|
||||
let o=this.ktypeDict.find(k=>k.id==ktype)
|
||||
return o?o.icon:'ep:full-screen'
|
||||
},
|
||||
//页面初始化需要配置的特殊逻辑写这里
|
||||
initCurrData(){
|
||||
this.project=this.projectInfo
|
||||
if(this.queryScope=='kadm'){
|
||||
this.filters['kadmStatus']='1'
|
||||
}
|
||||
this.searchTableDatas();
|
||||
},
|
||||
|
||||
/**
|
||||
* 检查参数是否满足调用后台接口的条件
|
||||
*
|
||||
* @param params 提交给后台的参数池,map类型
|
||||
* @returns true / false
|
||||
*/
|
||||
preQueryParamCheck(params){
|
||||
if(this.project?.id){
|
||||
params.projectId=this.project.id
|
||||
}
|
||||
if(this.parent?.id){
|
||||
params.id=this.parent.id
|
||||
}
|
||||
if(this.queryScope=='kself'){
|
||||
params.kselfUserid=this.userInfo.userid
|
||||
}else if(this.queryScope=='kadm'){
|
||||
params.kadmUserid=this.userInfo.userid
|
||||
}
|
||||
if(this.kpiId){
|
||||
params.id=this.kpiId
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
//页面数据加载完后需要对数据进行加工处理的
|
||||
afterList(tableDatas,isOk,apiName){
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 对修改的字段进行判断,返回false ,将取消更新数据库
|
||||
* @param {*} row 当前选中的行
|
||||
* @param {*} fieldName 修改的字段名
|
||||
* @param {*} $event 修改后的值
|
||||
* @param {*} params 将要提交服务器的参数
|
||||
* @returns true/false 返回false ,将取消更新数据库
|
||||
*/
|
||||
editSomeFieldsCheck(row,fieldName,$event,params){
|
||||
this.$notify.error("历史记录,不允许修改")
|
||||
this.searchTableDatas()
|
||||
return false;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.$mdp.getDictOptions('ktype').then(res=>{
|
||||
this.ktypeDict=res
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
Reference in New Issue
Block a user