ソースを参照

用户管理更新未完成

admin 3 年 前
コミット
6d3e5c9e57

+ 61 - 61
src/api/manager/projectinfo.js

@@ -1,83 +1,83 @@
 import request from '@/router/axios';
 
 export const submitProject = (projectInfo) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/submit',
-    method: 'post',
-    data: projectInfo
-  })
+    return request({
+        url: '/api/blade-manager/projectInfo/submit',
+        method: 'post',
+        data: projectInfo
+    })
 }
 
+//项目类型
 export const getProjectList = (current, size, params) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/list',
-    method: 'get',
-    params: {
-      ...params,
-      current,
-      size,
-    }
-  })
+    return request({
+        url: '/api/blade-manager/projectInfo/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
 }
 
 export const getProjectDeatil = (id) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/detail',
-    method: 'get',
-    params: {
-      id
-    }
-  })
+    return request({
+        url: '/api/blade-manager/projectInfo/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
 }
 
-export const getProjectDeatilWbsId = (id,ReferenceWbsTemplateId,ReferenceWbsTemplateType) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/detail2',
-    method: 'get',
-    params: {
-      id,
-      ReferenceWbsTemplateId,
-      ReferenceWbsTemplateType
-    }
-  })
+export const getProjectDeatilWbsId = (id, ReferenceWbsTemplateId, ReferenceWbsTemplateType) => {
+    return request({
+        url: '/api/blade-manager/projectInfo/detail2',
+        method: 'get',
+        params: {
+            id,
+            ReferenceWbsTemplateId,
+            ReferenceWbsTemplateType
+        }
+    })
 }
 
 export const findWbsTreeList = (type) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/findWbsTreeList',
-    method: 'get',
-    params: {
-      type
-    }
-  })
+    return request({
+        url: '/api/blade-manager/projectInfo/findWbsTreeList',
+        method: 'get',
+        params: {
+            type
+        }
+    })
 }
 
-export const findProjectTree = (projectId,wbsId) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/tree',
-    method: 'get',
-    params: {
-      projectId,
-      wbsId
-    }
-  })
+export const findProjectTree = (projectId, wbsId) => {
+    return request({
+        url: '/api/blade-manager/projectInfo/tree',
+        method: 'get',
+        params: {
+            projectId,
+            wbsId
+        }
+    })
 }
 
 export const submitWbsTreeInProject = (obj) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/submitWbsTreeInProject',
-    method: 'post',
-    data: obj
-  })
+    return request({
+        url: '/api/blade-manager/projectInfo/submitWbsTreeInProject',
+        method: 'post',
+        data: obj
+    })
 }
 
 export const removeProject = (ids) => {
-  return request({
-    url: '/api/blade-manager/projectInfo/remove',
-    method: 'post',
-    params: {
-      ids
-    }
-  })
-}
-
+    return request({
+        url: '/api/blade-manager/projectInfo/remove',
+        method: 'post',
+        params: {
+            ids
+        }
+    })
+}

+ 28 - 0
src/api/system/role.js

@@ -86,4 +86,32 @@ export const getRoleTreeById = (roleId) => {
             roleId,
         }
     })
+}
+
+export const treeUser = (roleId) => {
+    return request({
+        url: '/api/blade-system/role/treeTow',
+        method: 'get',
+        params: {
+            roleId,
+        }
+    })
+}
+
+//编辑加载项目合同段信息
+export const findProjectAndContractList = (params) => {
+    return request({
+        url: '/api/blade-manager/projectInfo/findProjectAndContractList',
+        method: 'get',
+        params
+    })
+}
+
+//编辑新增项目合同段信息
+export const saveUserInfoByProjectTow = (params) => {
+    return request({
+        url: '/api/blade-manager/contractInfo/saveUserInfoByProjectTow  ',
+        method: 'get',
+        params
+    })
 }

+ 2 - 2
src/views/manager/contractinfo/detail.vue

@@ -939,8 +939,8 @@ export default {
       findAllUserByCondition({
         "cId": this.contractForm.id,
         "pId": this.pid,
-        "postId": this.postId,
-        "rId": this.rId
+        // "postId": this.postId,
+        "rId": this.postId
       }).then((res) => {
         this.contractUserList = res.data.data;
       })

+ 71 - 52
src/views/manager/projectinfo/list.vue

@@ -11,7 +11,7 @@
           <el-option
             v-for="item in projectList"
             :key="item.id"
-            :label="item.projectName"
+            :label="item.projectAlias"
             :value="item.id"
           ></el-option>
         </el-select>
@@ -60,11 +60,30 @@
       <div class="flex jc-sb pd-b-10">
         <span class="flex1 mg-r-20">{{curProjiect.projectName}}</span>
         <div>
-          <el-button size="small" @click="editTree" type="success">WBS树管理</el-button>
-          <el-button size="small" @click="editProject" type="primary">编辑项目信息</el-button>
-          <el-button size="small" @click="addContract" type="info">创建新合同段</el-button>
-          <el-button size="small" @click="dellProject" type="danger">删除项目</el-button>
-          <el-button size="small" @click="projectVisible = false">返回</el-button>
+          <el-button
+            size="small"
+            @click="editTree"
+            type="success"
+          >WBS树管理</el-button>
+          <el-button
+            size="small"
+            @click="editProject"
+            type="primary"
+          >编辑项目信息</el-button>
+          <el-button
+            size="small"
+            @click="addContract"
+            type="info"
+          >创建新合同段</el-button>
+          <el-button
+            size="small"
+            @click="dellProject"
+            type="danger"
+          >删除项目</el-button>
+          <el-button
+            size="small"
+            @click="projectVisible = false"
+          >返回</el-button>
         </div>
       </div>
       <div
@@ -119,7 +138,7 @@
 </template>
 
 <script>
-import { getProjectList,removeProject } from "@/api/manager/projectinfo";
+import { getProjectList, removeProject } from "@/api/manager/projectinfo";
 import { findContractByProjectId, removeContractInfo } from "@/api/manager/contractinfo";
 // import {getDictionary} from "@/api/system/dict";
 import { mapGetters } from "vuex";
@@ -192,48 +211,48 @@ export default {
       }
     },
 
-      addContract(){
-        this.$router.push({
-          path:'/contract/detail',
-          query:{pid:this.curProjiect.id}
-        });
-      },
-      editContract(item){
-        this.$router.push({
-          path:'/contract/detail',
-          query:{
-            pid:item.pid,
-            cid:item.id,
-          }
-        });
-      },
-      editProject(){
-        this.$router.push({
-          path:'/manager/projectinfo/detail',
-          query:{
-            id:this.curProjiect.id
-          }
-        });
-      },
-      contractDetail(item,type){
-        this.$router.push({
-          path:'/contract/detail',
-          query:{
-            pid:item.pid,
-            cid:item.id,
-            type,
-          }
-        });
-      },
-      editTree(){
-        this.$router.push({
-          path:'/project/tree',
-          query:{
-            pid:this.curProjiect.id,
-            wbsid:this.curProjiect.referenceWbsTemplateId
-          }
-        });
-      },
+    addContract () {
+      this.$router.push({
+        path: '/contract/detail',
+        query: { pid: this.curProjiect.id }
+      });
+    },
+    editContract (item) {
+      this.$router.push({
+        path: '/contract/detail',
+        query: {
+          pid: item.pid,
+          cid: item.id,
+        }
+      });
+    },
+    editProject () {
+      this.$router.push({
+        path: '/manager/projectinfo/detail',
+        query: {
+          id: this.curProjiect.id
+        }
+      });
+    },
+    contractDetail (item, type) {
+      this.$router.push({
+        path: '/contract/detail',
+        query: {
+          pid: item.pid,
+          cid: item.id,
+          type,
+        }
+      });
+    },
+    editTree () {
+      this.$router.push({
+        path: '/project/tree',
+        query: {
+          pid: this.curProjiect.id,
+          wbsid: this.curProjiect.referenceWbsTemplateId
+        }
+      });
+    },
 
     delContract (item, index) {
       this.$confirm('是否删除【' + item.contractName + '】?', '提示', {
@@ -250,8 +269,8 @@ export default {
         })
       })
     },
-    dellProject(){
-      if(this.contractList.length){
+    dellProject () {
+      if (this.contractList.length) {
         this.$message({
           type: "warning",
           message: "只能删除下面无合同段的项目!"
@@ -264,7 +283,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        removeProject(this.curProjiect.id).then(()=>{
+        removeProject(this.curProjiect.id).then(() => {
           this.$message({
             type: "success",
             message: "删除成功!"

+ 356 - 43
src/views/system/user.vue

@@ -36,7 +36,135 @@
           @refresh-change="refreshChange"
           @on-load="onLoad"
         >
+          <!-- 自 定义按钮 -->
+          <template
+            slot-scope="{row,index}"
+            slot="menu"
+          >
+            <el-link
+              :underline="false"
+              type="primary"
+              icon="el-icon-edit"
+              size="small"
+              @click="$refs.crud.rowView(row,index)"
+            >查看</el-link>
+            <el-link
+              class="marleft10"
+              :underline="false"
+              type="primary"
+              icon="el-icon-edit"
+              size="small"
+              @click="editKJ(row, index)"
+            >编辑</el-link>
+            <el-link
+              class="marleft10"
+              :underline="false"
+              type="primary"
+              icon="el-icon-delete"
+              size="small"
+              @click="$refs.crud.rowDel(row,index)"
+            >删除</el-link>
+          </template>
+
+          <!-- 参建项目 -->
+          <template
+            slot-scope="{type,disabled}"
+            slot="projectAndUserListForm"
+          >
+            <div
+              class="flexStar"
+              v-for="(item,key) in fromss.projectAndUserList"
+              :key='key'
+            >
+              <el-input
+                v-model="fromss.projectAndUserList[key].projectName"
+                :disabled="true"
+              ></el-input>
+              <el-input
+                class="marleft10"
+                v-model="fromss.projectAndUserList[key].contractName"
+                :disabled="true"
+              ></el-input>
+              <el-input
+                class="marleft10"
+                v-model="fromss.projectAndUserList[key].roleType +' | '+fromss.projectAndUserList[key].roleName"
+                :disabled="true"
+              ></el-input>
+            </div>
+          </template>
+
+          <!-- 参与项目自定义表单 -->
+          <template
+            slot-scope="{type,disabled}"
+            slot="projectIdForm"
+          >
+            <el-select
+              v-model="fromss.projectId"
+              placeholder="请选择"
+            >
+              <el-option
+                v-for="item in projectData"
+                :key="item.id"
+                :label="item.projectName"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </template>
+          <!-- 合同段自定义表单 -->
+          <template
+            slot-scope="{type,disabled}"
+            slot="contractIdForm"
+          >
+            <el-select
+              v-model="fromss.contractId"
+              placeholder="请选择"
+            >
+              <el-option
+                v-for="item in contractData"
+                :key="item.id"
+                :label="item.projectName"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </template>
+          <!-- 用户类型自定义表单 -->
+          <template
+            slot-scope="{type,disabled}"
+            slot="roleIdsForm"
+          >
+            <div class="flexStar">
+              <el-select
+                v-model="fromss.roleIds"
+                placeholder="请选择"
+              >
+                <el-option
+                  v-for="item in roleIdsData"
+                  :key="item.id"
+                  :label="item.roleName"
+                  :value="item.roleId"
+                >
+                </el-option>
+              </el-select>
+              <el-button
+                v-show="type!=='view'"
+                class="marleft10"
+                type="warning"
+                size="mini"
+                @click="addProject(type)"
+              >确认添加</el-button>
+            </div>
+          </template>
+
           <template slot="menuLeft">
+            <el-button
+              type="primary"
+              size="small"
+              icon="el-icon-plus"
+              @click="addKJ()"
+            >新 增
+            </el-button>
             <el-button
               type="danger"
               size="small"
@@ -231,9 +359,12 @@ import {
   grant,
   resetPassword, unlock
 } from "@/api/system/user";
+import { getProjectList } from "@/api/manager/projectinfo";
+
+import { findContractByProjectId } from "@/api/manager/contractinfo";
 import { exportBlob } from "@/api/common";
 import { getDeptTree, getDeptLazyTree } from "@/api/system/dept";
-import { getRoleTree } from "@/api/system/role";
+import { getRoleTree, treeUser, findProjectAndContractList } from "@/api/system/role";
 import { getPostList } from "@/api/system/post";
 import { mapGetters } from "vuex";
 import website from '@/config/website';
@@ -318,6 +449,16 @@ export default {
           children: 'children'
         }
       },
+      fromss: {
+        userId: '',//
+        projectAndUserList: [],
+        projectId: '',//参与项项目
+        contractId: '',//合同段
+        roleIds: '',//用户类型
+      },
+      projectData: [],//参与项项目
+      contractData: [],//合同段
+      roleIdsData: [],//用户类型
       option: {
         height: 'auto',
         calcHeight: 80,
@@ -327,7 +468,10 @@ export default {
         border: true,
         index: true,
         selection: true,
-        viewBtn: true,
+        addBtn: false,
+        // viewBtn: true,
+        editBtn: false,
+        delBtn: false,
         dialogType: 'drawer',
         dialogClickModal: false,
         column: [
@@ -462,16 +606,6 @@ export default {
             prop: 'detailInfo',
             icon: 'el-icon-s-order',
             column: [
-              {
-                label: "用户昵称",
-                prop: "name",
-                hide: true,
-                rules: [{
-                  required: true,
-                  message: "请输入用户昵称",
-                  trigger: "blur"
-                }]
-              },
               {
                 label: "用户姓名",
                 prop: "realName",
@@ -497,38 +631,20 @@ export default {
                 overHidden: true
               },
               {
-                label: "用户性别",
-                prop: "sex",
+                label: "账号状态",
+                prop: "status",
                 type: "select",
+                hide: true,
                 dicData: [
                   {
-                    label: "",
+                    label: "启用",
                     value: 1
                   },
                   {
-                    label: "",
-                    value: 2
+                    label: "禁用",
+                    value: 0
                   },
-                  {
-                    label: "未知",
-                    value: 3
-                  }
                 ],
-                hide: true
-              },
-              {
-                label: "用户生日",
-                type: "date",
-                prop: "birthday",
-                format: "yyyy-MM-dd hh:mm:ss",
-                valueFormat: "yyyy-MM-dd hh:mm:ss",
-                hide: true
-              },
-              {
-                label: "账号状态",
-                prop: "statusName",
-                hide: true,
-                display: false
               }
             ]
           },
@@ -593,6 +709,49 @@ export default {
               },
             ]
           },
+          {
+            label: '职能描述',
+            prop: 'dutyInfo',
+            icon: 'el-icon-s-custom',
+            column: [
+              {
+                label: "参建项目",
+                prop: "projectAndUserList",
+                span: 24,
+              },
+              {
+                label: "参与项目",
+                prop: "projectId",
+                span: 16,
+              },
+              {
+                label: "合同段",
+                prop: "contractId",
+                span: 16,
+              }, {
+                label: "用户类型",
+                prop: "roleIds",
+                span: 16,
+              }, {
+                label: "单位名称",
+                prop: "companyName",
+                span: 16,
+              }, {
+                label: "职位",
+                prop: "position",
+                span: 16,
+              },
+              {
+                label: "允许登录",
+                type: "select",
+                span: 16,
+                prop: "status",
+                dicData: [
+                  { value: 1, label: '是' },
+                  { value: 0, label: '否' }],
+              },
+            ]
+          },
         ]
       },
       data: [],
@@ -732,7 +891,14 @@ export default {
         const column = this.findObject(this.excelOption.column, "excelFile");
         column.action = `/api/blade-user/import-user?isCovered=${this.excelForm.isCovered}`;
       }
-    }
+    },
+    'fromss.projectId': function () {
+      if (this.fromss.projectId) {
+        this.findContractByProjectId(this.fromss.projectId)
+      } else {
+        this.contractData = []
+      }
+    },
   },
   computed: {
     ...mapGetters(["userInfo", "permission"]),
@@ -767,6 +933,154 @@ export default {
     }
   },
   methods: {
+    //#region 弹框事件及方法
+    addKJ () {
+      this.getProjectList()
+      this.treeUser()
+      this.$refs.crud.rowAdd()
+      this.fromss.projectAndUserList = []
+      this.fromss.projectId = ''
+      this.fromss.userId = ''
+      this.fromss.contractId = ''
+      this.fromss.projectAndUserList = ''
+      this.fromss.roleIds = ''  //合同段Id
+      this.contractData = []       //合同段枚举
+    },
+    addProject (type) {//确定添加参建项目
+      if (type == 'add') {
+        this.addfangfa()
+      } else {
+        const tag = true
+        if (!this.fromss.projectId) {
+          this.$message({
+            type: "error",
+            message: "请选择参与项目!"
+          })
+          return tag = false
+        }
+        if (!this.fromss.contractId) {
+          this.$message({
+            type: "error",
+            message: "请选择合同段!"
+          })
+          return tag = false
+        }
+        if (!this.fromss.roleIds) {
+          this.$message({
+            type: "error",
+            message: "请选择用户类型!"
+          })
+          return tag = false
+        }
+        if (tag) {
+          this.saveUserInfoByProjectTow({
+            projectId: this.fromss.projectId,
+            contractId: this.fromss.contractId,
+            roleId: this.fromss.roleIds,
+            userId: this.fromss.userId
+          })
+        }
+      }
+    },
+    addfangfa () {//添加时确定添加按钮方法处理
+      // this.fromss.projectAndUserList
+      const tag = true
+      if (!this.fromss.projectId) {
+        this.$message({
+          type: "error",
+          message: "请选择参与项目!"
+        })
+        return tag = false
+      }
+      if (!this.fromss.contractId) {
+        this.$message({
+          type: "error",
+          message: "请选择合同段!"
+        })
+        return tag = false
+      }
+      if (!this.fromss.roleIds) {
+        this.$message({
+          type: "error",
+          message: "请选择用户类型!"
+        })
+        return tag = false
+      }
+      let tas = {
+        projectName: '',
+        contractName: '',
+        roleType: '',
+        roleName: ''
+      }
+      this.projectData.forEach(val => {
+        if (val.id === this.fromss.projectId) {
+          tas.projectName = val.projectName
+        }
+      })
+      this.contractData.forEach(val => {
+        if (val.id === this.fromss.contractId) {
+          tas.contractName = val.projectName
+        }
+      })
+      this.roleIdsData.forEach(val => {
+        if (val.roleId === this.fromss.contractId) {
+          tas.roleName = val.roleName
+        }
+      })
+      this.fromss.projectAndUserList.push({
+        projectId: this.fromss.projectId,
+        contractId: this.fromss.contractId,
+        roleId: this.fromss.roleIds,
+        projectName: '',
+        contractName: '',
+        roleName: ''
+      })
+    },
+    editKJ (row, index) {//编辑用户
+      console.log(row);
+      this.fromss.userId = row.id  //用户ID
+      this.fromss.contractId = ''  //合同段Id
+      this.contractData = []       //合同段枚举
+      this.getProjectList()
+      this.treeUser()
+      this.findProjectAndContractList(row.id)
+      this.$refs.crud.rowEdit(row, index)
+    },
+    async getProjectList () {//项目类型
+      const { data: res } = await getProjectList()
+      console.log(res);
+      if (res.code === 200) {
+        this.projectData = res.data.records
+      }
+    },
+    async findContractByProjectId (pId) {//合同段
+      const { data: res } = await findContractByProjectId(pId)
+      console.log(res);
+      if (res.code === 200) {
+        this.contractData = res.data
+      }
+    },
+    async treeUser () {//获取用户类型枚举
+      const { data: res } = await treeUser()
+      console.log(res);
+      if (res.code === 200) {
+        this.roleIdsData = res.data
+      }
+    },
+    async findProjectAndContractList (userId) {//编辑获取参建项目
+      const { data: res } = await findProjectAndContractList({ userId })
+      console.log(res);
+      if (res.code === 200) {
+        this.fromss.projectAndUserList = res.data
+      }
+    },
+    async saveUserInfoByProjectTow (da) {//编辑添加参建项目
+      const { data: res } = await saveUserInfoByProjectTow(da)
+      console.log(res);
+    },
+    //#endregion
+
+    //#region 甘云杰
     nodeClick (data) {
       this.treeDeptId = data.id;
       this.page.currentPage = 1;
@@ -797,11 +1111,11 @@ export default {
         this.onLoad(this.page);
       });
     },
-    rowSave (row, done, loading) {
+    rowSave (row, done, loading) { //新增保存
       row.deptId = row.deptId.join(",");
       row.roleId = row.roleId.join(",");
       row.postId = row.postId.join(",");
-      add(row).then(() => {
+      add({ ...row, projectAndUserList: this.fromss.projectAndUserList }).then(() => {
         this.initFlag = false;
         this.onLoad(this.page);
         this.$message({
@@ -810,11 +1124,10 @@ export default {
         });
         done();
       }, error => {
-        window.console.log(error);
         loading();
       });
     },
-    rowUpdate (row, index, done, loading) {
+    rowUpdate (row, index, done, loading) {//修改按钮
       row.deptId = row.deptId.join(",");
       row.roleId = row.roleId.join(",");
       row.postId = row.postId.join(",");
@@ -827,7 +1140,6 @@ export default {
         });
         done();
       }, error => {
-        window.console.log(error);
         loading();
       });
     },
@@ -1066,7 +1378,8 @@ export default {
         this.platformLoading = false;
         this.selectionClear();
       });
-    }
+    },
+    //#endregion
   }
 };
 </script>

+ 1 - 1
vue.config.js

@@ -26,7 +26,7 @@ module.exports = {
         proxy: {
             '/api': {
                 //本地服务接口地址
-                target: 'http://192.168.3.64', //
+                target: 'http://192.168.3.76', //
                 // target: 'http://192.168.3.13', //
                 //远程演示服务地址,可用于直接启动项目
                 //target: 'https://saber.bladex.vip/api',