mirror of
https://gitee.com/maimengcloud/xm-ui-web.git
synced 2025-12-30 10:12:26 +00:00
优化指标导入
This commit is contained in:
@@ -36,7 +36,7 @@ export const addXmKpi = params => { return axios.post(`${base}/xm/core/xmKpi/add
|
||||
//批量修改某些字段
|
||||
export const editSomeFieldsXmKpi = params => { return axios.post(`${base}/xm/core/xmKpi/editSomeFields`, params); };
|
||||
|
||||
|
||||
export const batchImportKpiFromDict = params => { return axios.post(`${base}/xm/core/xmKpi/batchImportKpiFromDict`, params); };
|
||||
export const batchImportKpiFromTemplate = params => { return axios.post(`${base}/xm/core/xmKpi/batchImportKpiFromTemplate`, params); };
|
||||
export const batchChangeParentKpi = params => { return axios.post(`${base}/xm/core/xmKpi/batchChangeParentKpi`, params); };
|
||||
export const calcProgress = params => { return axios.post(`${base}/xm/core/xmKpi/calcProgress`, params); };
|
||||
|
||||
@@ -1,166 +1,175 @@
|
||||
<template>
|
||||
<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('addBtn') || !checkBtnQx('addBtn',menuDefId) " type="primary" @click="showAdd()" icon="plus" plain />
|
||||
<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>
|
||||
</el-space>
|
||||
<mdp-lr-box :lspan="6" :expand="false">
|
||||
<template #left>
|
||||
<xm-kpi-tree :sel-project="projectInfo"/>
|
||||
</template>
|
||||
<el-space wrap>
|
||||
<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"/>
|
||||
<xm-user-select v-model="filters.kselfUserid" placeholder="负责人" :sel-project="project"/>
|
||||
<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('addBtn') || !checkBtnQx('addBtn',menuDefId) " type="primary" @click="showAdd()" icon="plus" plain />
|
||||
<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"/>
|
||||
<xm-user-select v-model="filters.kselfUserid" placeholder="负责人" :sel-project="project"/>
|
||||
|
||||
<mdp-select itemCode="calcType" v-model="filters.calcType" placeholder="考核方式"/>
|
||||
<mdp-select itemCode="kstatus" v-model="filters.kstatus" placeholder="状态"/>
|
||||
<mdp-select itemCode="kclass" v-model="filters.kclass" placeholder="分类"/>
|
||||
<el-input v-model="filters.kpiIndex" placeholder="指标编号" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
<el-input v-model="filters.kpiIndex" placeholder="指标名称" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
</el-space>
|
||||
</template>
|
||||
<el-space wrap>
|
||||
|
||||
<el-button v-loading="load.list" :disabled="load.list==true" @click="searchTableDatas()" icon="search" type="primary" plain />
|
||||
</el-space>
|
||||
</ContentWrap>
|
||||
<!--列表 XmKpi 项目或任务关键指标考核-->
|
||||
<el-table ref="table" v-adaptive :data="tableDatas" @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 sortable prop="name" 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">
|
||||
{{ (scope.$index + 1) }} {{ scope.row.name }}
|
||||
</el-link>
|
||||
<mdp-select itemCode="calcType" v-model="filters.calcType" placeholder="考核方式"/>
|
||||
<mdp-select itemCode="kstatus" v-model="filters.kstatus" placeholder="状态"/>
|
||||
<mdp-select itemCode="kclass" v-model="filters.kclass" placeholder="分类"/>
|
||||
<el-input v-model="filters.kpiIndex" placeholder="指标编号" clearable title="支持>、<、 >=、<=、!=、*字符*、$IS NULL、$IN 1,2,3、$between 1,5等操作符"/>
|
||||
<el-input 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>
|
||||
<!--列表 XmKpi 项目或任务关键指标考核-->
|
||||
<el-table ref="table" v-adaptive :data="tableDatas" @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 sortable prop="name" 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">
|
||||
{{ (scope.$index + 1) }} {{ scope.row.name }}
|
||||
</el-link>
|
||||
</template>
|
||||
<template #default>
|
||||
<el-button v-if="currOpType=='mng'" @click="copy2(scope.row, scope.$index)" icon="document-copy" type="warning"
|
||||
title="复制一行除了主键不一样,其它都一样的数据">复制</el-button>
|
||||
<el-button v-if="currOpType=='mng'" @click="showEdit(scope.row)" icon="edit" type="primary">编辑</el-button>
|
||||
</template>
|
||||
</el-popover>
|
||||
</template>
|
||||
<template #default>
|
||||
<el-button v-if="currOpType=='mng'" @click="copy2(scope.row, scope.$index)" icon="document-copy" type="warning"
|
||||
title="复制一行除了主键不一样,其它都一样的数据">复制</el-button>
|
||||
<el-button v-if="currOpType=='mng'" @click="showEdit(scope.row)" icon="edit" type="primary">编辑</el-button>
|
||||
</el-table-column>
|
||||
<!-- 可编辑字段格式
|
||||
<el-table-column prop="objType" label="对象类型" min-width="120" show-overflow-tooltip 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-popover>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 可编辑字段格式
|
||||
<el-table-column prop="objType" label="对象类型" min-width="120" show-overflow-tooltip 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="projectId" label="项目编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('projectId') && !projectInfo?.id" sortable/>
|
||||
<el-table-column prop="kpiIndex" label="排序号" min-width="120" show-overflow-tooltip 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="kpiName" label="指标名称" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kpiName')" 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="kclass" label="指标分类" min-width="120" show-overflow-tooltip 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" label="目标值" min-width="120" show-overflow-tooltip 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="weight" label="权重" min-width="120" show-overflow-tooltip 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="dataLink" label="数据来源" min-width="120" show-overflow-tooltip 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>
|
||||
-->
|
||||
<el-table-column prop="projectId" label="项目编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('projectId') && !projectInfo?.id" sortable/>
|
||||
<el-table-column prop="kpiIndex" label="排序号" min-width="120" show-overflow-tooltip 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="kpiName" label="指标名称" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kpiName')" 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="kclass" label="指标分类" min-width="120" show-overflow-tooltip 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" label="目标值" min-width="120" show-overflow-tooltip 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="weight" label="权重" min-width="120" show-overflow-tooltip 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="dataLink" label="数据来源" min-width="120" show-overflow-tooltip 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="kselfUsername" label="负责人" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kselfUsername')" sortable>
|
||||
<xm-select-user showStyle="tag" v-model="scope.row.kselfUserid" :init-name="scope.row.kseflUsername" @change="editSomeFields(scope.row,'kselfUserid',$event)"/>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kpiValue" label="当前值" min-width="120" show-overflow-tooltip 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="score" label="得分" min-width="120" show-overflow-tooltip col-type="Integer" v-if="showCol('score')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input-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="kstatus" label="状态" min-width="120" show-overflow-tooltip col-type="String" itemCode="kstatus" v-if="showCol('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="nextCalcDate" label="考核时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('nextCalcDate')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-date show-style="tag" v-model="scope.row.nextCalcDate" :maxlength="50" @change="editSomeFields(scope.row,'nextCalcDate',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="calcType" label="考核方式" min-width="120" show-overflow-tooltip 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="scoreDate" label="评分日期" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('scoreDate')" sortable/>
|
||||
|
||||
<el-table-column prop="kresult" label="成果" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kresult')" 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" label="自评时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('kselfTime')" sortable/>
|
||||
<el-table-column prop="kadmTime" label="审核时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('kadmTime')" sortable/>
|
||||
|
||||
<el-table-column prop="bizFlowState" label="流程状态" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('bizFlowState')" sortable/>
|
||||
<el-table-column prop="bizProcInstId" label="流程编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('bizProcInstId')" sortable/>
|
||||
<el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('remark')" sortable/>
|
||||
<el-table-column prop="ktype" label="指标等级" min-width="120" show-overflow-tooltip col-type="String" itemCode="ktype" v-if="showCol('ktype')" sortable>
|
||||
<mdp-select itemCode="ktype" show-style="tag" v-model="scope.row.ktype" :maxlength="50" @change="editSomeFields(scope.row,'ktype',$event)" :disabled="!someOpen||disField"/>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column prop="taskId" label="任务编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('taskId')" sortable/>
|
||||
|
||||
<el-table-column prop="kselfUsername" label="负责人" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kselfUsername')" sortable>
|
||||
<xm-select-user showStyle="tag" v-model="scope.row.kselfUserid" :init-name="scope.row.kseflUsername" @change="editSomeFields(scope.row,'kselfUserid',$event)"/>
|
||||
</el-table-column>
|
||||
<el-table-column prop="kpiValue" label="当前值" min-width="120" show-overflow-tooltip 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="score" label="得分" min-width="120" show-overflow-tooltip col-type="Integer" v-if="showCol('score')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-input-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="kstatus" label="状态" min-width="120" show-overflow-tooltip col-type="String" itemCode="kstatus" v-if="showCol('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="kadmUserid" label="审核人编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kadmUserid')" sortable/>
|
||||
<el-table-column prop="kadmUsername" label="审核人名称" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kadmUsername')" sortable/>
|
||||
<el-table-column prop="kselfUserid" label="负责人编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kselfUserid')" sortable/>
|
||||
|
||||
<el-table-column prop="id" label="主键" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('id')" sortable/>
|
||||
<el-table-column prop="branchId" label="机构编码" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('branchId')" sortable/>
|
||||
|
||||
<el-table-column prop="nextCalcDate" label="考核时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('nextCalcDate')" sortable>
|
||||
<template #default="scope">
|
||||
<mdp-date show-style="tag" v-model="scope.row.nextCalcDate" :maxlength="50" @change="editSomeFields(scope.row,'nextCalcDate',$event)" :disabled="!someOpen||disField"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="calcType" label="考核方式" min-width="120" show-overflow-tooltip 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="scoreDate" label="评分日期" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('scoreDate')" sortable/>
|
||||
|
||||
<el-table-column prop="kresult" label="成果" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kresult')" 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" label="自评时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('kselfTime')" sortable/>
|
||||
<el-table-column prop="kadmTime" label="审核时间" min-width="120" show-overflow-tooltip col-type="Date" v-if="showCol('kadmTime')" sortable/>
|
||||
|
||||
<el-table-column prop="bizFlowState" label="流程状态" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('bizFlowState')" sortable/>
|
||||
<el-table-column prop="bizProcInstId" label="流程编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('bizProcInstId')" sortable/>
|
||||
<el-table-column prop="remark" label="备注" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('remark')" sortable/>
|
||||
<el-table-column prop="ktype" label="指标等级" min-width="120" show-overflow-tooltip col-type="String" itemCode="ktype" v-if="showCol('ktype')" sortable>
|
||||
<mdp-select itemCode="ktype" show-style="tag" v-model="scope.row.ktype" :maxlength="50" @change="editSomeFields(scope.row,'ktype',$event)" :disabled="!someOpen||disField"/>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column prop="taskId" label="任务编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('taskId')" sortable/>
|
||||
|
||||
<el-table-column prop="kadmUserid" label="审核人编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kadmUserid')" sortable/>
|
||||
<el-table-column prop="kadmUsername" label="审核人名称" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kadmUsername')" sortable/>
|
||||
<el-table-column prop="kselfUserid" label="负责人编号" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('kselfUserid')" sortable/>
|
||||
|
||||
<el-table-column prop="id" label="主键" min-width="120" show-overflow-tooltip col-type="String" v-if="showCol('id')" sortable/>
|
||||
<el-table-column prop="branchId" label="机构编码" min-width="120" show-overflow-tooltip 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;"
|
||||
/>
|
||||
<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" width="80%">
|
||||
<template v-slot="{visible,data}">
|
||||
@@ -204,7 +213,7 @@ export default {
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore,['userInfo']),
|
||||
...mapState(useUserStore,['projectInfo','xmCollect'])
|
||||
...mapState(useXmStore,['projectInfo','xmCollect'])
|
||||
},
|
||||
props:{
|
||||
// 是否开启editSomeField模式
|
||||
|
||||
200
src/views/xm/pro/kpi/XmKpiByDict.vue
Normal file
200
src/views/xm/pro/kpi/XmKpiByDict.vue
Normal file
@@ -0,0 +1,200 @@
|
||||
<template>
|
||||
<mdp-dialog append-to-body width="60%" top="20px" ref="parentDialog">
|
||||
<template #default>
|
||||
<XmKpiTree showConfirm subOpType="select"
|
||||
:sel-project="selProject"
|
||||
@confirm="(kpi)=>onParentKpiSelected(kpi)"
|
||||
/>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
<mdp-dialog width="80%" ref="tplKpiDialog" title="选中需要导入的指标">
|
||||
<template #default>
|
||||
<el-form label-position="left">
|
||||
<mdp-lr-box :lspan="12" :gutter="20">
|
||||
<template #left>
|
||||
<el-form-item label="指标选择">
|
||||
<mdp-select itemCode="xm_kpi_tpl" multiple v-model="xmKpiTplDict" width="100%" @change2="(l)=>onXmKpiTplSelect(l)"/>
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="指标预览">
|
||||
<div>
|
||||
<el-steps v-if="xmKpiList && xmKpiList.length>0"
|
||||
direction="vertical" space="60px"
|
||||
>
|
||||
<el-step style="cursor:pointer;" @click="onStepClick(item)" :title="item.kpiName" :status="'wait'" v-for="(item,index) in xmKpiList" :key="index">
|
||||
<template #icon>
|
||||
<icon :icon="item.icon"/>
|
||||
</template>
|
||||
<template #description>
|
||||
<div>
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="6">
|
||||
指标分类:<mdp-select showStyle="tag" itemCode="kclass" v-model="item.kclass" width="100%"/>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
目标值:<el-text size="small">{{ item.targetValue }}</el-text>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
权重:<el-text size="small">{{ item.weight }}</el-text>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
数据来源: <mdp-select showStyle="tag" itemCode="data_link" multiple v-model="item.dataLink" width="100%"/>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
</el-step>
|
||||
|
||||
</el-steps>
|
||||
|
||||
|
||||
</div>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<div class="padding-left">
|
||||
|
||||
<el-form-item label="目标位置">
|
||||
<el-radio v-model="tpl.targetType" label="deptTop" v-if="!selProject?.id">部门顶级位置</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="projectTop">项目顶级位置</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="sub">某个指标之下</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="目标上级" v-if="tpl.targetType=='sub'">
|
||||
{{tpl.parentName}} <el-button @click="$refs['parentDialog'].open()">选择上级</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="目标部门" v-if="tpl.targetType=='deptTop'">
|
||||
<mdp-select-dept v-model="tpl.deptid"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="目标项目" v-if="tpl.targetType=='projectTop'">
|
||||
<xm-project-select v-model="tpl.projectId" v-if="!selProject?.id"/>
|
||||
{{ selProject.name }}
|
||||
</el-form-item>
|
||||
</div>
|
||||
</mdp-lr-box>
|
||||
|
||||
</el-form>
|
||||
<div class="footer"><el-button type="primary" @click="doInitXmKpi" :disabled="load.init">提交</el-button></div>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import util from '@/components/mdp-ui/js/util' //全局公共库
|
||||
|
||||
import {
|
||||
batchImportKpiFromDict
|
||||
} from '@/api/xm/pro/xmKpi'
|
||||
|
||||
//新增界面
|
||||
|
||||
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
|
||||
export default {
|
||||
props: ['selProject'],
|
||||
|
||||
emits:['init'],
|
||||
computed: {
|
||||
...mapState(useUserStore, ['userInfo', 'roles']),
|
||||
|
||||
},
|
||||
watch: {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
load:{init:false},
|
||||
project:{},
|
||||
xmKpiList:[],
|
||||
xmKpiTplDict:[],
|
||||
tpl:{
|
||||
xmKpis:[], //待导入的指标
|
||||
sourceDeptid:'',//源头部门
|
||||
sourceProjectId:'',//源头项目
|
||||
sourceType:'some',// projectAll-项目下全部指标,deptAll-部门下全部指标,some-选中的
|
||||
targetType:'projectTop' , // 目标位置 deptTop-部门顶级 projectTop-项目顶级,sub-作为某个指标的子集
|
||||
parentId:'' , // 新的上级编号,顶级为0
|
||||
projectId:'',//目标项目编号
|
||||
deptid:'',//目标部门编号
|
||||
}
|
||||
}
|
||||
}, //end data
|
||||
methods: {
|
||||
onParentKpiSelected(kpi){
|
||||
if(kpi?.id){
|
||||
this.tpl.parentId=kpi.id
|
||||
this.tpl.parentName=kpi.name
|
||||
this.$refs['parentDialog'].close();
|
||||
}
|
||||
|
||||
},
|
||||
open(){
|
||||
this.$refs['tplKpiDialog'].open();
|
||||
},
|
||||
onXmKpiTplSelect(xmKpiTplDict){
|
||||
this.xmKpiList=xmKpiTplDict.map(d=>{
|
||||
return {
|
||||
id:d.id,
|
||||
kpiName:d.name,
|
||||
kpiIndex:d.id,
|
||||
targetValue:d.extInfo.targetValue,
|
||||
remark:d.extInfo.remark,
|
||||
kclass:d.extInfo.kclass,
|
||||
kresult:d.extInfo.kresult,
|
||||
ktype:d.extInfo.ktype,
|
||||
dataLink:d.extInfo.dataLink,
|
||||
parentId:d.extInfo.parentId,
|
||||
rateType:d.extInfo.rateType,
|
||||
calcType:d.extInfo.calcType,
|
||||
weight:d.extInfo.weight,
|
||||
deptid:this.userInfo.deptid,
|
||||
branchId:this.userInfo.branchId,
|
||||
kselfUserid:this.userInfo.userid,
|
||||
kselfUsername:this.userInfo.username,
|
||||
projectId:this.project?.id?this.project.id:''
|
||||
}
|
||||
})
|
||||
},
|
||||
doInitXmKpi(){
|
||||
this.load.init=true
|
||||
let params={...this.tpl}
|
||||
params.xmKpis=this.xmKpiList
|
||||
batchImportKpiFromDict(params).then(res=>{
|
||||
var tips = res.tips
|
||||
this.load.init=false
|
||||
if(tips.isOk){
|
||||
this.$notify.success("添加成功")
|
||||
this.$emit('init')
|
||||
}else{
|
||||
this.$notify.error(tips.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
onStepClick(item){
|
||||
this.currXmKpi=item
|
||||
this.$refs['currXmKpiCfgDialog'].open({currXmKpi:item,title:'设置'+item.kpiName})
|
||||
},
|
||||
userSelect(phase,user){
|
||||
if(user && user.userid){
|
||||
phase.createUserid=user.userid
|
||||
phase.createUsername=user.username
|
||||
}else{
|
||||
phase.createUserid=''
|
||||
phase.createUsername=''
|
||||
}
|
||||
}
|
||||
}, //end methods
|
||||
components: {
|
||||
},
|
||||
mounted() {
|
||||
this.project=this.selProject
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" />
|
||||
@@ -2,39 +2,46 @@
|
||||
|
||||
<mdp-dialog append-to-body width="60%" top="20px" ref="parentDialog">
|
||||
<template #default>
|
||||
<XmPhase showConfirm subOpType="select"
|
||||
<XmKpiTree showConfirm subOpType="select"
|
||||
:sel-project="selProject"
|
||||
@confirm="(task)=>onParentTaskSelected(task)"
|
||||
@confirm="(kpi)=>onParentKpiSelected(kpi)"
|
||||
/>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
|
||||
<mdp-dialog width="80%" ref="tplPhaseDialog" title="选中需要导入的计划【如果不选具体的计划,则全量导入】">
|
||||
<mdp-dialog width="80%" ref="tplKpiDialog" title="选中需要导入的指标【如果不选具体的指标,则全量导入】">
|
||||
<template #default>
|
||||
<mdp-lr-box :lspan="12" lborder rborder>
|
||||
<template #left>
|
||||
<XmPhase ref="sourcePhaseRef" subOpType="select" multiple :isTpl="true"
|
||||
<XmKpiTree ref="sourceKpiRef" subOpType="select" multiple :isTpl="true"
|
||||
/>
|
||||
</template>
|
||||
<el-form label-width="120px" label-position="left" class="padding-left">
|
||||
<el-form-item label="源头数据">
|
||||
<el-radio v-model="tpl.sourceType" label="all">项目下所有工作项</el-radio>
|
||||
<el-radio v-model="tpl.sourceType" label="some">手工选中的工作项</el-radio>
|
||||
<!-- <el-radio v-model="tpl.sourceType" label="deptAll">部门下所有指标</el-radio> -->
|
||||
<el-radio v-model="tpl.sourceType" label="projectAll">项目下所有指标</el-radio>
|
||||
<el-radio v-model="tpl.sourceType" label="some">手工选中的指标</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="目标位置">
|
||||
<el-radio v-model="tpl.targetType" label="top">当前项目顶级位置</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="sub">某个阶段/规划之下</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="deptTop" v-if="!selProject?.id">部门顶级位置</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="projectTop">项目顶级位置</el-radio>
|
||||
<el-radio v-model="tpl.targetType" label="sub">某个指标之下</el-radio>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="新的上级" v-if="tpl.targetType=='sub'">
|
||||
{{tpl.parentTaskid}} <el-button @click="$refs['parentDialog'].open()">选择新的上级</el-button>
|
||||
<el-form-item label="目标上级" v-if="tpl.targetType=='sub'">
|
||||
{{tpl.parentId}} <el-button @click="$refs['parentDialog'].open()">选择上级</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="目标部门" v-if="tpl.targetType=='deptTop'">
|
||||
<mdp-select-dept v-model="tpl.deptid"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="目标项目" v-if="tpl.targetType=='projectTop'">
|
||||
<xm-project-select v-model="tpl.projectId" v-if="!selProject?.id"/>
|
||||
{{ selProject.name }}
|
||||
</el-form-item>
|
||||
<el-form-item label="数据处理">
|
||||
所有日期数据向后延申 <el-input-number v-model="tpl.days"/> 天
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="footer">
|
||||
<el-button type="primary" @click="importFromTaskTpl()" :disabled="load.import">提交</el-button>
|
||||
<el-button type="primary" @click="importFromKpiTpl()" :disabled="load.import">提交</el-button>
|
||||
</div>
|
||||
</mdp-lr-box>
|
||||
|
||||
@@ -73,54 +80,68 @@ export default {
|
||||
load:{import:false},
|
||||
|
||||
tpl:{
|
||||
xmKpis:[], //待导入的指标
|
||||
sourceDeptid:'',//源头部门
|
||||
sourceProjectId:'',//源头项目
|
||||
sourceType:'some',// all-全部,some-选中的
|
||||
targetType:'top' , // 目标位置 top-顶级,sub-作为某个阶段、规划的子集
|
||||
parentTaskid:'' , // 新的上级编号,顶级为0
|
||||
days:0, // 新的日期向后延申天数
|
||||
sourceType:'some',// projectAll-项目下全部指标,deptAll-部门下全部指标,some-选中的
|
||||
targetType:'projectTop' , // 目标位置 deptTop-部门顶级 projectTop-项目顶级,sub-作为某个指标的子集
|
||||
parentId:'' , // 新的上级编号,顶级为0
|
||||
projectId:'',//目标项目编号
|
||||
deptid:'',//目标部门编号
|
||||
}
|
||||
}
|
||||
}, //end data
|
||||
methods: {
|
||||
open(){
|
||||
this.$refs['tplPhaseDialog'].open();
|
||||
this.$refs['tplKpiDialog'].open();
|
||||
},
|
||||
onParentTaskSelected(task){
|
||||
if(task?.id){
|
||||
if(task.ptype>2){
|
||||
this.$notify.warning('【'+task.name+'】属于任务,不允许有下级工作项,请选【阶段/规划】')
|
||||
return;
|
||||
}
|
||||
this.tpl.parentTaskid=task.id
|
||||
this.tpl.targetParentTaskName=task.name
|
||||
onParentKpiSelected(kpi){
|
||||
if(kpi?.id){
|
||||
this.tpl.parentId=kpi.id
|
||||
this.tpl.parentName=kpi.name
|
||||
this.$refs['parentDialog'].close();
|
||||
}
|
||||
|
||||
},
|
||||
importFromTaskTpl(){
|
||||
importFromKpiTpl(){
|
||||
|
||||
let tplTasks=this.$refs['sourcePhaseRef'].getCheckedNodes()
|
||||
let tplProject=this.$refs['sourcePhaseRef'].project
|
||||
if(!tplProject?.id){
|
||||
let tplKpis=this.$refs['sourceKpiRef'].getCheckedNodes()
|
||||
let tplProject=this.$refs['sourceKpiRef'].project
|
||||
let tplDept=this.$refs['sourceKpiRef'].dept
|
||||
if(tpl.sourceType=='projectAll' && !tplProject?.id){
|
||||
this.$notify.warning('请选择待导入的项目')
|
||||
return;
|
||||
}
|
||||
if(this.tpl.sourceType=='some' && tplTasks.length==0){
|
||||
this.$notify.warning('请选择至少一个待导入的工作项')
|
||||
if(tpl.sourceType=='deptAll' && !tplDept?.deptid){
|
||||
this.$notify.warning('请选择待导入的部门')
|
||||
return;
|
||||
}
|
||||
if(this.tpl.targetType=='sub' && !this.tpl.parentTaskid){
|
||||
this.$notify.warning('请选择目标位置')
|
||||
if(this.tpl.sourceType=='some' && tplKpis.length==0){
|
||||
this.$notify.warning('请选择至少一个待导入的指标')
|
||||
return;
|
||||
}
|
||||
if(this.tpl.targetType=='sub' && !this.tpl.parentId){
|
||||
this.$notify.warning('请选择一个指标作为新的上级')
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.tpl.targetType=='deptTop' && !this.tpl.deptid){
|
||||
this.$notify.warning('请选择目标部门')
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if(this.tpl.targetType=='projectTop' && !this.tpl.projectId){
|
||||
this.$notify.warning('请选择目标项目')
|
||||
return;
|
||||
}
|
||||
this.load.import=true;
|
||||
let params={...this.tpl,xmTasks:tplTasks,projectId:this.selProject.id,sourceProjectId:tplProject.id }
|
||||
batchImportTaskFromTemplate(params).then(res=>{
|
||||
let params={...this.tpl,xmKpis:tplKpis,projectId:this.selProject.id,sourceProjectId:tplProject?.id||'',sourceDeptid:tplDept?.deptid||'' }
|
||||
batchImportKpiFromTemplate(params).then(res=>{
|
||||
var tips = res.tips;
|
||||
this.load.import=false;
|
||||
if(tips.isOk){
|
||||
this.$refs['tplPhaseDialog'].close();
|
||||
this.$refs['tplKpiDialog'].close();
|
||||
this.$emit('importTpl',params)
|
||||
this.$notify.success('导入成功')
|
||||
}else{
|
||||
|
||||
@@ -22,8 +22,9 @@
|
||||
:draggable="true"
|
||||
:sortFun="sortFun"
|
||||
>
|
||||
<template #topToolbar>
|
||||
<xm-project-select width="250px" :isTpl="isTpl"
|
||||
<template #topToolbar>
|
||||
<mdp-select-dept :width="'120px'" v-model="filters.deptid" v-if="!selProject?.id"/>
|
||||
<xm-project-select :width="'120px'" :isTpl="isTpl"
|
||||
v-model="filters.projectId" :collect-id="xmCollect?.id"
|
||||
v-if="!selProject || !selProject.id"
|
||||
ref="xmProjectSelect1"
|
||||
@@ -56,6 +57,7 @@
|
||||
</template>
|
||||
<template #moreBtn>
|
||||
<el-button type="primary" @click="$refs['tplKpiDialog'].open()">从模板导入</el-button>
|
||||
<el-button type="warning" @click="$refs['dictKpiDialog'].open()">从指标库导入</el-button>
|
||||
</template>
|
||||
<template #nodeToolbar="{ data }">
|
||||
<el-button @click="calcProgress(data)" title="对当前节点及所有上级节点进行逐层进度统计" type="warning" plain>统计</el-button>
|
||||
@@ -93,6 +95,7 @@
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
<XmKpiByTpl :sel-project="project" ref="tplKpiDialog" @importTpl="onImportTpl" v-if="project?.id"/>
|
||||
<XmKpiByDict :sel-project="project" ref="dictKpiDialog" @importTpl="onImportTpl" v-if="project?.id"/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
Reference in New Issue
Block a user