mirror of
https://gitee.com/maimengcloud/xm-ui-web.git
synced 2025-12-30 10:12:26 +00:00
优化
This commit is contained in:
@@ -514,8 +514,8 @@ export default {
|
||||
},
|
||||
//由组件扩展添加其它的初始页面的逻辑(mounted+onOpen都会调用此函数,建议只添加公共逻辑)
|
||||
initCurrData() {
|
||||
this.parent = this.parentKpi
|
||||
this.taskBoxVisible = false
|
||||
this.currTabName='base'
|
||||
this.parent = this.parentKpi
|
||||
if (this.currOpType == 'add') {
|
||||
if (this.parent?.id) {
|
||||
this.editForm.parentId = this.parent.id
|
||||
|
||||
@@ -306,14 +306,7 @@
|
||||
:visible="visible" :parentOpType="currOpType" :subOpType="data.subOpType" :formData="data.formData"
|
||||
@close="onFormClose" @submit="afterFormSubmit" @edit-fields="afterEditFields" />
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
<mdp-dialog ref="viewDlg" :title="menuDefName" fullscreen>
|
||||
<template v-slot="{ visible, data }">
|
||||
<XmKpiView ref="XmKpiView" :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>
|
||||
</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]"
|
||||
@@ -333,8 +326,7 @@
|
||||
|
||||
import { MdpTableMixin } from '@/components/mdp-ui/mixin/MdpTableMixin.js';
|
||||
import * as XmKpiApi from '@/api/xm/pro/xmKpi.js';
|
||||
import XmKpiForm from './Form.vue';//新增修改明细界面
|
||||
import XmKpiView from './View.vue';//新增修改明细界面
|
||||
import XmKpiForm from './Form.vue';//新增修改明细界面
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { useXmStore } from '@/store/modules/xm'
|
||||
@@ -347,8 +339,7 @@ export default {
|
||||
components: {
|
||||
XmKpiForm,
|
||||
XmKpiByTpl,
|
||||
XmKpiByDict,
|
||||
XmKpiView,
|
||||
XmKpiByDict,
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore, ['userInfo']),
|
||||
@@ -424,10 +415,7 @@ export default {
|
||||
lspan: 24
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showEdit(row){
|
||||
this.$refs['viewDlg'].open({formData:row})
|
||||
},
|
||||
methods: {
|
||||
calcKwarnStatusId(row) {
|
||||
if (!row.targetValue) {
|
||||
return '0'
|
||||
|
||||
@@ -1,605 +0,0 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<template #header>
|
||||
<el-space :wrap="false">
|
||||
<el-avatar style="background-color:green;"><icon icon="ep:key"/></el-avatar>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-text type="info" size="small">{{ editForm.id }}</el-text>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-text size="large"> {{ editForm.kpiName }}</el-text>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-space>
|
||||
</template>
|
||||
<el-descriptions :column="3" size="small" border>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<user />
|
||||
</el-icon>
|
||||
负责人
|
||||
</div>
|
||||
</template>
|
||||
{{ editForm.kselfUsername || editForm.kselfUserid }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<iphone />
|
||||
</el-icon>
|
||||
预警状态
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="kwarnStatus" v-model="calcKwarnStatus" showStyle="tag"
|
||||
:disabled="true" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<location />
|
||||
</el-icon>
|
||||
指标等级
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="ktype" v-model="editForm.ktype" width="100%"
|
||||
@change="editSomeFields(editForm, 'ktype', $event)" :disabled="true" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<tickets />
|
||||
</el-icon>
|
||||
指标类型
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="kclass" v-model="editForm.kclass" showStyle="tag" :disabled="true" />
|
||||
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
指标状态
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="kstatus" v-model="editForm.kstatus" size="small" :disabled="true" />
|
||||
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
所属项目
|
||||
</div>
|
||||
</template>
|
||||
{{ editForm.projectId }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
|
||||
<el-tabs v-model="currTabName">
|
||||
<el-tab-pane label="基本情况" name="base">
|
||||
|
||||
|
||||
<el-form-item label="指标名称" prop="kpiName">
|
||||
<el-input v-model="editForm.kpiName" placeholder="指标名称" :maxlength="255"
|
||||
@change="editSomeFields(editForm, 'kpiName', $event)" :disabled="disField" />
|
||||
</el-form-item>
|
||||
<el-form-item label="目标设定" prop="targetValue">
|
||||
<el-input style="width:100%;" v-model="editForm.targetValue" placeholder="目标值" :maxlength="20"
|
||||
@change="editSomeFields(editForm, 'targetValue', $event)" :disabled="disField" />
|
||||
<el-text type="warning" size="small">
|
||||
支持<、>、&&、!=、||、()等操作符号,例子: ${kpiValue} <10 && ${kpiValue}>8
|
||||
</el-text>
|
||||
</el-form-item>
|
||||
<el-row :gutter="10">
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="职能分类" prop="kclass">
|
||||
<mdp-select width="100%" itemCode="kclass" v-model="editForm.kclass" :maxlength="50"
|
||||
@change="editSomeFields(editForm, 'kclass', $event)" :disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="指标权重" prop="weight" style="width:100%;">
|
||||
<el-input type="number" :controls="false" :min="0" max="100" v-model="editForm.weight"
|
||||
placeholder="权重0-100之间" :maxlength="20" @change="editSomeFields(editForm, 'weight', $event)"
|
||||
:disabled="disField">
|
||||
<template #suffix>%</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="数据来源" prop="kpiValue">
|
||||
<mdp-select width="100%" itemCode="dataLink" multiple split="," v-model="editForm.dataLink"
|
||||
:maxlength="50" @change="editSomeFields(editForm, 'dataLink', $event)"
|
||||
:disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="指标等级" prop="ktype">
|
||||
<mdp-select width="100%" itemCode="ktype" v-model="editForm.ktype" :maxlength="50"
|
||||
@change="editSomeFields(editForm, 'ktype', $event)" :disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="指标状态" prop="kstatus">
|
||||
<mdp-select width="100%" itemCode="kstatus" v-model="editForm.kstatus" :maxlength="50"
|
||||
@change="editSomeFields(editForm, 'kstatus', $event)" :disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上级指标" prop="parentId" style="width:100%;">
|
||||
<el-input v-model="editForm.parentId" @change="editSomeFields(editForm, 'parentId', $event)"
|
||||
:disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="排序序号" prop="kpiIndex" style="width:100%;">
|
||||
<el-input v-model="editForm.kpiIndex" @change="editSomeFields(editForm, 'kpiIndex', $event)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="remark" label="详细说明">
|
||||
<el-input type="textarea" rows="6" v-model="editForm.remark" placeholder="详细说明" :maxlength="255" @change="editSomeFields(editForm,'remark',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="责任部门、负责人" name="kself">
|
||||
<el-card id="kselfUserid">
|
||||
<template #header>
|
||||
责任部门、负责人
|
||||
</template>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="负责人" prop="kselfUserid" style="width:100%;">
|
||||
<xm-user-select width="100%" v-model="editForm.kselfUserid"
|
||||
@change="editSomeFields(editForm, 'kselfUserid', $event)" :displayLoad="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="主责部门" prop="deptid" style="width:100%;">
|
||||
<mdp-select-dept width="100%" v-model="editForm.deptid"
|
||||
@change="editSomeFields(editForm, 'deptid', $event)" :displayLoad="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="关联项目" prop="projectId" style="width:100%;">
|
||||
<xm-project-select width="100%" v-model="editForm.projectId" :collectId="xmCollect?.id"
|
||||
:displayLoad="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="考核周期" name="calcType">
|
||||
<el-card id="calcType">
|
||||
<template #header>
|
||||
考核周期
|
||||
</template>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="考核周期" prop="calcType">
|
||||
<mdp-select width="100%" itemCode="calcType" v-model="editForm.calcType" :maxlength="50"
|
||||
@change="editSomeFields(editForm, 'calcType', $event)" :disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="开始时间" prop="startTime" style="width:100%;">
|
||||
<mdp-date width="100%" v-model="editForm.startTime"
|
||||
@change="editSomeFields(editForm, 'startTime', $event)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="结束时间" prop="endTime" style="width:100%;">
|
||||
<mdp-date width="100%" v-model="editForm.endTime"
|
||||
@change="editSomeFields(editForm, 'endTime', $event)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="预警规则" name="warnRule">
|
||||
<el-card id="warnRule">
|
||||
<template #header>
|
||||
预警规则 <el-text type="info" size="small">预警状态:</el-text><mdp-select showStyle="tag"
|
||||
itemCode="kwarnStatus" v-model="calcKwarnStatus" :disabled="true" />
|
||||
<el-text type="info" size="small">目标规则:</el-text> <el-text type="primary"
|
||||
size="small">{{ editForm.targetValue }}</el-text>
|
||||
<el-text type="warning" size="small">
|
||||
支持<、>、&&、!=、||、()等操作符号,例子: ${kpiValue} <10 && ${kpiValue}>8
|
||||
</el-text>
|
||||
</template>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="黄色预警" prop="yellowRule">
|
||||
<el-input width="100%" itemCode="yellowRule" v-model="editForm.yellowRule" :maxlength="50"
|
||||
@change="editSomeFields(editForm, 'yellowRule', $event)"
|
||||
:disabled="!someOpen || disField" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="橙色预警" prop="orangeRule" style="width:100%;">
|
||||
<el-input width="100%" v-model="editForm.orangeRule"
|
||||
@change="editSomeFields(editForm, 'orangeRule', $event)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="红色预警" prop="redRule" style="width:100%;">
|
||||
<el-input width="100%" v-model="editForm.redRule"
|
||||
@change="editSomeFields(editForm, 'redRule', $event)" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="成果" name="kresult">
|
||||
<el-form-item prop="kresult" label-width="0px">
|
||||
<el-input type="textarea" rows="6" v-model="editForm.kresult" placeholder="成果说明、附件地址等" :maxlength="255"
|
||||
@change="editSomeFields(editForm, 'kresult', $event)" :disabled="disField" />
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="考核自评" name="kselfScore" v-if="currOpType!='add'">
|
||||
<el-card id="kselfScore">
|
||||
<template #header>
|
||||
考核自评
|
||||
<el-text type="info" size="small">计算规则:{{editForm.targetValue}}</el-text>
|
||||
<icon icon="fa-solid:angle-double-right" />
|
||||
<el-text type="info" size="small">目标值:{{targetValueCpd}}</el-text>
|
||||
<icon icon="fa-solid:angle-double-right" />
|
||||
<el-text type="info" size="small">计算结果:</el-text><el-tag type="success"
|
||||
v-if="calcStatus">已达成</el-tag> <el-tag v-if="!calcStatus" type="error">未达成</el-tag>
|
||||
<el-text type="info"
|
||||
size="small"> 得分:{{ editForm.score || 0 }}</el-text> <el-button size="small"
|
||||
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="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="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="editForm.kadmStatus == '3'" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<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-tab-pane>
|
||||
<el-tab-pane label="考核复评" name="score" v-if="currOpType!='add'">
|
||||
<el-card 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-tab-pane>
|
||||
|
||||
<el-tab-pane label="复评记录" name="his" v-if="currOpType!='add' && !his">
|
||||
<xm-kpi-his v-if="currTabName=='his'" :key="editForm.id" :kpi-id="editForm.id" :sel-project="editForm.projectId?{id:editForm.projectId}:null" ref="kpiHis"/>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane label="关联计划任务" name="taskBox" v-if="currOpType!='add'">
|
||||
|
||||
<el-card id="taskBox">
|
||||
<template #header>
|
||||
关联计划任务 <el-button @click="$refs['phaseDialog'].open()" type="primary" plain icon="Link" v-if="!his">选择任务关联kpi</el-button>
|
||||
</template>
|
||||
<xm-task-box v-if="currTabName=='taskBox'" :key="editForm.id" :kpi-id="editForm.id" :sel-project="editForm.projectId?{id:editForm.projectId}:null" ref="taskBox"/>
|
||||
</el-card>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="沟通" name="comment" v-if="currOpType!='add'">
|
||||
<xm-comment-area v-if="currTabName=='comment'" :biz-id="editForm.id" :pbiz-id="editForm.projectId" obj-type="R" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="动态" name="dyn" v-if="currOpType!='add'">
|
||||
<xm-dynamics v-if="currTabName=='dyn'" :hideToolbar="true" :biz-id="editForm.id" :pbizId="editForm.projectId"
|
||||
:projectId="editForm.projectId" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="资料" name="att" v-if="currOpType!='add'">
|
||||
<mdp-select-att v-if="currTabName=='att'" subOpType='mng' :crely-type="xm - project" :crely-id="editForm.projectId" :biz-id="editForm.id" />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<mdp-dialog title="选择更多计划任务关联kpi" ref="phaseDialog">
|
||||
<xm-phase multiple showConfirm :sel-project="editForm.projectId?{id:editForm.projectId}:null" @confirm="onTaskSelect"/>
|
||||
</mdp-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
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'
|
||||
|
||||
export default {
|
||||
components: { },
|
||||
name: 'XmKpiView',
|
||||
mixins: [MdpFormMixin],
|
||||
computed: {
|
||||
...mapState(useUserStore, ['userInfo']),
|
||||
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.parseRule(this.editForm.targetValue, this.editForm.kpiValue);
|
||||
try {
|
||||
let result = eval(rule)
|
||||
return result;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
calcKwarnStatus() {
|
||||
return this.calcKwarnStatusId(this.editForm)
|
||||
}
|
||||
},
|
||||
props: {
|
||||
// 是否开启editSomeField模式
|
||||
someOpen: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
|
||||
his: {//是否为历史模式
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
menuDefId: '',//menu_def.id 菜单表菜单编号,用于按钮权限判断
|
||||
pkNames: ["id"],//表格主键的java属性名称,驼峰命名,默认为id,支持多主键
|
||||
currOpType: 'edit',//表单 add、edit,所有按钮可动、detail-只看不能操作
|
||||
editFormRules: {
|
||||
kpiName: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
deptid: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
parentId: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
kselfUserid: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
targetValue: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
kclass: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
ktype: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
weight: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
kstatus: [{ required: true, message: '此项必填', trigger: 'change' }],
|
||||
},
|
||||
editForm: {
|
||||
projectId: '', branchId: '', kpiIndex: '', kpiName: '', maxValue: '', minValue: '', id: '', score: '', scoreDate: '', bizFlowState: '', bizProcInstId: '', kpiValue: '', remark: '', calcType: '', nextCalcDate: '', ktype: '', kresult: '', taskId: '', kstatus: '', kfile: '', kclass: '', kadmUserid: '', kadmUsername: '', kselfUserid: '', kselfUsername: '', kselfTime: '', kadmTime: ''
|
||||
},
|
||||
//增删改查(含批量)接口
|
||||
apis: {
|
||||
queryById: XmKpiApi.queryXmKpiById,
|
||||
add: XmKpiApi.addXmKpi,
|
||||
edit: XmKpiApi.editXmKpi,
|
||||
editSomeFields: XmKpiApi.editSomeFieldsXmKpi
|
||||
},
|
||||
currTabName:'base',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
calcKwarnStatusId(row) {
|
||||
if (!row.targetValue) {
|
||||
return '0'
|
||||
}
|
||||
if (!row.kpiValue) {
|
||||
return '0'
|
||||
} else {
|
||||
let isRed = false;
|
||||
let isOrange = false;
|
||||
let isYellow = false;
|
||||
try {
|
||||
let rule = this.parseRule(row.targetValue, row.kpiValue)
|
||||
let result = eval(rule)
|
||||
if (result) {
|
||||
return "1"
|
||||
} else {
|
||||
|
||||
if (row.redRule) {
|
||||
let redRule = this.parseRule(row.redRule, row.kpiValue);
|
||||
isRed = eval(redRule)
|
||||
if (isRed) {
|
||||
return "4"
|
||||
}
|
||||
}
|
||||
if (row.orangeRule) {
|
||||
let orangeRule = this.parseRule(row.orangeRule, row.kpiValue);
|
||||
isOrange = eval(orangeRule)
|
||||
if (isOrange) {
|
||||
return "3"
|
||||
}
|
||||
}
|
||||
if (row.yellowRule) {
|
||||
let yellowRule = this.parseRule(row.yellowRule, row.kpiValue);
|
||||
isYellow = eval(yellowRule)
|
||||
if (isYellow) {
|
||||
return "2"
|
||||
}
|
||||
}
|
||||
return "1"
|
||||
}
|
||||
} catch (e) {
|
||||
return "0";
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
parseRule(rule, kpiValue) {
|
||||
debugger
|
||||
if (!rule) {
|
||||
return rule;
|
||||
}
|
||||
let rule2 = rule.replace(/\$\{kpiValue\}/g, kpiValue)
|
||||
let rule3 = rule2.replace(/%/g, '/100')
|
||||
return rule3;
|
||||
},
|
||||
//由组件扩展添加其它的初始页面的逻辑(mounted+onOpen都会调用此函数,建议只添加公共逻辑)
|
||||
initCurrData() {
|
||||
this.parent = this.parentKpi
|
||||
this.taskBoxVisible = false
|
||||
if (this.currOpType == 'add') {
|
||||
if (this.parent?.id) {
|
||||
this.editForm.parentId = this.parent.id
|
||||
if (this.parent.childrenCnt) {
|
||||
let seq = (this.parent.childrenCnt + 1)
|
||||
if (seq < 10) {
|
||||
seq = '0' + seq;
|
||||
}
|
||||
this.editForm.kpiIndex = (this.parent.kpiIndex || '') + "." + seq
|
||||
} else {
|
||||
this.editForm.kpiIndex = (this.parent.kpiIndex || '') + ".0" + 1
|
||||
}
|
||||
let ktype = parseInt(this.parent.ktype) + 1
|
||||
if (ktype > 3) {
|
||||
this.editForm.ktype = '3'
|
||||
} else {
|
||||
this.editForm.ktype = ktype + ''
|
||||
}
|
||||
this.editForm.projectId = this.parent.projectId
|
||||
this.editForm.kclass = this.parent.kclass
|
||||
} else {
|
||||
this.editForm.parentId = '0'
|
||||
this.editForm.ktype = '1'
|
||||
this.editForm.kpiIndex = "01"
|
||||
this.editForm.kclass = '1'
|
||||
}
|
||||
|
||||
this.editForm.calcType = "Q"
|
||||
this.editForm.kselfUserid = this.userInfo.userid
|
||||
this.editForm.kselfUsername = this.userInfo.username
|
||||
this.editForm.kstatus = '0'
|
||||
this.editForm.deptid = this.userInfo.deptid
|
||||
this.editForm.branchId = this.userInfo.branchId
|
||||
this.editForm.weight = 30
|
||||
if (!this.editForm.kclass) {
|
||||
this.editForm.kclass = '1'
|
||||
}
|
||||
if (this.xmProject?.id) {
|
||||
this.editForm.projectId = this.xmProject.id
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
/**
|
||||
* 检查参数是否满足调用后台接口的条件
|
||||
* @returns true / false
|
||||
*/
|
||||
preParamCheck(params) {
|
||||
if (this.parent?.id) {
|
||||
params.parentId = this.parent.id
|
||||
}
|
||||
return true;
|
||||
},
|
||||
/**
|
||||
* 对修改的字段进行判断,返回false ,将取消更新数据库,由组件扩展
|
||||
* @param {*} row 当前选中的行
|
||||
* @param {*} fieldName 修改的字段名
|
||||
* @param {*} $event 修改后的值
|
||||
* @param {*} params 将要提交服务器的参数
|
||||
* @returns true/false 返回false ,将取消更新数据库
|
||||
*/
|
||||
editSomeFieldsCheck(row, fieldName, $event, params) {
|
||||
if (['kpiValue', 'yellowRule', 'orangeRule', 'redRule'].some(k => k == fieldName)) {
|
||||
params.kwarnStatus = this.calcKwarnStatus
|
||||
}
|
||||
params[fieldName] = $event
|
||||
return true;
|
||||
},
|
||||
onTaskSelect(tasks) {
|
||||
editXmTaskSomeFields({ '$pks': tasks.map(k => k.id), kpiId: this.editForm.id }).then(res => {
|
||||
if (res.tips.isOk) {
|
||||
this.$refs['phaseDialog'].close();
|
||||
this.$refs['taskBox'].searchTableDatas()
|
||||
this.$notify.success("更新成功")
|
||||
} else {
|
||||
this.$notify.error(res.tips.msg)
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@@ -1,88 +1,204 @@
|
||||
<template>
|
||||
|
||||
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
|
||||
<el-card v-if="currOpType!='add'">
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-text type="info" size="small">{{ editForm.id }}</el-text>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-text size="large"> {{ editForm.name }}</el-text>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-descriptions
|
||||
:column="3"
|
||||
size="small"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<user />
|
||||
</el-icon>
|
||||
负责人
|
||||
</div>
|
||||
</template>
|
||||
{{ editForm.rusername||editForm.ruserid }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<iphone />
|
||||
</el-icon>
|
||||
概率
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="odds" v-model="editForm.odds" showStyle="tag" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<location />
|
||||
</el-icon>
|
||||
风险状态
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<tickets />
|
||||
</el-icon>
|
||||
风险类型
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="risk_type" v-model="editForm.rtype" showStyle="tag" :disabled="true"/>
|
||||
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
影响程度
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="impact" v-model="editForm.impact" size="small" :disabled="true"/>
|
||||
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
所属项目
|
||||
</div>
|
||||
</template>
|
||||
{{editForm.projectId}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-tabs v-model="currTabName">
|
||||
<el-tab-pane label="基本情况" name="base">
|
||||
|
||||
<el-form-item label="风险名称" prop="name">
|
||||
<mdp-input v-model="editForm.name" placeholder="风险名称" :maxlength="255" @change="editSomeFields(editForm,'name',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险类型" prop="rtype">
|
||||
<mdp-select itemCode="risk_type" v-model="editForm.rtype" width="100%" @change="editSomeFields(editForm,'rtype',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发生概率" prop="odds">
|
||||
<mdp-select itemCode="odds" v-model="editForm.odds" width="100%" @change="editSomeFields(editForm,'odds',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="影响程度" prop="impact">
|
||||
<mdp-select itemCode="impact" v-model="editForm.impact" width="100%" @change="editSomeFields(editForm,'impact',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险等级" prop="rlvl">
|
||||
<mdp-select itemCode="rlvl" v-model="editForm.rlvl" width="100%" @change="editSomeFields(editForm,'rlvl',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="应对策略" prop="rsgy">
|
||||
<mdp-select itemCode="rsgy" v-model="editForm.rsgy" width="100%" @change="editSomeFields(editForm,'rsgy',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门编号" prop="deptid">
|
||||
<mdp-select-dept width="100%" v-model="editForm.deptid" placeholder="部门编号" :maxlength="50" @change="editSomeFields(editForm,'deptid',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="责任人" prop="ruserid">
|
||||
<xm-user-select width="100%" v-model="editForm.ruserid" :init-name="editForm.rusername" placeholder="责任人编号" :maxlength="50" @change="editSomeFields(editForm,'ruserid',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号" prop="projectId">
|
||||
<xm-project-select width="100%" v-model="editForm.projectId" placeholder="项目编号" :maxlength="50" @change="editSomeFields(editForm,'projectId',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
|
||||
<el-form-item label="风险编号" prop="id">
|
||||
<mdp-input showStyle="tag" v-model="editForm.id" placeholder="风险编号" :maxlength="50" @change="editSomeFields(editForm,'id',$event)" :disabled="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="风险名称" prop="name">
|
||||
<mdp-input v-model="editForm.name" placeholder="风险名称" :maxlength="255" @change="editSomeFields(editForm,'name',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险类型" prop="rtype">
|
||||
<mdp-select itemCode="risk_type" v-model="editForm.rtype" width="100%" @change="editSomeFields(editForm,'rtype',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发生概率" prop="odds">
|
||||
<mdp-select itemCode="odds" v-model="editForm.odds" width="100%" @change="editSomeFields(editForm,'odds',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="影响程度" prop="impact">
|
||||
<mdp-select itemCode="impact" v-model="editForm.impact" width="100%" @change="editSomeFields(editForm,'impact',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险等级" prop="rlvl">
|
||||
<mdp-select itemCode="rlvl" v-model="editForm.rlvl" width="100%" @change="editSomeFields(editForm,'rlvl',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="应对策略" prop="rsgy">
|
||||
<mdp-select itemCode="rsgy" v-model="editForm.rsgy" width="100%" @change="editSomeFields(editForm,'rsgy',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="责任人" prop="ruserid">
|
||||
<xm-user-select width="100%" v-model="editForm.ruserid" :init-name="editForm.rusername" placeholder="责任人编号" :maxlength="50" @change="editSomeFields(editForm,'ruserid',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号" prop="projectId">
|
||||
<xm-project-select width="100%" v-model="editForm.projectId" placeholder="项目编号" :maxlength="50" @change="editSomeFields(editForm,'projectId',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门编号" prop="deptid">
|
||||
<mdp-select-dept width="100%" v-model="editForm.deptid" placeholder="部门编号" :maxlength="50" @change="editSomeFields(editForm,'deptid',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="建立时间" prop="ctime">
|
||||
<mdp-date type="date" width="100%" placeholder="选择日期" v-model="editForm.ctime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'ctime',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="解除时间" prop="closeTime">
|
||||
<mdp-date type="date" width="100%" placeholder="选择日期" v-model="editForm.closeTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'closeTime',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="风险描述" prop="remark">
|
||||
<mdp-input type="textarea" rows="4" v-model="editForm.remark" placeholder="风险描述" :maxlength="255" @change="editSomeFields(editForm,'remark',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="应对措施" prop="rway">
|
||||
<mdp-input type="textarea" rows="4" width="100%" v-model="editForm.rway" placeholder="应对措施" :maxlength="255" @change="editSomeFields(editForm,'rway',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="风险描述" prop="remark">
|
||||
<mdp-input type="textarea" v-model="editForm.remark" placeholder="风险描述" :maxlength="255" @change="editSomeFields(editForm,'remark',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="应对措施" prop="rway">
|
||||
<mdp-input type="textarea" width="100%" v-model="editForm.rway" placeholder="应对措施" :maxlength="255" @change="editSomeFields(editForm,'rway',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
|
||||
</el-form>
|
||||
<div class="footer">
|
||||
<el-button icon="success-filled" v-if="currOpType=='add'|| (currOpType=='edit' && someOpen==false)" v-loading="load.edit" type="primary" @click="saveSubmit" :disabled="disBtn('addBtn') || !checkBtnQx('addBtn',menuDefId) || load.edit">提交</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="进展" name="comment" v-if="currOpType!='add'">
|
||||
<xm-comment-area v-if="currTabName=='comment'" :biz-id="editForm.id" :pbiz-id="editForm.projectId" obj-type="R"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="动态" name="dyn" v-if="currOpType!='add'">
|
||||
<xm-dynamics v-if="currTabName=='dyn'" :hideToolbar="true" :biz-id="editForm.id" :pbizId="editForm.projectId" :projectId="editForm.projectId"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="问题" name="bug" v-if="currOpType!='add'">
|
||||
<xm-question-mng v-if="currTabName=='bug'" :xm-risk="editForm"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="资料" name="att" v-if="currOpType!='add'">
|
||||
<mdp-select-att v-if="currTabName=='att'" subOpType='mng' :crely-type="xm-project" :crely-id="editForm.projectId" :biz-id="editForm.id"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as XmRiskApi from '@/api/xm/pro/xmRisk';
|
||||
import { MdpFormMixin } from '@/components/mdp-ui/mixin/MdpFormMixin.js';
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import XmQuestionMng from '../../core/xmQuestion/XmQuestionMng.vue';
|
||||
|
||||
export default {
|
||||
components: { },
|
||||
components: { XmQuestionMng },
|
||||
name:'XmRiskForm',
|
||||
mixins:[MdpFormMixin],
|
||||
computed: {
|
||||
@@ -128,12 +244,13 @@ export default {
|
||||
edit: XmRiskApi.editXmRisk,
|
||||
editSomeFields: XmRiskApi.editSomeFieldsXmRisk
|
||||
},
|
||||
currTabName:'base',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//由组件扩展添加其它的初始页面的逻辑(mounted+onOpen都会调用此函数,建议只添加公共逻辑)
|
||||
initCurrData(){
|
||||
|
||||
this.currTabName='base'
|
||||
},
|
||||
/**
|
||||
* 检查参数是否满足调用后台接口的条件
|
||||
|
||||
@@ -114,12 +114,7 @@
|
||||
<template v-slot="{visible,data}">
|
||||
<XmRiskForm ref="XmRiskForm" :someOpen="true" :visible="visible" :parentOpType="currOpType" :subOpType="data.subOpType" :formData="data.formData" @close="onFormClose" @submit="afterFormSubmit" @edit-fields="afterEditFields"/>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
<mdp-dialog ref="viewDlg" :title="menuDefName" fullscreen>
|
||||
<template v-slot="{visible,data}">
|
||||
<XmRiskView ref="XmRiskView" :someOpen="true" :visible="visible" :parentOpType="currOpType" :subOpType="data.subOpType" :formData="data.formData" @close="onFormClose" @submit="afterFormSubmit" @edit-fields="afterEditFields"/>
|
||||
</template>
|
||||
</mdp-dialog>
|
||||
</mdp-dialog>
|
||||
<MdpDialog ref="kanbanDlg" fullscreen :title="menuDefName">
|
||||
<MdpTableKanban
|
||||
:hiddenCfg="{delBtn:false,addBtn:false}"
|
||||
@@ -144,8 +139,7 @@
|
||||
|
||||
import { MdpTableMixin } from '@/components/mdp-ui/mixin/MdpTableMixin.js';
|
||||
import * as XmRiskApi from '@/api/xm/pro/xmRisk';
|
||||
import XmRiskForm from'./Form.vue';//新增修改明细界面
|
||||
import XmRiskView from'./View.vue';//新增修改明细界面
|
||||
import XmRiskForm from'./Form.vue';//新增修改明细界面
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
@@ -153,7 +147,7 @@ export default {
|
||||
name:'XmRiskMng',
|
||||
mixins:[MdpTableMixin],
|
||||
components: {
|
||||
XmRiskForm,XmRiskView
|
||||
XmRiskForm
|
||||
},
|
||||
computed: {
|
||||
...mapState(useUserStore,['userInfo'])
|
||||
@@ -198,10 +192,7 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showEdit(row){
|
||||
this.$refs['viewDlg'].open({formData:row,subOpType:'edit'})
|
||||
},
|
||||
methods: {
|
||||
//页面初始化需要配置的特殊逻辑写这里
|
||||
initCurrData(){
|
||||
this.searchTableDatas();
|
||||
|
||||
@@ -1,283 +0,0 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<template #header>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-text type="info" size="small">{{ editForm.id }}</el-text>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-text size="large"> {{ editForm.name }}</el-text>
|
||||
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-descriptions
|
||||
:column="3"
|
||||
size="small"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<user />
|
||||
</el-icon>
|
||||
负责人
|
||||
</div>
|
||||
</template>
|
||||
{{ editForm.rusername||editForm.ruserid }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<iphone />
|
||||
</el-icon>
|
||||
概率
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="odds" v-model="editForm.odds" showStyle="tag" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<location />
|
||||
</el-icon>
|
||||
风险状态
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)" :disabled="true"/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<tickets />
|
||||
</el-icon>
|
||||
风险类型
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select size="small" itemCode="risk_type" v-model="editForm.rtype" showStyle="tag" :disabled="true"/>
|
||||
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
影响程度
|
||||
</div>
|
||||
</template>
|
||||
<mdp-select showStyle="tag" itemCode="impact" v-model="editForm.impact" size="small" :disabled="true"/>
|
||||
|
||||
</el-descriptions-item>
|
||||
|
||||
<el-descriptions-item>
|
||||
<template #label>
|
||||
<div class="cell-item">
|
||||
<el-icon :style="iconStyle">
|
||||
<office-building />
|
||||
</el-icon>
|
||||
所属项目
|
||||
</div>
|
||||
</template>
|
||||
{{editForm.projectId}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-tabs>
|
||||
<el-tab-pane label="基本情况">
|
||||
|
||||
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editFormRef">
|
||||
<el-form-item label="风险编号" prop="id">
|
||||
<mdp-input showStyle="tag" v-model="editForm.id" placeholder="风险编号" :maxlength="50" @change="editSomeFields(editForm,'id',$event)" :disabled="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="风险名称" prop="name">
|
||||
<mdp-input showStyle="tag" v-model="editForm.name" placeholder="风险名称" :maxlength="255" @change="editSomeFields(editForm,'name',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险类型" prop="rtype">
|
||||
<mdp-select showStyle="tag" itemCode="risk_type" v-model="editForm.rtype" width="100%" @change="editSomeFields(editForm,'rtype',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发生概率" prop="odds">
|
||||
<mdp-select showStyle="tag" itemCode="odds" v-model="editForm.odds" width="100%" @change="editSomeFields(editForm,'odds',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="影响程度" prop="impact">
|
||||
<mdp-select showStyle="tag" itemCode="impact" v-model="editForm.impact" width="100%" @change="editSomeFields(editForm,'impact',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险等级" prop="rlvl">
|
||||
<mdp-select showStyle="tag" itemCode="rlvl" v-model="editForm.rlvl" width="100%" @change="editSomeFields(editForm,'rlvl',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select showStyle="tag" itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="应对策略" prop="rsgy">
|
||||
<mdp-select showStyle="tag" itemCode="rsgy" v-model="editForm.rsgy" width="100%" @change="editSomeFields(editForm,'rsgy',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="风险状态" prop="rstatus">
|
||||
<mdp-select showStyle="tag" itemCode="rstatus" v-model="editForm.rstatus" width="100%" @change="editSomeFields(editForm,'rstatus',$event)"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item label="责任人" prop="ruserid">
|
||||
<xm-user-select showStyle="tag" width="100%" v-model="editForm.ruserid" :init-name="editForm.rusername" placeholder="责任人编号" :maxlength="50" @change="editSomeFields(editForm,'ruserid',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目编号" prop="projectId">
|
||||
<xm-project-select showStyle="tag" width="100%" v-model="editForm.projectId" placeholder="项目编号" :maxlength="50" @change="editSomeFields(editForm,'projectId',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="部门编号" prop="deptid">
|
||||
<mdp-select-dept showStyle="tag" width="100%" v-model="editForm.deptid" placeholder="部门编号" :maxlength="50" @change="editSomeFields(editForm,'deptid',$event)" :disabled="disField" :displayLoad="true"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="建立时间" prop="ctime">
|
||||
<mdp-date showStyle="tag" type="date" width="100%" placeholder="选择日期" v-model="editForm.ctime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'ctime',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="解除时间" prop="closeTime">
|
||||
<mdp-date showStyle="tag" type="date" width="100%" placeholder="选择日期" v-model="editForm.closeTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD" @change="editSomeFields(editForm,'closeTime',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="风险描述" prop="remark">
|
||||
<mdp-input type="textarea" rows="4" v-model="editForm.remark" placeholder="风险描述" :maxlength="255" @change="editSomeFields(editForm,'remark',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="应对措施" prop="rway">
|
||||
<mdp-input type="textarea" rows="4" width="100%" v-model="editForm.rway" placeholder="应对措施" :maxlength="255" @change="editSomeFields(editForm,'rway',$event)" :disabled="disField"/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="进展">
|
||||
<xm-comment-area :biz-id="editForm.id" :pbiz-id="editForm.projectId" obj-type="R"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="动态">
|
||||
<xm-dynamics :hideToolbar="true" :biz-id="editForm.id" :pbizId="editForm.projectId" :projectId="editForm.projectId"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="问题">
|
||||
<xm-question-mng :xm-risk="editForm"/>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="资料">
|
||||
<mdp-select-att subOpType='mng' :crely-type="xm-project" :crely-id="editForm.projectId" :biz-id="editForm.id"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as XmRiskApi from '@/api/xm/pro/xmRisk';
|
||||
import { MdpFormMixin } from '@/components/mdp-ui/mixin/MdpFormMixin.js';
|
||||
import { mapState } from 'pinia'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import XmQuestionMng from '../../core/xmQuestion/XmQuestionMng.vue';
|
||||
|
||||
export default {
|
||||
components: { XmQuestionMng },
|
||||
name:'XmRiskForm',
|
||||
mixins:[MdpFormMixin],
|
||||
computed: {
|
||||
...mapState(useUserStore,['userInfo'])
|
||||
},
|
||||
props:{
|
||||
// 是否开启editSomeField模式
|
||||
someOpen:{
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
menuDefId:'',//menu_def.id 菜单表菜单编号,用于按钮权限判断
|
||||
pkNames:["id"],//表格主键的java属性名称,驼峰命名,默认为id,支持多主键
|
||||
currOpType:'add',//表单 add、edit,所有按钮可动、detail-只看不能操作
|
||||
editFormRules: {
|
||||
id:[
|
||||
//{ required: true, message: '此项必填', trigger: 'change' },
|
||||
//{ min: 1,max: 200, message: '长度在1到200之间', trigger: 'change'}
|
||||
],
|
||||
name:[
|
||||
{ required: true, message: '此项必填', trigger: 'change' },
|
||||
],
|
||||
rtype:[
|
||||
{ required: true, message: '此项必填', trigger: 'change' },
|
||||
],
|
||||
odds:[
|
||||
{ required: true, message: '此项必填', trigger: 'change' },
|
||||
],
|
||||
impact:[
|
||||
{ required: true, message: '此项必填', trigger: 'change' },
|
||||
],
|
||||
},
|
||||
editForm: {
|
||||
id:'',name:'',rtype:'',odds:'',impact:'',rstatus:'',rlvl:'',remark:'',rsgy:'',rway:'',ruserid:'',rusername:'',ctime:'',closeTime:'',deptid:'',branchId:'',projectId:'',cuserid:'',cusername:''
|
||||
},
|
||||
//增删改查(含批量)接口
|
||||
apis:{
|
||||
queryById: XmRiskApi.queryXmRiskById,
|
||||
add: XmRiskApi.addXmRisk,
|
||||
edit: XmRiskApi.editXmRisk,
|
||||
editSomeFields: XmRiskApi.editSomeFieldsXmRisk
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//由组件扩展添加其它的初始页面的逻辑(mounted+onOpen都会调用此函数,建议只添加公共逻辑)
|
||||
initCurrData(){
|
||||
|
||||
},
|
||||
/**
|
||||
* 检查参数是否满足调用后台接口的条件
|
||||
* @returns true / false
|
||||
*/
|
||||
preParamCheck(params){
|
||||
return true;
|
||||
},
|
||||
/**
|
||||
* 对修改的字段进行判断,返回false ,将取消更新数据库,由组件扩展
|
||||
* @param {*} row 当前选中的行
|
||||
* @param {*} fieldName 修改的字段名
|
||||
* @param {*} $event 修改后的值
|
||||
* @param {*} params 将要提交服务器的参数
|
||||
* @returns true/false 返回false ,将取消更新数据库
|
||||
*/
|
||||
editSomeFieldsCheck(row,fieldName,$event,params){
|
||||
params[fieldName]=$event
|
||||
return true;
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user