|
@@ -69,12 +69,44 @@
|
|
|
<span class="mg-r-10">项目名称</span>
|
|
|
<el-input v-model="projectForm.projectName" disabled style="width:300px;margin-right:30px;"></el-input>
|
|
|
<span class="mg-r-10">合同段名称</span>
|
|
|
- <el-select v-model="cId" placeholder="请选择">
|
|
|
+ <el-select v-model="cId" placeholder="请选择" @change="getUserByCondition">
|
|
|
<el-option label="全部" value=""></el-option>
|
|
|
<el-option v-for="item in contractList" :key="item.id" :label="item.contractName" :value="item.id"></el-option>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
+ <div class="flex jc-al-c mg-b-10">
|
|
|
+ <span>维护人员角色</span>
|
|
|
+ <avue-input-tree :check-strictly="true" v-model="rId" placeholder="请选择" type="tree" :dic="roleList" :props="treeProps"></avue-input-tree>
|
|
|
+ <!-- <el-select v-model="rId" clearable placeholder="请选择" @change="getUserByCondition">
|
|
|
+ <el-option v-for="item in roleList" :key="item.id" :label="item.title" :value="item.id"></el-option>
|
|
|
+ </el-select> -->
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-table :data="contractUserList" border height="500" style="width: 100%">
|
|
|
+ <el-table-column prop="name" label="姓名" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="postName" label="岗位" align="center"></el-table-column>
|
|
|
+ <el-table-column prop="phone" label="电话" align="center"></el-table-column>
|
|
|
+ <el-table-column label="操作" align="center">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ @click="handleDelete(scope.$index, scope.row)">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="flex jc-al-c mg-t-20">
|
|
|
+ <span>添加系内部人员</span>
|
|
|
+ <el-select v-model="userId" filterable placeholder="请输入搜索">
|
|
|
+ <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-button type="success" @click="addUserToProject">添加</el-button>
|
|
|
+ <el-button type="primary">创建新用户</el-button>
|
|
|
+ <el-button type="danger" @click="handleDeletes">全部删除</el-button>
|
|
|
+ </div>
|
|
|
+ <el-divider></el-divider>
|
|
|
</div>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
@@ -83,7 +115,8 @@
|
|
|
<div></div>
|
|
|
<div>
|
|
|
<el-button type="success" size="medium" @click="saveQuit">保存并退出</el-button>
|
|
|
- <el-button type="info" size="medium" @click="saveNext">保存并进入下一步</el-button>
|
|
|
+ <el-button type="info" size="medium" v-if="activeType != 1" @click="saveNext('p')">保存并返回上一步</el-button>
|
|
|
+ <el-button type="info" size="medium" v-if="activeType != 3" @click="saveNext('n')">保存并进入下一步</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -92,7 +125,9 @@
|
|
|
|
|
|
<script>
|
|
|
import {submitProject,getProjectDeatil} from "@/api/manager/projectinfo";
|
|
|
- import {findContractByProjectId} from "@/api/manager/contractinfo";
|
|
|
+ import {findContractByProjectId,saveUserInfoByProject,findUserListByCondition,
|
|
|
+ findUserByName,removeUsersByIds} from "@/api/manager/contractinfo";
|
|
|
+ import {getRoleTree} from "@/api/system/role";
|
|
|
import {getDictionary} from "@/api/system/dict";
|
|
|
import {mapGetters} from "vuex";
|
|
|
export default {
|
|
@@ -121,6 +156,16 @@
|
|
|
|
|
|
contractList:[],
|
|
|
cId:'',
|
|
|
+ rId:'',
|
|
|
+ roleList:[],
|
|
|
+ userId:'',
|
|
|
+ userList:[],
|
|
|
+ contractUserList:[],
|
|
|
+
|
|
|
+ treeProps:{
|
|
|
+ label:"title",
|
|
|
+ value:"id"
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -135,11 +180,10 @@
|
|
|
},
|
|
|
activeType: function (newValue) {
|
|
|
if(newValue == '3'){
|
|
|
- if(this.contractList.length < 1){
|
|
|
- findContractByProjectId(this.projectForm.id).then((res)=>{
|
|
|
- this.contractList = res.data.data;
|
|
|
- })
|
|
|
- }
|
|
|
+ this.getContractList();
|
|
|
+ this.getRoleList();
|
|
|
+ this.getUserByCondition();
|
|
|
+ this.getUserByName();
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -165,6 +209,14 @@
|
|
|
}
|
|
|
},
|
|
|
beforeLeave(activeName, oldActiveName){
|
|
|
+ if(oldActiveName == '1' && !this.projectForm.id){
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ message: "请先保存项目后,再进行项目的分配"
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
if(this.typeChang[oldActiveName]){
|
|
|
this.$confirm('检测到新编辑内容, 是否保存?', '提示', {
|
|
|
confirmButtonText: '确定',
|
|
@@ -205,7 +257,7 @@
|
|
|
});
|
|
|
this.$router.go(-1);
|
|
|
},
|
|
|
- async saveNext(){
|
|
|
+ async saveNext(type){
|
|
|
if(this.activeType == '1'){
|
|
|
let res = await this.saveProject();
|
|
|
this.projectForm.id = res.data.data.id;
|
|
@@ -216,13 +268,15 @@
|
|
|
});
|
|
|
this.typeChang[this.activeType] = false;
|
|
|
let num = Number(this.activeType);
|
|
|
- if(num >2){
|
|
|
- this.activeType = '1';
|
|
|
- }else{
|
|
|
- num++;
|
|
|
- this.activeType = num.toString();
|
|
|
+ if(type == 'n'){
|
|
|
+ num++;
|
|
|
+ }else if(type == 'p'){
|
|
|
+ num--;
|
|
|
}
|
|
|
+
|
|
|
+ this.activeType = num.toString();
|
|
|
},
|
|
|
+
|
|
|
saveProject(){
|
|
|
return new Promise((resolve, reject) => {
|
|
|
this.$refs['projectForm'].validate((valid) => {
|
|
@@ -235,6 +289,84 @@
|
|
|
})
|
|
|
},
|
|
|
|
|
|
+ addUserToProject(){
|
|
|
+ if(!this.userId){
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ message: "请先选择用户再进行添加"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!this.rId){
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ message: "请先选择维护人员角色再进行添加"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let list = [{
|
|
|
+ projectId:this.projectForm.id,
|
|
|
+ contractId:this.cId?this.cId:undefined,
|
|
|
+ userId:this.userId,
|
|
|
+ roleId:this.rId
|
|
|
+ }];
|
|
|
+ saveUserInfoByProject(list).then(()=>{
|
|
|
+ this.getUserByCondition();
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ getUserByCondition(){
|
|
|
+ findUserListByCondition({
|
|
|
+ cId:this.cId,
|
|
|
+ pId:this.projectForm.id,
|
|
|
+ postId:'',
|
|
|
+ rId:this.rId,
|
|
|
+ }).then((res)=>{
|
|
|
+ this.contractUserList = res.data.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ getUserByName(){
|
|
|
+ findUserByName('').then((res)=>{
|
|
|
+ this.userList = res.data.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ handleDelete(index,row){
|
|
|
+ this.$confirm('是否将该用户移除出合同段', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ removeUsersByIds(row.id).then(()=>{
|
|
|
+ this.contractUserList.splice(index,1);
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "删除成功!"
|
|
|
+ });
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ handleDeletes(){
|
|
|
+ this.$confirm('是否将所有用户移除出合同段', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ let ids = [];
|
|
|
+ this.contractUserList.forEach((element)=>{
|
|
|
+ ids.push(element.id);
|
|
|
+ })
|
|
|
+ removeUsersByIds(ids.join(',')).then(()=>{
|
|
|
+ this.contractUserList = [];
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "删除成功!"
|
|
|
+ });
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
getHighwayGradeList(){
|
|
|
if(this.highwayGradeList.length >1){
|
|
|
return;
|
|
@@ -248,6 +380,25 @@
|
|
|
this.highwayGradeList = res.data.data;
|
|
|
})
|
|
|
},
|
|
|
+
|
|
|
+ getContractList(){
|
|
|
+ if(this.contractList.length < 1){
|
|
|
+ findContractByProjectId(this.projectForm.id).then((res)=>{
|
|
|
+ this.contractList = res.data.data;
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getRoleList(){
|
|
|
+ if(this.roleList.length > 1){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ getRoleTree().then((res)=>{
|
|
|
+ this.roleList = res.data.data
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
};
|
|
|
</script>
|