Browse Source

需求优化

master
陈裕财 4 years ago
parent
commit
fa5397855a
  1. 129
      src/views/xm/core/xmMenu/XmMenuAdd.vue
  2. 163
      src/views/xm/core/xmMenu/XmMenuEdit.vue

129
src/views/xm/core/xmMenu/XmMenuAdd.vue

@ -2,49 +2,95 @@
<section class="page-container padding border">
<el-row class="page-main ">
<!--新增界面 XmMenu 项目需求表-->
<el-form :model="addForm" label-width="120px" :rules="addFormRules" ref="addForm">
<el-form :model="addForm" label-width="120px" :rules="addFormRules" ref="addForm">
<el-collapse active="1" accordion>
<el-collapse value="1" accordion>
<el-collapse-item title="基本信息" name="1" >
<el-form-item label="" prop="ntype">
<el-form-item label="节点类型" prop="ntype">
<el-radio :disabled="parentMenu&&parentMenu.menuId&&parentTask.ntype==='0'" v-model="addForm.ntype" label="1">需求池</el-radio>
<el-radio v-model="addForm.ntype" label="0">需求</el-radio>
<br>
<font v-if="addForm.ntype==='0'" color="red" style="font-size:12px;">需求建议按以下逻辑描述一个需求什么人做什么事为什么</font>
<font v-if="addForm.ntype==='1'" color="red" style="font-size:12px;">需求池需求池下可建立子需求池或者需求负责汇总统计下级数据分解上级需求池预算</font>
</el-form-item>
<el-form-item v-if="parentMenu" label="所属需求池" prop="pmenuId">
<el-link type="primary" :icon="'el-icon-folder-opened'">{{parentMenu.seqNo}} &nbsp; &nbsp; {{parentMenu.menuName}}</el-link>
</el-form-item>
<el-form-item v-if="!parentMenu" label="所属需求池" prop="pmenuId">
无归属需求池
</el-form-item>
<el-form-item label="归属产品" prop="productId">
<el-tag v-if="addForm.productId">{{addForm.productName?addForm.productName:addForm.productId}}</el-tag>
</el-form-item>
<el-form-item label="名称" prop="menuName">
<el-input v-model="addForm.menuName" placeholder="名称" ></el-input>
</el-form-item>
<el-form-item label="序号" prop="seqNo">
<el-input v-model="addForm.seqNo" placeholder="如1.0 , 1.1 , 1.1.1等" ></el-input>
<span v-if="parentMenu" style="color:red;">建议{{parentMenu.seqNo}}.{{parentMenu.childrenCnt?parentMenu.childrenCnt+1:1}} </span>
</el-form-item>
<el-form-item label="提出人" prop="proposerId">
<el-tag v-if="addForm.mmUserid" closable @close="clearPmUser">{{addForm.mmUsername}}</el-tag>
<el-tag v-else>未配置</el-tag>
<el-button @click="selectUser">选负责人</el-button>
</el-form-item>
<el-form-item label="跟进人" prop="mmUserid">
<el-tag v-if="addForm.mmUserid" closable @close="clearPmUser">{{addForm.mmUsername}}</el-tag>
<el-tag v-else>未配置</el-tag>
<el-button @click="selectUser">选跟进人</el-button>
</el-form-item>
<el-form-item label="概述" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 4, maxRows: 20}" v-model="addForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item>
<el-row>
<el-col :span="6">
<el-form-item label="序号名称" prop="seqNo" >
<el-input v-model="addForm.seqNo" style="width:100%;" placeholder="如1.0 , 1.1 , 1.1.1等" ></el-input>
</el-form-item>
</el-col>
<el-col :span="18">
<el-form-item label="" prop="menuName" label-width="0px">
<el-input v-model="addForm.menuName" placeholder="名称" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="归属产品" prop="productId">
<font v-if="addForm.productId">{{addForm.productName?addForm.productName:addForm.productId}}</font>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="parentMenu" label="需求池" prop="pmenuId">
<el-link type="primary" :icon="'el-icon-folder-opened'">{{parentMenu.seqNo}} &nbsp; &nbsp; {{parentMenu.menuName}}</el-link>
</el-form-item>
<el-form-item v-if="!parentMenu" label="需求池" prop="pmenuId">
无归属需求池
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="需求类型" prop="dtype" >
<el-select v-model="addForm.dtype">
<el-option v-for="i in this.options.demandType" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求来源" prop="source">
<el-select v-model="addForm.source">
<el-option v-for="i in this.options.demandSource" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求层次" prop="dlvl" >
<el-select v-model="addForm.dlvl">
<el-option v-for="i in this.options.demandLvl" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="优先级" prop="priority" >
<el-select v-model="addForm.priority">
<el-option v-for="i in options.priority" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="提出人" prop="proposerId">
<el-tag type="text" v-if="addForm.mmUserid" closable @close="clearPmUser">{{addForm.mmUsername}}</el-tag>
<el-button type="text" @click="selectUser">选负责人</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进人" prop="mmUserid">
<el-tag type="text" v-if="addForm.mmUserid" closable @close="clearPmUser">{{addForm.mmUsername}}</el-tag>
<el-button type="text" @click="selectUser">选跟进人</el-button>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="需求概述" name="4">
<el-form-item label="需求概述" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="addForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="成本进度预估" name="2">
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number style="width:200px;" v-model="addForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;小时
@ -70,10 +116,6 @@
<el-input v-model="addForm.operDocUrl" placeholder="操作手册链接" ></el-input>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="可控 Controllability" name="4">
<div>用户决策根据场景可给予用户操作建议或安全提示但不能代替用户进行决策</div>
<div>结果可控用户可以自由的进行操作包括撤销回退和终止当前操作等</div>
</el-collapse-item>
</el-collapse>
</el-form>
@ -82,7 +124,7 @@
</el-drawer>
</el-row>
<el-row>
<el-row class="padding">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.add" type="primary" @click.native="addSubmit" :disabled="load.add==true">提交</el-button>
</el-row>
@ -91,7 +133,7 @@
<script>
import util from '@/common/js/util';//
//import { listOption } from '@/api/mdp/meta/itemOption';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { addXmMenu } from '@/api/xm/core/xmMenu';
import { mapGetters } from 'vuex'
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
@ -187,6 +229,9 @@
this.$notify({showClose: true, message: '产品编号不能为空', type:'error' });
return;
}
if(params.remark=='作为 ,我需要 ,以便我能够 。'){
params.remark=""
}
addXmMenu(params).then((res) => {
this.load.add=false
var tips=res.data.tips;
@ -232,6 +277,10 @@
UsersSelect
},
mounted() {
listOption([{categoryId:'all',itemCode:'demandSource'},{categoryId:'all',itemCode:'demandLvl'},{categoryId:'all',itemCode:'demandType'},{categoryId:'all',itemCode:'priority'}]).then(res=>{
this.options=res.data.data;
})
this.addForm=Object.assign(this.addForm, this.xmMenu);
this.addForm.mmUserid=this.userInfo.userid
this.addForm.mmUsername=this.userInfo.username

163
src/views/xm/core/xmMenu/XmMenuEdit.vue

@ -3,50 +3,127 @@
<el-row class="page-main ">
<el-tabs>
<el-tab-pane label="需求详情">
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-form :model="editForm" label-width="120px" :rules="editFormRules" ref="editForm">
<el-row class="padding-bottom">
<el-steps :active="parseInt(editForm.status)+1" simple finish-status="success" align-center>
<el-step v-for="(item,index) in dicts.menuStatus" @click.native="on_click(item.id)" :title="item.name" :key="index"></el-step>
</el-steps>
</el-row>
<el-form-item label="名称" prop="menuName">
<el-input v-model="editForm.menuName" placeholder="名称" ></el-input>
</el-form-item>
<el-row class="padding-bottom">
<el-col :span="12">
<el-form-item label="序号" prop="seqNo">
<el-input v-model="editForm.seqNo" placeholder="如1.0 , 1.1 , 1.1.1等" ></el-input>
<el-collapse value="1" accordion>
<el-collapse-item title="基本信息" name="1" >
<el-form-item label="节点类型" prop="ntype">
<el-radio v-model="editForm.ntype" label="1">需求池</el-radio>
<el-radio v-model="editForm.ntype" label="0">需求</el-radio>
<br>
<font v-if="editForm.ntype==='0'" color="red" style="font-size:12px;">需求建议按以下逻辑描述一个需求什么人做什么事为什么</font>
<font v-if="editForm.ntype==='1'" color="red" style="font-size:12px;">需求池需求池下可建立子需求池或者需求负责汇总统计下级数据分解上级需求池预算</font>
</el-form-item>
<el-row>
<el-col :span="6">
<el-form-item label="序号名称" prop="seqNo" >
<el-input v-model="editForm.seqNo" style="width:100%;" placeholder="如1.0 , 1.1 , 1.1.1等" ></el-input>
</el-form-item>
</el-col>
<el-col :span="18">
<el-form-item label="" prop="menuName" label-width="0px">
<el-input v-model="editForm.menuName" placeholder="名称" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="归属产品" prop="productId">
<font v-if="editForm.productId">{{editForm.productName?editForm.productName:editForm.productId}}</font>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="parentMenu" label="需求池" prop="pmenuId">
<el-link type="primary" :icon="'el-icon-folder-opened'">{{parentMenu.seqNo}} &nbsp; &nbsp; {{parentMenu.menuName}}</el-link>
</el-form-item>
<el-form-item v-if="!parentMenu" label="需求池" prop="pmenuId">
无归属需求池
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="需求类型" prop="dtype" >
<el-select v-model="editForm.dtype">
<el-option v-for="i in this.options.demandType" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求来源" prop="source">
<el-select v-model="editForm.source">
<el-option v-for="i in this.options.demandSource" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="需求层次" prop="dlvl" >
<el-select v-model="editForm.dlvl">
<el-option v-for="i in this.options.demandLvl" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="优先级" prop="priority" >
<el-select v-model="editForm.priority">
<el-option v-for="i in options.priority" :label="i.optionName" :key="i.optionValue" :value="i.optionValue"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="提出人" prop="proposerId">
<el-tag type="text" v-if="editForm.mmUserid" closable @close="clearPmUser">{{editForm.mmUsername}}</el-tag>
<el-button type="text" @click="selectUser">选负责人</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="跟进人" prop="mmUserid">
<el-tag type="text" v-if="editForm.mmUserid" closable @close="clearPmUser">{{editForm.mmUsername}}</el-tag>
<el-button type="text" @click="selectUser">选跟进人</el-button>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="需求概述" name="4">
<el-form-item label="需求概述" prop="remark">
<el-input type="textarea" :autosize="{ minRows: 6, maxRows: 20}" v-model="editForm.remark" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标签" prop="ntype">
{{editForm.tagNames?editForm.tagNames:''}}
<el-button type="text" icon="el-icon-plus" @click="tagSelectVisible=true">标签</el-button>
</el-collapse-item>
<el-collapse-item title="成本进度预估" name="2">
<el-form-item label="预估工期" prop="budgetHours">
<el-input-number style="width:200px;" v-model="editForm.budgetHours" :precision="2" :step="8" :min="0" placeholder="预计工期(小时)"></el-input-number>&nbsp;小时
</el-form-item>
<el-form-item label="预估工作量" prop="budgetWorkload">
<el-input-number style="width:200px;" v-model="editForm.budgetWorkload" :precision="2" :step="8" :min="0" placeholder="预计总工作量(人时,不包括下一级)"></el-input-number> <el-tag>人时{{this.toFixed(editForm.budgetWorkload/8/20)}}人月</el-tag>
</el-form-item>
<el-form-item label="预估金额" prop="budgetAmount">
<el-input-number style="width:200px;" v-model="editForm.budgetAmount" :precision="2" :step="100" :min="0" placeholder="预算金额"></el-input-number>
</el-form-item>
</el-collapse-item>
<el-collapse-item title="相关链接" name="3">
<el-form-item label="需求链接" prop="demandUrl">
<el-input v-model="editForm.demandUrl" placeholder="需求链接" ></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="负责人" prop="mmUserid">
<el-tag v-if="editForm.mmUserid" closable @close="clearPmUser">{{editForm.mmUsername}}</el-tag>
<el-tag v-else>未配置</el-tag>
<el-button @click="selectUser">选负责人</el-button>
</el-form-item>
<el-form-item label="需求链接" prop="demandUrl">
<el-input v-model="editForm.demandUrl" placeholder="需求链接" ></el-input>
</el-form-item>
<el-form-item label="代码链接" prop="codeUrl">
<el-input v-model="editForm.codeUrl" placeholder="代码链接" ></el-input>
</el-form-item>
<el-form-item label="设计链接" prop="designUrl">
<el-input v-model="editForm.designUrl" placeholder="设计链接" ></el-input>
</el-form-item>
<el-form-item label="操作手册链接" prop="operDocUrl">
<el-input v-model="editForm.operDocUrl" placeholder="操作手册链接" ></el-input>
</el-form-item>
<el-form-item label="概述" prop="remark">
<el-input type="textarea" v-model="editForm.remark" :autosize="{ minRows: 4, maxRows: 20}" placeholder="什么人?做什么事?,为什么?如: 作为招聘专员,我需要统计员工半年在职/离职人数,以便我能够制定招聘计划" ></el-input>
</el-form-item>
<el-form-item label="代码链接" prop="codeUrl">
<el-input v-model="editForm.codeUrl" placeholder="代码链接" ></el-input>
</el-form-item>
<el-form-item label="设计链接" prop="designUrl">
<el-input v-model="editForm.designUrl" placeholder="设计链接" ></el-input>
</el-form-item>
<el-form-item label="操作手册链接" prop="operDocUrl">
<el-input v-model="editForm.operDocUrl" placeholder="操作手册链接" ></el-input>
</el-form-item>
</el-collapse-item>
</el-collapse>
</el-form>
<el-row >
<el-row class="padding">
<el-button @click.native="handleCancel">取消</el-button>
<el-button v-loading="load.edit" type="primary" @click.native="editSubmit" :disabled="load.edit==true">提交</el-button>
</el-row>
@ -73,7 +150,7 @@
<script>
import util from '@/common/js/util';//
//import { listOption } from '@/api/mdp/meta/itemOption';//
import { listOption } from '@/api/mdp/meta/itemOption';//
import { editXmMenu } from '@/api/xm/core/xmMenu';
import { mapGetters } from 'vuex'
import UsersSelect from "@/views/mdp/sys/user/UsersSelect";
@ -205,6 +282,13 @@ import XmMenuExchangeMng from '../xmMenuExchange/XmMenuExchangeMng.vue';
},
/**end 在上面加自定义方法**/
toFixed(floatValue){
if(floatValue ==null || floatValue=='' || floatValue == undefined){
return 0;
}else{
return parseFloat(floatValue).toFixed(2);
}
},
},//end method
components: {
// 'xm-menu-edit':XmMenuEdit
@ -214,6 +298,11 @@ import XmMenuExchangeMng from '../xmMenuExchange/XmMenuExchangeMng.vue';
XmMenuExchangeMng,
},
mounted() {
listOption([{categoryId:'all',itemCode:'demandSource'},{categoryId:'all',itemCode:'demandLvl'},{categoryId:'all',itemCode:'demandType'},{categoryId:'all',itemCode:'priority'}]).then(res=>{
this.options=res.data.data;
})
this.editForm=Object.assign(this.editForm, this.xmMenu);
/**在下面写其它函数***/

Loading…
Cancel
Save