|
@@ -43,6 +43,13 @@
|
|
|
<el-option v-for="item in baseClfList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <!-- 部门筛选 -->
|
|
|
+ <el-form-item >
|
|
|
+ <span style="margin-left:5px;margin-right:5px;color:#606266;">部门</span>
|
|
|
+ <el-cascader v-model="deptId" :options="departmentList" placeholder="请选择部门"
|
|
|
+ :props="{ checkStrictly: true }" :show-all-levels="false" clearable filterable @change="searchClfList" size="small"
|
|
|
+ ></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
|
|
|
<!-- 分类条目 -->
|
|
|
<!-- <el-form-item style="float:right;" v-if="permissions.projectClassification">
|
|
@@ -184,6 +191,7 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column prop="departmentName" label="所属部门" sortable="custom" width="200"></el-table-column>
|
|
|
<el-table-column prop="projectMainName" label="主项目" sortable="custom" min-width="250" v-if="user.timeType.mainProjectState == '1'">
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="inchargerName" label="项目经理" sortable="custom" min-width="150">
|
|
@@ -246,6 +254,14 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <!-- 研究中心 -->
|
|
|
+ <el-table-column prop="associateDegreeNames" :label="centerNameDegree" min-width="190" v-if="user.timeType.isCro == 1" sortable="custom">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div>
|
|
|
+ {{scope.row.associateDegreeNames}}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<!-- 级别 -->
|
|
|
<el-table-column :prop="user.timeType.projectLevelState == 1 ? 'levelName' : 'level'" label="级别" min-width="190" v-if="user.company.packageProject == 1">
|
|
|
<template slot-scope="scope">
|
|
@@ -368,6 +384,13 @@
|
|
|
</el-select>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="所属部门">
|
|
|
+ <el-cascader v-model="addForm.deptId" :options="departmentList" placeholder="请选择部门"
|
|
|
+ :props="{ checkStrictly: true }" clearable filterable @change="cascaderChange"
|
|
|
+ ></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
<!-- 供应商 -->
|
|
|
<!-- <el-form-item label="供应商" v-if="user.company.packageProvider">
|
|
|
<el-select v-model="addForm.supplierId" multiple collapse-tags style="width:32%;" placeholder="请选择供应商">
|
|
@@ -419,11 +442,20 @@
|
|
|
<el-option v-for="item in importanceList" :key="item.id" :label="item.label" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
<!-- 增加合同金额字段 -->
|
|
|
- <span style="margin-left:63px;margin-right:10px;" v-if="user.company.packageProject==1">合同金额</span>
|
|
|
- <el-input id="contractAmount" v-model="addForm.contractAmount" style="width:33%;"
|
|
|
- placeholder="整数" clearable @keyup.native="restrictNumber('contractAmount')" :disabled="title == '新增项目' ? false : true"></el-input><span style="margin-left:10px;">元</span>
|
|
|
+ <!-- <span style="margin-left:63px;margin-right:10px;" v-if="user.company.packageProject==1">合同金额</span>
|
|
|
+ <el-input id="contractAmount" v-model="addForm.contractAmount" style="width:33%;" @blur="contractAmountChange(addForm.contractAmount)"
|
|
|
+ placeholder="整数" clearable @keyup.native="restrictNumber('contractAmount')" :disabled="title == '新增项目' ? false : false"></el-input><span style="margin-left:10px;">元</span> -->
|
|
|
+ </el-form-item>
|
|
|
<!-- 增加合同金额字段 -->
|
|
|
+ <el-form-item label="合同金额" v-if="user.company.packageProject==1">
|
|
|
+ <el-input id="contractAmount" v-model="addForm.contractAmount" style="width:32%;" @input="contractAmountChange(addForm.contractAmount)" placeholder="整数" clearable @keyup.native="restrictNumber('contractAmount')"></el-input><span style="margin-left:10px;position:absolute;">元</span>
|
|
|
+ <template v-if="title == '修改项目'">
|
|
|
+ <span style="margin-left:63px;margin-right:10px;">修改原因</span>
|
|
|
+ <el-input v-model="addForm.changeContractReason" style="width:33%" clearable placeholder="合同金额修改原因" :disabled="!contractAmountReasonShow"></el-input>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
+
|
|
|
+
|
|
|
<el-form-item label="开始日期" prop="planStartDate" >
|
|
|
<el-date-picker v-model="addForm.planStartDate"
|
|
|
:editable="false" style="width:32%;"
|
|
@@ -1122,6 +1154,11 @@ a {
|
|
|
rowid: '',
|
|
|
phaseProjectDialog: false, // 项目阶段
|
|
|
levelList: [], // 项目级别
|
|
|
+ departmentList: [],
|
|
|
+ deptId: [],
|
|
|
+ contractAmountOld: 0,
|
|
|
+ contractAmountReasonShow: false,
|
|
|
+ centerNameDegree: ''
|
|
|
};
|
|
|
},
|
|
|
// 过滤器
|
|
@@ -1352,7 +1389,7 @@ a {
|
|
|
console.log(this.addForm)
|
|
|
},
|
|
|
tableSort({column, prop, order}){
|
|
|
- if(prop == 'inchargerName' || prop == 'customerName' || prop == 'projectCode' || prop == 'categoryName' || prop == 'projectName' || prop == 'status' || prop == 'currentStage'){
|
|
|
+ if(prop == 'inchargerName' || prop == 'customerName' || prop == 'projectCode' || prop == 'categoryName' || prop == 'projectName' || prop == 'status' || prop == 'currentStage' || prop == 'departmentName' || prop == 'associateDegreeNames'){
|
|
|
this.sortOrder = order
|
|
|
this.sortProp = prop
|
|
|
this.getList()
|
|
@@ -2838,6 +2875,10 @@ a {
|
|
|
parameter.sortProp = 'status'
|
|
|
}else if(this.sortProp == 'currentStage'){
|
|
|
parameter.sortProp = 'current_stage_name'
|
|
|
+ }else if(this.sortProp == 'departmentName'){
|
|
|
+ parameter.sortProp = 'dept_id'
|
|
|
+ }else if(this.sortProp == 'associateDegreeNames'){
|
|
|
+ parameter.sortProp = 'associate_degrees'
|
|
|
}
|
|
|
|
|
|
if(this.sortOrder == 'descending'){
|
|
@@ -2846,6 +2887,11 @@ a {
|
|
|
parameter.sortOrder = 1
|
|
|
}
|
|
|
}
|
|
|
+ if(this.deptId.length > 0) {
|
|
|
+ parameter.deptId = this.deptId[this.deptId.length - 1]
|
|
|
+ } else {
|
|
|
+ parameter.deptId = ''
|
|
|
+ }
|
|
|
this.http.post(this.port.project.listPage, parameter,
|
|
|
res => {
|
|
|
this.listLoading = false;
|
|
@@ -2862,6 +2908,7 @@ a {
|
|
|
}
|
|
|
list[i].userNames = str;
|
|
|
}
|
|
|
+ this.centerNameDegree = res.data.degrees
|
|
|
this.showColumnWidth = this.showColumn(list)
|
|
|
this.list = list;
|
|
|
this.total = res.data.total;
|
|
@@ -2910,8 +2957,20 @@ a {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ // 合同金额发生改变,需弹出修改原因的输入框
|
|
|
+ contractAmountChange(value){
|
|
|
+
|
|
|
+ if(this.contractAmountOld != value){
|
|
|
+ this.contractAmountReasonShow = true
|
|
|
+ }else{
|
|
|
+ this.contractAmountReasonShow = false
|
|
|
+ this.addForm.changeContractReason = ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
//显示新增界面
|
|
|
handleAdd(i, item) {
|
|
|
+ this.contractAmountReasonShow = false
|
|
|
if(i == -1) {
|
|
|
this.title = "新增项目";
|
|
|
this.addForm = {
|
|
@@ -2928,8 +2987,10 @@ a {
|
|
|
category:null,
|
|
|
creatorId: this.user.id,
|
|
|
projectMainId: '',
|
|
|
- outputValue: ''
|
|
|
+ outputValue: '',
|
|
|
+ deptId: []
|
|
|
}
|
|
|
+
|
|
|
if(this.user.companyId == '936') {
|
|
|
this.$set(this.addForm, 'contractCode', '')
|
|
|
this.$set(this.addForm, 'warrantyStartDate', '')
|
|
@@ -2961,7 +3022,21 @@ a {
|
|
|
if (names.length > 0) {
|
|
|
names = names.substring(0, names.length -1);
|
|
|
}
|
|
|
-
|
|
|
+ var listList = JSON.parse(JSON.stringify(item)),
|
|
|
+ arrList = [],
|
|
|
+ array = [];
|
|
|
+ if (listList.deptCascade != "0" && listList.deptCascade != null) {
|
|
|
+ if (listList.deptCascade.indexOf(",") > -1) {
|
|
|
+ arrList = listList.deptCascade.split(",");
|
|
|
+ } else {
|
|
|
+ arrList = [].concat(listList.deptCascade);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (var i in arrList) {
|
|
|
+ array.push(parseInt(arrList[i]));
|
|
|
+ }
|
|
|
+ console.log(array, '转换', listList)
|
|
|
this.addForm = {
|
|
|
id: item.id,
|
|
|
name: item.projectName,
|
|
@@ -2985,8 +3060,12 @@ a {
|
|
|
projectDesc: item.projectDesc,
|
|
|
projectMainId: item.projectMainId,
|
|
|
creatorId: item.creatorId,
|
|
|
- outputValue: item.outputValue
|
|
|
+ outputValue: item.outputValue,
|
|
|
+ deptId: array.reverse(),
|
|
|
+ changeContractReason: ''
|
|
|
}
|
|
|
+ this.contractAmountOld = item.contractAmount ? item.contractAmount : 0
|
|
|
+ console.log(this.addForm, '数据')
|
|
|
|
|
|
// 判断公司id是否等于936
|
|
|
if(this.user.companyId == '936') {
|
|
@@ -3219,6 +3298,9 @@ a {
|
|
|
if(this.addForm.contractAmount != null) {
|
|
|
formData.append("contractAmount", this.addForm.contractAmount);
|
|
|
}
|
|
|
+ if(this.contractAmountReasonShow){
|
|
|
+ formData.append("changeContractReason", this.addForm.changeContractReason);
|
|
|
+ }
|
|
|
if (this.projectBaseCostData != null) {
|
|
|
formData.append("projectBaseCostData", JSON.stringify(this.projectBaseCostData));
|
|
|
//计算总预算成本
|
|
@@ -3236,7 +3318,7 @@ a {
|
|
|
formData.append("chosenLeaders", JSON.stringify(this.chosenLeaders));
|
|
|
}
|
|
|
if (this.user.timeType.outputValueStatus == 1){
|
|
|
- formData.append("outputValue",this.addForm.outputValue)
|
|
|
+ formData.append("outputValue",this.addForm.outputValue ? this.addForm.outputValue : 0)
|
|
|
}
|
|
|
var listId = []
|
|
|
var listName = []
|
|
@@ -3290,9 +3372,11 @@ a {
|
|
|
if(this.user.companyId == '428') {
|
|
|
formData.append("projectCategorySub", this.addForm.projectCategorySub ? this.addForm.projectCategorySub : '');
|
|
|
}
|
|
|
-
|
|
|
+ if(this.addForm.deptId != null && this.addForm.deptId != '') {
|
|
|
+ formData.append("deptId", this.addForm.deptId[this.addForm.deptId.length - 1])
|
|
|
+ }
|
|
|
// formData.append("associateDegreeNames", listName)
|
|
|
- // console.log("addform",this.addForm);
|
|
|
+ console.log("addform",this.addForm);
|
|
|
// return
|
|
|
this.http.uploadFile(this.port.project.add,formData,
|
|
|
res => {
|
|
@@ -3324,7 +3408,12 @@ a {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
-
|
|
|
+ cascaderChange(e) {
|
|
|
+ // console.log(e)
|
|
|
+ // console.log(this.addForm)
|
|
|
+ // if(e.length )
|
|
|
+ console.log(e)
|
|
|
+ },
|
|
|
// 删除
|
|
|
deletePro(i, item) {
|
|
|
this.$confirm("确定要删除项目[" + item.name + "]吗?","删除项目", {
|
|
@@ -3435,7 +3524,44 @@ a {
|
|
|
|
|
|
detail(i) {
|
|
|
this.$router.push("/list/" + this.list[i].id + "/" + this.list[i].projectName);
|
|
|
- }
|
|
|
+ },
|
|
|
+ // 获取部门
|
|
|
+ getDepartmentList() {
|
|
|
+ this.http.post( this.port.manage.depList, {},
|
|
|
+ res => {
|
|
|
+ if (res.code == "ok") {
|
|
|
+ let dptlist = JSON.parse(JSON.stringify(res.data));
|
|
|
+ this.departmentList = this.changeArr(dptlist);
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },error => {
|
|
|
+ this.$message({
|
|
|
+ message: error,
|
|
|
+ type: "error"
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ changeArr(arr) {
|
|
|
+ for (var i = 0; i < arr.length; i++) {
|
|
|
+ if(arr[i].id != -1 && arr[i].id != 0) {
|
|
|
+ if (arr[i].children != null && arr[i].children.length>0) {
|
|
|
+ arr[i].children = this.changeArr(arr[i].children);
|
|
|
+ }
|
|
|
+ arr[i].id && (arr[i].value = arr[i].id);
|
|
|
+ delete arr[i].id;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(var i in arr) {
|
|
|
+ if(arr[i].id == -1 || arr[i].id == 0) {
|
|
|
+ arr.splice(i,1)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+ },
|
|
|
},
|
|
|
created() {
|
|
|
let height = window.innerHeight;
|
|
@@ -3478,6 +3604,9 @@ a {
|
|
|
} else {
|
|
|
this.importanceList = [{id:1,label:'正常'},{id:2,label:'紧急'},{id:3,label:'重要'},{id:4,label:'重要且紧急'}]
|
|
|
}
|
|
|
+
|
|
|
+ // 获取部门
|
|
|
+ this.getDepartmentList()
|
|
|
|
|
|
}
|
|
|
};
|