3 changed files with 381 additions and 70 deletions
-
67src/views/xm/core/xmProduct/XmProductEdit.vue
-
9src/views/xm/core/xmProduct/XmProductOverviewComplex.vue
-
371src/views/xm/core/xmProduct/XmProductSetting.vue
@ -0,0 +1,371 @@ |
|||||
|
<template> |
||||
|
<section class="padding border"> |
||||
|
<el-row> |
||||
|
<!--新增界面 XmProduct 产品表--> |
||||
|
<el-form |
||||
|
:model="editForm" |
||||
|
label-width="120px" |
||||
|
:rules="editFormRules" |
||||
|
label-position="top" |
||||
|
ref="editForm" |
||||
|
> |
||||
|
|
||||
|
<h3>{{ editForm.productName }}</h3> |
||||
|
<el-row class=" label-font-color"> |
||||
|
<span >产品代号:</span> |
||||
|
{{ editForm.code }} <el-divider direction="vertical"></el-divider><span |
||||
|
>产品编号:</span |
||||
|
> |
||||
|
{{ editForm.id }} |
||||
|
<el-tooltip |
||||
|
content="产品代号用于签订合同等甲乙方共享的场景;产品编号为内部编号,用于内部流转,编号生成规则:产品代号+四位随机码 " |
||||
|
><i class="el-icon-question"></i |
||||
|
></el-tooltip> |
||||
|
</el-row> |
||||
|
<el-form-item label="管理成员"> |
||||
|
<el-row class="padding padding-top"> |
||||
|
|
||||
|
<el-col :span="8"> |
||||
|
<el-form-item prop="admUserid" label-width="0px"> |
||||
|
<mdp-select-user-x |
||||
|
label=" 产品总控" |
||||
|
userid-key="admUserid" |
||||
|
username-key="admUsername" |
||||
|
v-model="editForm" |
||||
|
@change="editSomeFields(editForm, 'admUserid', $event)" |
||||
|
></mdp-select-user-x> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item prop="pmUserid" label-width="0px"> |
||||
|
<mdp-select-user-x |
||||
|
label=" 产品经理" |
||||
|
userid-key="pmUserid" |
||||
|
username-key="pmUsername" |
||||
|
v-model="editForm" |
||||
|
@change="editSomeFields(editForm, 'pmUserid', $event)" |
||||
|
></mdp-select-user-x> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<el-form-item prop="assUserid" label-width="0px"> |
||||
|
<mdp-select-user-x |
||||
|
label=" 副经理、助理" |
||||
|
userid-key="assUserid" |
||||
|
username-key="assUsername" |
||||
|
v-model="editForm" |
||||
|
@change="editSomeFields(editForm, 'assUserid', $event)" |
||||
|
></mdp-select-user-x> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
|
||||
|
</el-row> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="团队相关:小组crud、加减人、小组组长管理等"> |
||||
|
<el-row> |
||||
|
<el-radio-group v-model="qxCode.groupScope" @change="editSomeFields(editForm,'groupScope',$event)"> |
||||
|
<el-radio label="0">不限制,允许任何人</el-radio> |
||||
|
<el-radio label="1">同机构下的人员</el-radio> |
||||
|
<el-radio label="2">同产品内人员</el-radio> |
||||
|
<el-radio label="3">同产品下同小组内人员</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-checkbox v-model="qxCode.groupTransmit" :true-label="'1'" :false-label="'0'" @change="editSomeFields(editForm,'groupTransmit',$event)">是否检查用户的上下级关系</el-checkbox> |
||||
|
</el-row> |
||||
|
<!--0-代表不限制,1-同组织,2-同项目组(默认),3-同小组--> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="测试相关:缺陷crud、用例crud、测试计划、测试执行等"> |
||||
|
<el-row> |
||||
|
<el-radio-group v-model="qxCode.testScope" @change="editSomeFields(editForm,'testScope',$event)"> |
||||
|
<el-radio label="0">不限制,允许任何人</el-radio> |
||||
|
<el-radio label="1">同机构下的人员</el-radio> |
||||
|
<el-radio label="2">同产品内人员</el-radio> |
||||
|
<el-radio label="3">同产品下同小组内人员</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-checkbox v-model="qxCode.testTransmit" :true-label="'1'" :false-label="'0'" @change="editSomeFields(editForm,'testTransmit',$event)">缺陷、用例等指派及crud是否检查用户的上下级关系</el-checkbox> |
||||
|
</el-row> |
||||
|
<!--0-代表不限制,1-同组织,2-同项目组(默认),3-同小组--> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="迭代crud、迭代负责人管理"> |
||||
|
<el-row> |
||||
|
<el-radio-group v-model="qxCode.iterationScope" @change="editSomeFields(editForm,'iterationScope',$event)"> |
||||
|
<el-radio label="0">不限制,允许任何人</el-radio> |
||||
|
<el-radio label="1">同机构下的人员</el-radio> |
||||
|
<el-radio label="2">同产品内人员</el-radio> |
||||
|
<el-radio label="3">同产品下同小组内人员</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-checkbox v-model="qxCode.iterationTransmit" :true-label="'1'" :false-label="'0'" @change="editSomeFields(editForm,'iterationTransmit',$event)">迭代指派及crud是否检查用户的上下级关系</el-checkbox> |
||||
|
</el-row> |
||||
|
<!--0-代表不限制,1-同组织,2-同项目组(默认),3-同小组--> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="需求相关:史诗、特性、故事的crud"> |
||||
|
<el-row> |
||||
|
<el-radio-group v-model="qxCode.menuTransmit" @change="editSomeFields(editForm,'menuScope',$event)"> |
||||
|
<el-radio label="0">不限制,允许任何人</el-radio> |
||||
|
<el-radio label="1">同机构下的人员</el-radio> |
||||
|
<el-radio label="2">同产品内人员</el-radio> |
||||
|
<el-radio label="3">同产品下同小组内人员</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-row> |
||||
|
<el-row> |
||||
|
<el-checkbox v-model="qxCode.menuTransmit" :true-label="'1'" :false-label="'0'" @change="editSomeFields(editForm,'menuTransmit',$event)">需求指派及crud是否检查用户的上下级关系</el-checkbox> |
||||
|
</el-row> |
||||
|
<!--0-代表不限制,1-同组织,2-同项目组(默认),3-同小组--> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</el-row> |
||||
|
</section> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import util from "@/common/js/util"; //全局公共库 |
||||
|
import { |
||||
|
initDicts, |
||||
|
addXmProduct, |
||||
|
editXmProductSomeFields, |
||||
|
createProductCode |
||||
|
} from "@/api/xm/core/xmProduct"; |
||||
|
import { mapGetters } from "vuex"; |
||||
|
import store from '@/store' |
||||
|
export default { |
||||
|
computed: { |
||||
|
...mapGetters(["userInfo", "roles"]), |
||||
|
}, |
||||
|
props: ["xmProduct", "visible"], |
||||
|
watch: { |
||||
|
xmProduct: { |
||||
|
handler() { |
||||
|
this.editForm = this.xmProduct; |
||||
|
this.editFormBak = { ...this.editForm }; |
||||
|
}, |
||||
|
deep: true, |
||||
|
}, |
||||
|
visible: function (visible) { |
||||
|
if (visible == true) { |
||||
|
|
||||
|
this.initData(); |
||||
|
this.initQxCode(); |
||||
|
//从新打开页面时某些数据需要重新加载,可以在这里添加 |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
dicts: { xmProductPstatus: [] }, //下拉选择框的所有静态数据 params=[{categoryId:'0001',itemCode:'sex'}] 返回结果 {'sex':[{optionValue:'1',optionName:'男',seqOrder:'1',fp:'',isDefault:'0'},{optionValue:'2',optionName:'女',seqOrder:'2',fp:'',isDefault:'0'}]} |
||||
|
load: { list: false, add: false, del: false, edit: false }, //查询中... |
||||
|
editFormRules: { |
||||
|
}, |
||||
|
//新增界面数据 产品表 |
||||
|
editForm: { |
||||
|
id: "", |
||||
|
productName: "", |
||||
|
branchId: "", |
||||
|
remark: "", |
||||
|
version: "", |
||||
|
pmUserid: "", |
||||
|
pmUsername: "", |
||||
|
ctime: "", |
||||
|
deptid: "", |
||||
|
pstatus: "", |
||||
|
startTime: "", |
||||
|
endTime: "", |
||||
|
deptName: "", |
||||
|
admUserid: "", |
||||
|
admUsername: "", |
||||
|
assUserid: "", |
||||
|
assUsername: "", |
||||
|
bizProcInstId: "", |
||||
|
bizFlowState: "", |
||||
|
isTpl: "", |
||||
|
baselineId: "", |
||||
|
baseTime: "", |
||||
|
code: "", |
||||
|
pbudgetWorkload: "", |
||||
|
pbudgetAmount: "", |
||||
|
pmenuBudgetWorkload: "", |
||||
|
pmenuBudgetAmount: "", |
||||
|
budgetCtrl: "", |
||||
|
phaseBudgetCtrl: "", |
||||
|
phaseActCtrl: "", |
||||
|
locked: "", |
||||
|
del: "", |
||||
|
ltime: "", |
||||
|
}, |
||||
|
editFormBak: { |
||||
|
id: "", |
||||
|
productName: "", |
||||
|
branchId: "", |
||||
|
remark: "", |
||||
|
version: "", |
||||
|
pmUserid: "", |
||||
|
pmUsername: "", |
||||
|
ctime: "", |
||||
|
deptid: "", |
||||
|
pstatus: "", |
||||
|
startTime: "", |
||||
|
endTime: "", |
||||
|
deptName: "", |
||||
|
admUserid: "", |
||||
|
admUsername: "", |
||||
|
assUserid: "", |
||||
|
assUsername: "", |
||||
|
bizProcInstId: "", |
||||
|
bizFlowState: "", |
||||
|
isTpl: "", |
||||
|
baselineId: "", |
||||
|
baseTime: "", |
||||
|
code: "", |
||||
|
pbudgetWorkload: "", |
||||
|
pbudgetAmount: "", |
||||
|
pmenuBudgetWorkload: "", |
||||
|
pmenuBudgetAmount: "", |
||||
|
budgetCtrl: "", |
||||
|
phaseBudgetCtrl: "", |
||||
|
phaseActCtrl: "", |
||||
|
locked: "", |
||||
|
del: "", |
||||
|
ltime: "", |
||||
|
}, |
||||
|
/** |
||||
|
权限码0,1,2,3,4,5,67,8,9,逗号分割 |
||||
|
共10位,不定长,暂时只启用前6个位 |
||||
|
第0位代表需求指派及crud权限: |
||||
|
0-代表不限制,1-同组织,2-同项目组(默认),3-同小组 |
||||
|
第1位代表需求指派及crud时是否检查上下级关系:0-否(默认),1是 |
||||
|
第2位代表测试相关(包括测试用例、测试库、测试计划、测试报告)指派及crud权限同第0位, |
||||
|
第3位代表测试相关(包括测试用例、测试库、测试计划、测试报告)指派及crud时是否检查上下级关系,同第1位 |
||||
|
第4位代表迭代指派及crud时权限,同第0位 |
||||
|
第5位代表迭代指派及crud时是否检查上下级关系,同第1位 |
||||
|
*/ |
||||
|
qxCode:{ |
||||
|
groupScope:'2', |
||||
|
groupTransmit:'1', |
||||
|
testScope:'2',//0-代表不限制,1-同组织,2-同项目组(默认),3-同小组 |
||||
|
testTransmit:'1',//0-不控制,1任务指派及crud必须检查用户的上下级关系 |
||||
|
menuScope:'2',//0-代表不限制,1-同组织,2-同项目组(默认),3-同小组 |
||||
|
menuTransmit:'1',//0-不控制,1任务指派及crud必须检查用户的上下级关系 |
||||
|
iterationScope:'2',//0-代表不限制,1-同组织,2-同项目组(默认),3-同小组 |
||||
|
iterationTransmit:'1',//0-不控制,1任务指派及crud必须检查用户的上下级关系 |
||||
|
}, |
||||
|
/**begin 在下面加自定义属性,记得补上面的一个逗号**/ |
||||
|
|
||||
|
/**end 在上面加自定义属性**/ |
||||
|
}; //end return |
||||
|
}, //end data |
||||
|
methods: { |
||||
|
// 取消按钮点击 父组件监听@cancel="editFormVisible=false" 监听 |
||||
|
handleCancel: function () { |
||||
|
this.$refs["editForm"].resetFields(); |
||||
|
this.$emit("cancel"); |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
editSomeFields(row, fieldName, $event) { |
||||
|
if(this.opType==='add'){ |
||||
|
return; |
||||
|
} |
||||
|
let params = {}; |
||||
|
params["ids"] = [row].map((i) => i.id); |
||||
|
if (fieldName == "admUserid") { |
||||
|
params["admUserid"] = $event[0].userid; |
||||
|
params["admUsername"] = $event[0].username; |
||||
|
} else if (fieldName == "assUserid") { |
||||
|
params["assUserid"] = $event[0].userid; |
||||
|
params["assUsername"] = $event[0].username; |
||||
|
} else if (fieldName == "pmUserid") { |
||||
|
params["pmUserid"] = $event[0].userid; |
||||
|
params["pmUsername"] = $event[0].username; |
||||
|
} if (fieldName == "groupScope"||fieldName == "groupTransmit"||fieldName == "testScope"||fieldName=="testTransmit"||fieldName == "menuScope"||fieldName=="menuTransmit"||fieldName == "iterationScope"||fieldName=="iterationTransmit") { |
||||
|
params["qxCode"] = [this.qxCode.groupScope,this.qxCode.groupTransmit,this.qxCode.testScope,this.qxCode.testTransmit,this.qxCode.menuScope,this.qxCode.menuTransmit,this.qxCode.iterationScope,this.qxCode.iterationTransmit].join(",") |
||||
|
} else { |
||||
|
params[fieldName] = $event; |
||||
|
} |
||||
|
|
||||
|
var func = editXmProductSomeFields; |
||||
|
func(params) |
||||
|
.then((res) => { |
||||
|
let tips = res.data.tips; |
||||
|
if (tips.isOk) { |
||||
|
this.editFormBak = [...this.editForm]; |
||||
|
Object.assign(this.editForm, params); |
||||
|
store.dispatch("setXmProduct",this.editForm) |
||||
|
this.$emit("edit-fields", params); |
||||
|
} else { |
||||
|
Object.assign(this.editForm, this.editFormBak); |
||||
|
this.initQxCode() |
||||
|
this.$notify({ |
||||
|
position: "bottom-left", |
||||
|
showClose: true, |
||||
|
message: tips.msg, |
||||
|
type: tips.isOk ? "success" : "error", |
||||
|
}); |
||||
|
} |
||||
|
}) |
||||
|
.catch((e) => Object.assign(this.editForm, this.editFormBak)); |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
initData(){ |
||||
|
this.editForm=Object.assign(this.editForm,this.xmProduct) |
||||
|
this.editFormBak={...this.editForm} |
||||
|
}, |
||||
|
|
||||
|
initQxCode(){ |
||||
|
var qxCode=this.editForm.qxCode |
||||
|
if(!qxCode){ |
||||
|
this.qxCode.groupScope="2" |
||||
|
this.qxCode.groupTransmit="1" |
||||
|
this.qxCode.testScope="2" |
||||
|
this.qxCode.testTransmit="1" |
||||
|
this.qxCode.menuScope="2" |
||||
|
this.qxCode.menuTransmit="1" |
||||
|
this.qxCode.iterationScope="2" |
||||
|
this.qxCode.iterationTransmit="1" |
||||
|
}else{ |
||||
|
var qxCodes=qxCode.split(",") |
||||
|
if(qxCodes.length>=8){ |
||||
|
this.qxCode.groupScope=qxCodes[0] |
||||
|
this.qxCode.groupTransmit=qxCodes[1] |
||||
|
this.qxCode.testScope=qxCodes[2] |
||||
|
this.qxCode.testTransmit=qxCodes[3] |
||||
|
this.qxCode.menuScope=qxCodes[4] |
||||
|
this.qxCode.menuTransmit=qxCodes[5] |
||||
|
this.qxCode.iterationScope=qxCodes[6] |
||||
|
this.qxCode.iterationTransmit=qxCodes[7] |
||||
|
}else{ |
||||
|
this.qxCode.groupScope='2' |
||||
|
this.qxCode.groupTransmit='1' |
||||
|
this.qxCode.testScope="2" |
||||
|
this.qxCode.testTransmit="1" |
||||
|
this.qxCode.menuScope="2" |
||||
|
this.qxCode.menuTransmit="1" |
||||
|
this.qxCode.iterationScope="2" |
||||
|
this.qxCode.iterationTransmit="1" |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
/**end 在上面加自定义方法**/ |
||||
|
}, //end method |
||||
|
components: { |
||||
|
}, |
||||
|
mounted() { |
||||
|
initDicts(this); |
||||
|
this.initData(); |
||||
|
this.initQxCode(); |
||||
|
/**在下面写其它函数***/ |
||||
|
}, //end mounted |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
|
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue