sunyadv 5 年之前
父节点
当前提交
9e40af30fe

+ 5 - 1
ys_vue/src/port.js

@@ -8,8 +8,12 @@ export default {
     },
     project: {
         userList: '/user/list',  //用户列表
-        addUser: '/user/add',  //添加用户
+        addUser: '/user/add',  //添加或修改用户
         delUser: '/user/delete',  //删除用户
+
+        projectList: '/project/list', //项目列表
+        addProject: '/project/add', //添加或修改项目
+        getUserList: '/project/getUserList', //获取人员列表
     },
     // 基础管理
     base: {

+ 4 - 58
ys_vue/src/routes.js

@@ -1,16 +1,7 @@
 import Login from './views/Login.vue'
 import NotFound from './views/404.vue'
 import Home from './views/Home.vue'
-import Main from './views/Main.vue'
 
-import Table from './views/nav1/Table.vue'
-import Form from './views/nav1/Form.vue'
-import user from './views/nav1/user.vue'
-import Page4 from './views/nav2/Page4.vue'
-import Page5 from './views/nav2/Page5.vue'
-import Page6 from './views/nav3/Page6.vue'
-import echarts from './views/charts/echarts.vue'
-//新页面
 import map from './views/map/map.vue'
 
 import detection from './views/detection/detection.vue'
@@ -22,8 +13,6 @@ import competence from './views/project/competence.vue'
 
 import moldList from './views/mold/moldList.vue'
 import moldFile from './views/mold/moldFile.vue'
-import moldDownload from './views/mold/moldDownload.vue'
-import moldDetail from './views/mold/moldDetail.vue'
 
 import role from './views/base/role.vue'
 import comp from './views/base/comp.vue'
@@ -36,47 +25,6 @@ let routes = [
         name: '',
         hidden: true
     },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '导航一',
-    //     iconCls: 'el-icon-message',//图标样式class
-    //     children: [
-    //         { path: '/main', component: Main, name: '主页', hidden: true },
-    //         { path: '/table', component: Table, name: 'Table' },
-    //         { path: '/form', component: Form, name: 'Form' },
-    //         { path: '/user', component: user, name: '列表' },
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '导航二',
-    //     iconCls: 'fa fa-id-card-o',
-    //     children: [
-    //         { path: '/page4', component: Page4, name: '页面4' },
-    //         { path: '/page5', component: Page5, name: '页面5' }
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: '',
-    //     iconCls: 'fa fa-address-card',
-    //     leaf: true,//只有一个节点
-    //     children: [
-    //         { path: '/page6', component: Page6, name: '导航三' }
-    //     ]
-    // },
-    // {
-    //     path: '/',
-    //     component: Home,
-    //     name: 'Charts',
-    //     iconCls: 'fa fa-bar-chart',
-    //     children: [
-    //         { path: '/echarts', component: echarts, name: 'echarts' }
-    //     ]
-    // },
     // 地图概览
     {
         path: '/',
@@ -97,7 +45,7 @@ let routes = [
         leaf: true,//只有一个节点
         children: [
             { path: '/detection', component: detection, name: '运行检测' },
-            { path: '/detection/:id', component: maintenance, name: '运行检测详情', hidden: true }
+            { path: '/detection/:id', component: maintenance, name: '运行检测详情',hidden: true }
         ]
     },
     // 项目管理
@@ -108,7 +56,7 @@ let routes = [
         iconCls: 'iconfont icon-ic_dashboard',
         children: [
             { path: '/project', component: project, name: '项目列表' },
-            { path: '/staff', component: staff, name: '人员管理' },
+            { path: '/staff', component: staff, name: '人员管理'},
             { path: '/competence', component: competence, name: '权限管理' }
         ]
     },
@@ -120,9 +68,7 @@ let routes = [
         iconCls: 'iconfont icon-moxing',
         children: [
             { path: '/moldList', component: moldList, name: '模具列表' },
-            { path: '/moldDetail/:id', component: moldDetail, name: '模具详情', hidden: true },
-            { path: '/moldFile', component: moldFile, name: '文档审批' },
-            { path: '/moldDownload', component: moldDownload, name: '文档下载' }
+            { path: '/moldFile', component: moldFile, name: '模具文档' }
         ]
     },
     // 基础管理
@@ -132,7 +78,7 @@ let routes = [
         name: '基础管理',
         iconCls: 'iconfont icon-setting-fill',
         children: [
-            { path: '/role', component: role, name: '角色管理' },
+            // { path: '/role', component: role, name: '角色管理' },
             { path: '/comp', component: comp, name: '公司管理' },
             { path: '/factory', component: factory, name: '工厂管理' }
         ]

+ 10 - 150
ys_vue/src/views/Home.vue

@@ -17,6 +17,9 @@
 						<el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
 					</el-dropdown-menu>
 				</el-dropdown>
+                <el-badge is-dot class="itemNew">
+                    <i class="el-icon-message-solid" style="font-size:24px"></i>
+                </el-badge>
 			</el-col>
 		</el-col>
 		<el-col :span="24" class="main">
@@ -86,19 +89,11 @@
 	export default {
 		data() {
 			return {
+                user: sessionStorage.getItem('user'),
 				sysName:'云塑网后台管理系统',
 				collapsed:false,
 				sysUserName: '',
-				form: {
-					name: '',
-					region: '',
-					date1: '',
-					date2: '',
-					delivery: false,
-					type: [],
-					resource: '',
-					desc: ''
-                },
+				
                 editPassWord: false,
                 editLoading: false,
                 addForm: {
@@ -174,10 +169,10 @@
             }
         },
 		mounted() {
-			var user = sessionStorage.getItem('user');
-			if (user) {
-				user = JSON.parse(user);
-				this.sysUserName = user.username || '';
+			if (this.user) {
+                var user = JSON.parse(this.user);
+                this.user = user;
+                this.sysUserName = user.username || '';
             } else {
                 this.$router.push('/login');
             }
@@ -186,139 +181,4 @@
 
 </script>
 
-<style scoped lang="scss">
-	@import '~scss_vars';
-	
-    .el-menu-vertical-demo i {
-        margin-right: 10px;
-    }
-
-	.container {
-		position: absolute;
-		top: 0px;
-		bottom: 0px;
-		width: 100%;
-		.header {
-			height: 60px;
-			line-height: 60px;
-			background: $color-primary;
-			color:#fff;
-			.userinfo {
-				text-align: right;
-				padding-right: 35px;
-				float: right;
-				.userinfo-inner {
-					cursor: pointer;
-					color:#fff;
-					img {
-						width: 40px;
-						height: 40px;
-						border-radius: 20px;
-						margin: 10px 10px 10px 10px;
-						// float: right;
-                        float: left;
-					}
-				}
-			}
-			.logo {
-				//width:230px;
-				height:60px;
-				font-size: 21px;
-				padding-left:20px;
-				padding-right:20px;
-				border-color: rgba(238,241,146,0.3);
-				border-right-width: 1px;
-				border-right-style: solid;
-				img {
-					width: 40px;
-					float: left;
-					margin: 10px 10px 10px 18px;
-				}
-				.txt {
-					color:#fff;
-				}
-			}
-			.logo-width{
-				width:230px;
-			}
-			.logo-collapse-width{
-				width:60px
-			}
-			.tools{
-				padding: 0px 23px;
-				width:14px;
-				height: 60px;
-				line-height: 60px;
-				cursor: pointer;
-			}
-		}
-		.main {
-			display: flex;
-			// background: #324057;
-			position: absolute;
-			top: 60px;
-			bottom: 0px;
-			overflow: hidden;
-			aside {
-				flex:0 0 230px;
-				width: 230px;
-				// position: absolute;
-				// top: 0px;
-				// bottom: 0px;
-				.el-menu{
-					height: 100%;
-				}
-				.collapsed{
-					width:60px;
-					.item{
-						position: relative;
-					}
-					.submenu{
-						position:absolute;
-						top:0px;
-						left:60px;
-						z-index:99999;
-						height:auto;
-						display:none;
-					}
-
-				}
-			}
-			.menu-collapsed{
-				flex:0 0 60px;
-				width: 60px;
-			}
-			.menu-expanded{
-				flex:0 0 230px;
-				width: 230px;
-			}
-			.content-container {
-				// background: #f8f8f8;
-                //f1f2f7
-				flex:1;
-				// position: absolute;
-				// right: 0px;
-				// top: 0px;
-				// bottom: 0px;
-				// left: 230px;
-				// overflow-y: scroll;
-				padding: 20px;
-				.breadcrumb-container {
-					//margin-bottom: 15px;
-					.title {
-						width: 200px;
-						float: left;
-						color: #475669;
-					}
-					.breadcrumb-inner {
-						float: right;
-					}
-				}
-				.content-wrapper {
-					background-color: #fff;
-					box-sizing: border-box;
-				}
-			}
-		}
-	}
-</style>
+<style scoped lang="scss">

+ 1 - 1
ys_vue/src/views/Login.vue

@@ -9,7 +9,7 @@
                 <el-input type="text" v-model="ruleForm.account" autocomplete="off" placeholder="账号" clearable prefix-icon="el-icon-user-solid"></el-input>
             </el-form-item>
             <el-form-item class="login-input" prop="password">
-                <el-input type="password" v-model="ruleForm.password" autocomplete="off" placeholder="密码" show-password prefix-icon="el-icon-lock"></el-input>
+                <el-input type="password" v-model="ruleForm.password" @keyup.enter.native="handleSubmit" autocomplete="off" placeholder="密码" show-password prefix-icon="el-icon-lock"></el-input>
             </el-form-item>
             <!-- <el-checkbox v-model="checked" checked class="remember">记住密码</el-checkbox> -->
             <el-form-item class="login-button" style="width:100%;">

+ 71 - 39
ys_vue/src/views/base/role.vue

@@ -19,7 +19,8 @@
 		<el-table :data="list" highlight-current-row :height="tableHeight" v-loading="listLoading" style="width: 100%;">
             <el-table-column type="index" width="60"></el-table-column>
 			<el-table-column prop="roleName" label="角色名称" width="120" sortable></el-table-column>
-			<el-table-column prop="sex" label="权限">
+            <el-table-column prop="subordinate" label="角色类型" width="120" sortable></el-table-column>
+			<el-table-column label="权限">
                 <template slot-scope="scope">
                     <el-col :span="2" v-if="scope.row.uploadPower == 1">
                         <el-tag size="medium">上传</el-tag>
@@ -59,24 +60,34 @@
         <!--新增界面-->
 		<el-dialog title="新增角色" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass='customWidth'>
 			<el-form :model="addForm" label-width="100px" :rules="formRules" ref="addForm">
-				<el-form-item label="角色名称" prop="roleName">
-					<el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
-				</el-form-item>
-				<el-form-item label="权限配置">
-                    <el-row>
-                        <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
-                            <el-checkbox v-model="addForm[item.label]">{{item.name}}</el-checkbox>
-                        </el-col>
-                    </el-row>
-					 <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
-                        <el-table-column prop="name" label="名称" width="80"></el-table-column>
-                        <el-table-column prop="role" label="权限">
-                            <template slot-scope="scope">
-                                <div v-for="(item,index) in scope.row.role"></div>
-                            </template>
-                        </el-table-column>
-                    </el-table> -->
-				</el-form-item>
+                <el-col :span="12">
+                    <el-form-item label="角色名称" prop="roleName">
+                        <el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="角色类型" prop="subordinate">
+                        <el-select v-model="addForm.subordinate" clearable filterable placeholder="请选择角色类型" style="width:202px">
+                            <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="权限配置">
+                            <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
+                                <el-checkbox v-model="addForm[item.label]">{{item.name}}</el-checkbox>
+                            </el-col>
+                        <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
+                            <el-table-column prop="name" label="名称" width="80"></el-table-column>
+                            <el-table-column prop="role" label="权限">
+                                <template slot-scope="scope">
+                                    <div v-for="(item,index) in scope.row.role"></div>
+                                </template>
+                            </el-table-column>
+                        </el-table> -->
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click.native="addFormVisible = false">取消</el-button>
@@ -87,24 +98,36 @@
 		<!--编辑界面-->
 		<el-dialog title="编辑人员" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass='customWidth'>
 			<el-form :model="editForm" label-width="100px" :rules="formRules" ref="editForm">
-				<el-form-item label="角色名称" prop="roleName">
-					<el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
-				</el-form-item>
-				<el-form-item label="权限配置">
-                    <el-row>
-                        <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
-                            <el-checkbox v-model="editForm[item.label]" :checked="editForm[item.label]">{{item.name}}</el-checkbox>
-                        </el-col>
-                    </el-row>
-					 <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
-                        <el-table-column prop="name" label="名称" width="80"></el-table-column>
-                        <el-table-column prop="role" label="权限">
-                            <template slot-scope="scope">
-                                <div v-for="(item,index) in scope.row.role"></div>
-                            </template>
-                        </el-table-column>
-                    </el-table> -->
-				</el-form-item>
+                <el-col :span="12">
+                    <el-form-item label="角色名称" prop="roleName">
+                        <el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="角色类型" prop="subordinate">
+                        <el-select v-model="editForm.subordinate" clearable filterable placeholder="请选择角色类型" style="width:202px">
+                            <el-option v-for="item in team" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="权限配置">
+                        <el-row>
+                            <el-col :span="6" v-for="(item,index) in roleList" :key="item.val" style="text-align:center;">
+                                <el-checkbox v-model="editForm[item.label]" :checked="editForm[item.label]">{{item.name}}</el-checkbox>
+                            </el-col>
+                        </el-row>
+                        <!-- <el-table :data="roleList" border :show-header="false" style="width: 100%">
+                            <el-table-column prop="name" label="名称" width="80"></el-table-column>
+                            <el-table-column prop="role" label="权限">
+                                <template slot-scope="scope">
+                                    <div v-for="(item,index) in scope.row.role"></div>
+                                </template>
+                            </el-table-column>
+                        </el-table> -->
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
 				<el-button @click.native="editFormVisible = false">取消</el-button>
@@ -123,6 +146,7 @@
 				filters: {
                     keyName: ''
                 },
+                team: [{label:'供应商',value:'供应商'},{label:'客户',value:'客户'}],
                 // roleList: [{
                 //     name: '项目文档',
                 //     role: [{name:'上传',val:0},{name:'下载',val:1},{name:'浏览',val:2},{name:'审批',val:3}]
@@ -158,6 +182,9 @@
                 formRules: {
 					roleName: [
 						{ required: true, message: '请输入姓名', trigger: 'blur' }
+                    ],
+                    subordinate: [
+						{ required: true, message: '请选择角色类型', trigger: ['blur','change'] }
 					]
                 },
 
@@ -170,6 +197,7 @@
                     dowloadPower:false,
                     viewPower:false,
                     approvalPower:false,
+                    subordinate: '',
                     flag: 0
 				},
                 
@@ -182,7 +210,9 @@
                     uploadPower: false,
                     dowloadPower:false,
                     viewPower:false,
-                    approvalPower:false
+                    approvalPower:false,
+                    subordinate: '',
+                    flag: 1
 				}
 			}
 		},
@@ -233,7 +263,8 @@
 					uploadPower: false,
                     dowloadPower:false,
                     viewPower:false,
-                    approvalPower:false
+                    approvalPower:false,
+                    subordinate: ''
 				};
             },
             
@@ -248,6 +279,7 @@
                             dowloadPower: this.addForm.dowloadPower?1:0,
                             viewPower: this.addForm.viewPower?1:0,
                             approvalPower: this.addForm.approvalPower?1:0,
+                            subordinate: this.addForm.subordinate,
                             flag: 0
                         }, res => {
                             this.addLoading = false;

+ 325 - 181
ys_vue/src/views/project/project.vue

@@ -4,101 +4,143 @@
 		<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
 			<el-form :inline="true" :model="filters">
 				<el-form-item>
-					<el-input v-model="filters.name" placeholder="姓名"></el-input>
+					<el-input v-model="filters.keyName" placeholder="请输入项目名称"></el-input>
 				</el-form-item>
 				<el-form-item>
-					<el-button type="primary" v-on:click="getUsers">查询</el-button>
+					<el-button type="primary" v-on:click="getProject">查询</el-button>
 				</el-form-item>
-				<el-form-item>
+				<el-form-item style="float:right;" v-if="">
 					<el-button type="primary" @click="handleAdd">新增</el-button>
 				</el-form-item>
 			</el-form>
 		</el-col>
 
 		<!--列表-->
-		<el-table :data="users" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
-			<el-table-column type="selection" width="55">
-			</el-table-column>
+		<el-table :data="list" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
 			<el-table-column type="index" width="60">
 			</el-table-column>
-			<el-table-column prop="name" label="姓名" width="120" sortable>
+			<el-table-column prop="projectName" label="项目名称" width="200" sortable>
 			</el-table-column>
-			<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
+            <el-table-column prop="ownerCompanyName" label="生产方" min-width="200" sortable>
 			</el-table-column>
-			<el-table-column prop="age" label="年龄" width="100" sortable>
+            <el-table-column prop="charger" label="生产方负责人" min-width="150" sortable>
 			</el-table-column>
-			<el-table-column prop="birth" label="生日" width="120" sortable>
+			<el-table-column prop="creator" label="项目创建人" width="150" sortable>
 			</el-table-column>
-			<el-table-column prop="addr" label="地址" min-width="180" sortable>
+			<el-table-column prop="indate" label="创建时间" width="180" sortable>
 			</el-table-column>
-			<el-table-column label="操作" width="150">
+			<!-- <el-table-column label="操作" width="150">
 				<template slot-scope="scope">
 					<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
 					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
 				</template>
-			</el-table-column>
+			</el-table-column> -->
 		</el-table>
 
 		<!--工具条-->
 		<el-col :span="24" class="toolbar">
-			<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
-			<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="20" :total="total" style="float:right;">
-			</el-pagination>
+			<el-pagination
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                :page-sizes="[20 , 50 , 80 , 100]"
+                :page-size="20"
+                layout="total, sizes, prev, pager, next"
+                :total="total"
+                style="float:right;">
+            </el-pagination>
 		</el-col>
 
-		<!--编辑界面-->
-		<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
-			<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
-				<el-form-item label="姓名" prop="name">
-					<el-input v-model="editForm.name" autocomplete="off"></el-input>
-				</el-form-item>
-				<el-form-item label="性别">
-					<el-radio-group v-model="editForm.sex">
-						<el-radio class="radio" :label="1">男</el-radio>
-						<el-radio class="radio" :label="0">女</el-radio>
-					</el-radio-group>
-				</el-form-item>
-				<el-form-item label="年龄">
-					<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
-				</el-form-item>
-				<el-form-item label="生日">
-					<el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker>
-				</el-form-item>
-				<el-form-item label="地址">
-					<el-input type="textarea" v-model="editForm.addr"></el-input>
-				</el-form-item>
+        <!--新增界面-->
+		<el-dialog title="新增项目" v-if="addFormVisible" :visible.sync="addFormVisible" :close-on-click-modal="false" customClass='customWidth'>
+			<el-form :model="addForm" label-width="120px" :rules="formRules" ref="addForm">
+                <el-col :span="24">
+                    <el-form-item label="项目名称" prop="projectName">
+                        <el-input v-model="addForm.projectName" autocomplete="off" placeholder="请输入项目名称" style="width:510px"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方公司" prop="customerCompany">
+                        <el-select v-model="addForm.customerCompany" clearable filterable placeholder="请选择生产方公司" value-key='id' @change="companyChange(0)" style="width:195px">
+                            <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方负责人" prop="charger">
+                        <el-select v-model="addForm.charger" clearable filterable placeholder="请选择生产方负责人" value-key='id' style="width:195px">
+                            <el-option v-for="item in charger" :key="item.id" :label="item.username" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="本方参与人">
+                        <el-select v-model="addForm.userA" clearable filterable multiple placeholder="请选择本方参与人" style="width:510px">
+                            <el-option v-for="item in userA" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="生产方参与人">
+                        <el-select v-model="addForm.userB" clearable filterable multiple placeholder="请选择生产方参与人" style="width:510px">
+                            <el-option v-for="item in userB" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
-				<el-button @click.native="editFormVisible = false">取消</el-button>
-				<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
+				<el-button @click.native="addFormVisible = false">取消</el-button>
+				<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
 			</div>
 		</el-dialog>
 
-		<!--新增界面-->
-		<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
-			<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
-				<el-form-item label="姓名" prop="name">
-					<el-input v-model="addForm.name" autocomplete="off"></el-input>
-				</el-form-item>
-				<el-form-item label="性别">
-					<el-radio-group v-model="addForm.sex">
-						<el-radio class="radio" :label="1">男</el-radio>
-						<el-radio class="radio" :label="0">女</el-radio>
-					</el-radio-group>
-				</el-form-item>
-				<el-form-item label="年龄">
-					<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
-				</el-form-item>
-				<el-form-item label="生日">
-					<el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
-				</el-form-item>
-				<el-form-item label="地址">
-					<el-input type="textarea" v-model="addForm.addr"></el-input>
-				</el-form-item>
+		<!--编辑界面-->
+		<el-dialog title="编辑" v-if="editFormVisible" :visible.sync="editFormVisible" :close-on-click-modal="false" customClass='customWidth'>
+			<el-form :model="editForm" label-width="120px" :rules="formRules" ref="editForm" class="demo-form-inline">
+				 <el-col :span="24">
+                    <el-form-item label="项目名称" prop="projectName">
+                        <el-input v-model="editForm.projectName" autocomplete="off" placeholder="请输入项目名称" style="width:510px"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方公司" prop="customerCompany">
+                        <el-select v-model="editForm.customerCompany" clearable filterable placeholder="请选择生产方公司" value-key='id' @change="companyChange(1)" style="width:195px">
+                            <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="生产方负责人" prop="charger">
+                        <el-select v-model="editForm.charger" clearable filterable placeholder="请选择生产方负责人" value-key='id' style="width:195px">
+                            <el-option v-for="item in charger" :key="item.id" :label="item.username" :value="item">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="本方参与人">
+                        <el-select v-model="editForm.userA" clearable filterable multiple placeholder="请选择本方参与人" style="width:510px">
+                            <el-option v-for="item in userA" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="24">
+                    <el-form-item label="生产方参与人">
+                        <el-select v-model="editForm.userB" clearable filterable multiple placeholder="请选择生产方参与人" style="width:510px">
+                            <el-option v-for="item in userB" :key="item.id" :label="item.username" :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
-				<el-button @click.native="addFormVisible = false">取消</el-button>
-				<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
+				<el-button @click.native="editFormVisible = false">取消</el-button>
+				<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
 			</div>
 		</el-dialog>
 	</section>
@@ -106,117 +148,262 @@
 
 <script>
 	import util from '../../common/js/util'
-	//import NProgress from 'nprogress'
-	import { getUserListPage, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
 
 	export default {
 		data() {
 			return {
 				filters: {
-					name: ''
-				},
-				users: [],
+					keyName: ''
+                },
+                user: JSON.parse(sessionStorage.getItem('user')),
+                company:[],
+                charger: [],
+                userA: [],
+                userB: [],
+
+				list: [],
 				total: 0,
-				page: 1,
-				listLoading: false,
-				sels: [],//列表选中列
+                page: 1,
+                size: 20,
+                listLoading: false,
+                tableHeight: 0,
+
+                formRules: {
+					projectName: [
+						{ required: true, message: '请输入项目名称', trigger: 'blur' }
+                    ],
+                    customerCompany: [
+                        { required: true, message: '请选择客户公司', trigger: ['blur','change'] }
+                    ],
+                    charger: [
+                        { required: true, message: '请选择客户方负责人', trigger: ['blur','change'] }
+                    ]
+                },
+                
+                addFormVisible: false,//新增界面是否显示
+				addLoading: false,
+				//新增界面数据
+				addForm: {
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
+				},
 
 				editFormVisible: false,//编辑界面是否显示
 				editLoading: false,
-				editFormRules: {
-					name: [
-						{ required: true, message: '请输入姓名', trigger: 'blur' }
-					]
-				},
 				//编辑界面数据
 				editForm: {
 					id: 0,
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
-				},
-
-				addFormVisible: false,//新增界面是否显示
-				addLoading: false,
-				addFormRules: {
-					name: [
-						{ required: true, message: '请输入姓名', trigger: 'blur' }
-					]
-				},
-				//新增界面数据
-				addForm: {
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
 				}
 
 			}
 		},
 		methods: {
-			//性别显示转换
-			formatSex: function (row, column) {
-				return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
-			},
+            // 获取基础数据
+            getMsg(){
+                this.http.post(this.port.base.companys, {}, res => {
+                    if (res.code == "ok") {
+                        var list = res.data , array = [];
+                        for(var i in list){
+                            if(list[i].id != this.user.companyId){
+                                array.push(list[i])
+                            }
+                        }
+                        this.company = array;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+			//分页
 			handleCurrentChange(val) {
 				this.page = val;
-				this.getUsers();
-			},
-			//获取用户列表
-			getUsers() {
-				let para = {
-					page: this.page,
-					name: this.filters.name
-				};
+				this.getProject();
+            },
+
+            handleSizeChange(val) {
+                this.size = val;
+				this.getProject();
+            },
+            
+			//获取项目列表
+			getProject() {
 				this.listLoading = true;
-				//NProgress.start();
-				getUserListPage(para).then((res) => {
-					this.total = res.data.total;
-					this.users = res.data.users;
-					this.listLoading = false;
-					//NProgress.done();
+				this.http.post(this.port.project.projectList, {
+                    keyName: this.filters.keyName,
+                    currentPage: this.page,
+                    pageSize: this.size,
+                }, res => {
+                    this.listLoading = false;
+                    if (res.code == "ok") {
+                        this.list = res.data.list;
+                        this.total = res.data.total;
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.listLoading = false;
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+            //选择公司切换人员
+            companyChange: function(type){
+                var param = {};
+                if(type == 0){
+                    param.companyId = this.addForm.customerCompany.id;
+                } else if(type == 1) {
+                    param.companyId = this.editForm.customerCompany.id;
+                }
+                param.subordinateType = 1;
+                this.http.post(this.port.project.getUserList, param , res => {
+                    if (res.code == "ok") {
+                        this.charger = res.data;
+                        this.userB = res.data;
+                        if(type == 0){
+                            this.addForm.charger = '';
+                            this.addForm.userB = [];
+                        } else {
+                            this.editForm.charger = '';
+                            this.editForm.userB = [];
+                        }
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: 'error'
+                        });
+                    }
+                }, error => {
+                    this.$message({
+                        message: error,
+                        type: 'error'
+                    });
+                })
+            },
+
+            //显示新增界面
+			handleAdd: function () {
+				this.addFormVisible = true;
+				this.addForm = {
+					projectName: '',
+                    customerCompany: '',
+                    charger: '',
+                    userA: [],
+                    userB: []
+				};
+            },
+
+            //新增
+			addSubmit: function () {
+				this.$refs.addForm.validate((valid) => {
+					if (valid) {
+                        console.log(this.addForm)
+                        var userIds = "";
+                        if(this.addForm.userA.length != 0){
+                            for(var i in this.addForm.userA){
+                                userIds += this.addForm.userA[i] + ","
+                            }
+                        }
+                        
+                        if(this.addForm.userB.length != 0){
+                            for(var i in this.addForm.userB){
+                                userIds += this.addForm.userB[i] + ","
+                            }
+                        }
+                        
+                        userIds = userIds.substring(0,userIds.length-1)
+                        this.addLoading = true;
+                        this.http.post(this.port.project.addProject, {
+                            projectName: this.addForm.projectName,
+                            customerCompany: this.addForm.customerCompany.id,
+                            customerCompanyName: this.addForm.customerCompany.companyName,
+                            chargerId: this.addForm.charger.id,
+                            charger: this.addForm.charger.username,
+                            userIds: userIds,
+                            flag: 0
+                        } , res => {
+                            this.addLoading = false;
+                            this.addFormVisible = false;
+                            if (res.code == "ok") {
+                                this.$message({
+                                    message: '创建成功',
+                                    type: 'success'
+                                });
+                                this.getProject();
+                            } else {
+                                this.$message({
+                                    message: res.msg,
+                                    type: 'error'
+                                });
+                            }
+                        }, error => {
+                            this.addLoading = false;
+                            this.addFormVisible = false;
+                            this.$message({
+                                message: error,
+                                type: 'error'
+                            });
+                        })
+					}
 				});
 			},
+
 			//删除
 			handleDel: function (index, row) {
 				this.$confirm('确认删除该记录吗?', '提示', {
 					type: 'warning'
 				}).then(() => {
 					this.listLoading = true;
-					//NProgress.start();
 					let para = { id: row.id };
 					removeUser(para).then((res) => {
 						this.listLoading = false;
-						//NProgress.done();
 						this.$message({
 							message: '删除成功',
 							type: 'success'
 						});
-						this.getUsers();
+						this.getProject();
 					});
 				}).catch(() => {
 
 				});
-			},
+            },
+            
 			//显示编辑界面
 			handleEdit: function (index, row) {
 				this.editFormVisible = true;
-				this.editForm = Object.assign({}, row);
-			},
-			//显示新增界面
-			handleAdd: function () {
-				this.addFormVisible = true;
-				this.addForm = {
-					name: '',
-					sex: -1,
-					age: 0,
-					birth: '',
-					addr: ''
+                this.editForm = Object.assign({}, row);
+                this.editForm = {
+                    id: row.id,
+					projectName: row.projectName,
+                    customerCompany: row.customerCompanyName,
+                    charger: row.charger,
+                    userA: [],
+                    userB: []
 				};
 			},
+			
 			//编辑
 			editSubmit: function () {
 				this.$refs.editForm.validate((valid) => {
@@ -235,64 +422,21 @@
 								});
 								this.$refs['editForm'].resetFields();
 								this.editFormVisible = false;
-								this.getUsers();
+								this.getProject();
 							});
 						});
 					}
 				});
-			},
-			//新增
-			addSubmit: function () {
-				this.$refs.addForm.validate((valid) => {
-					if (valid) {
-						this.$confirm('确认提交吗?', '提示', {}).then(() => {
-							this.addLoading = true;
-							//NProgress.start();
-							let para = Object.assign({}, this.addForm);
-							para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
-							addUser(para).then((res) => {
-								this.addLoading = false;
-								//NProgress.done();
-								this.$message({
-									message: '提交成功',
-									type: 'success'
-								});
-								this.$refs['addForm'].resetFields();
-								this.addFormVisible = false;
-								this.getUsers();
-							});
-						});
-					}
-				});
-			},
-			selsChange: function (sels) {
-				this.sels = sels;
-			},
-			//批量删除
-			batchRemove: function () {
-				var ids = this.sels.map(item => item.id).toString();
-				this.$confirm('确认删除选中记录吗?', '提示', {
-					type: 'warning'
-				}).then(() => {
-					this.listLoading = true;
-					//NProgress.start();
-					let para = { ids: ids };
-					batchRemoveUser(para).then((res) => {
-						this.listLoading = false;
-						//NProgress.done();
-						this.$message({
-							message: '删除成功',
-							type: 'success'
-						});
-						this.getUsers();
-					});
-				}).catch(() => {
-
-				});
 			}
-		},
+			
+        },
+        created() {
+            let height = window.innerHeight;
+            this.tableHeight = height - 210;
+        },
 		mounted() {
-			this.getUsers();
+            this.getMsg();
+			this.getProject();
 		}
 	}
 

+ 38 - 53
ys_vue/src/views/project/staff.vue

@@ -3,14 +3,6 @@
 		<!--工具条-->
 		<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
 			<el-form :inline="true" :model="filters">
-                <el-col :span="3">
-                    <el-form-item>
-                        <el-select v-model="filters.roleType" clearable placeholder="请选择角色">
-                            <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                            </el-option>
-                        </el-select>
-                    </el-form-item>
-                </el-col>
                 <el-col :span="3">
                     <el-form-item>
                         <el-select v-model="filters.companyId" clearable filterable placeholder="请选择公司">
@@ -50,8 +42,8 @@
             <el-table-column prop="roleName" label="角色" sortable></el-table-column>
 			<el-table-column label="操作" width="150">
 				<template slot-scope="scope">
-					<el-button size="small" @click="handleEdit(scope.$index, scope.row)" v-if="scope.row.roleType != -1">编辑</el-button>
-					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)" v-if="scope.row.roleType != -1">删除</el-button>
+					<el-button size="small" @click="handleEdit(scope.$index, scope.row)" v-if="scope.row.roleName != -1">编辑</el-button>
+					<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)" v-if="scope.row.roleName != -1">删除</el-button>
 				</template>
 			</el-table-column>
 		</el-table>
@@ -78,7 +70,7 @@
 				<el-form-item label="用户名" prop="account">
 					<el-input v-model="addForm.account" autocomplete="off" placeholder="请输入用户名(登录账号)"></el-input>
 				</el-form-item>
-				<el-form-item label="联系方式">
+				<el-form-item label="联系方式" prop="mobile">
 					<el-input v-model="addForm.mobile" autocomplete="off" placeholder="请输入联系方式"></el-input>
 				</el-form-item>
                 <el-form-item label="类型" prop="teamName">
@@ -87,17 +79,14 @@
                         </el-option>
                     </el-select>
 				</el-form-item>
-                <el-form-item label="公司" prop="companyId">
+                <el-form-item label="公司" prop="companyId" v-if="addForm.teamName=='生产方'">
 					<el-select v-model="addForm.companyId" clearable filterable placeholder="请选择所属公司" style="width:202px">
                         <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item.id">
                         </el-option>
                     </el-select>
 				</el-form-item>
-				<el-form-item label="角色" prop="roleType">
-					<el-select v-model="addForm.roleType" clearable filterable placeholder="请选择角色" style="width:202px">
-                        <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                        </el-option>
-                    </el-select>
+				<el-form-item label="角色" prop="roleName">
+                    <el-input v-model="addForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -116,7 +105,7 @@
 				<el-form-item label="用户名" prop="account">
 					<el-input v-model="editForm.account" autocomplete="off" placeholder="请输入用户名(登录账号)"></el-input>
 				</el-form-item>
-				<el-form-item label="联系方式">
+				<el-form-item label="联系方式" prop="mobile">
 					<el-input v-model="editForm.mobile" autocomplete="off" placeholder="请输入联系方式"></el-input>
 				</el-form-item>
                 <el-form-item label="类型" prop="teamName">
@@ -125,17 +114,14 @@
                         </el-option>
                     </el-select>
 				</el-form-item>
-                <el-form-item label="公司" prop="companyId">
+                <el-form-item label="公司" prop="companyId" v-if="addForm.teamName=='生产方'">
 					<el-select v-model="editForm.companyId" clearable filterable placeholder="请选择所属公司" style="width:202px">
                         <el-option v-for="item in company" :key="item.id" :label="item.companyName" :value="item.id">
                         </el-option>
                     </el-select>
 				</el-form-item>
-				<el-form-item label="角色" prop="roleType">
-					<el-select v-model="editForm.roleType" clearable filterable placeholder="请选择角色" style="width:202px">
-                        <el-option v-for="item in role" :key="item.id" :label="item.roleName" :value="item.id">
-                        </el-option>
-                    </el-select>
+				<el-form-item label="角色" prop="roleName">
+                    <el-input v-model="editForm.roleName" autocomplete="off" placeholder="请输入角色名称"></el-input>
 				</el-form-item>
 			</el-form>
 			<div slot="footer" class="dialog-footer">
@@ -153,17 +139,30 @@
 
 	export default {
 		data() {
+            var checkPhone = (rule, value, callback) => {
+                if (!value) {
+                    return callback(new Error('请输入联系方式'));
+                } else {
+                    const reg = /^1[0-9]\d{9}$/
+                    if (reg.test(value)) {
+                        callback();
+                    } else {
+                        return callback(new Error('请输入正确的联系方式'));
+                    }
+                }
+            };
 			return {
 				filters: {
                     keyName: '',
-                    roleType: '',
+                    roleName: '',
                     flag: '姓名',
                     companyId: ''
                 },
                 
-                team: [{label:'供应商',value:'供应商'},{label:'客户',value:'客户'}],
+                team: [{label:'资产方',value:'资产方'},{label:'生产方',value:'生产方'}],
                 company: [],
-                role: [],
+                // role: [],
+                // roles:[],
 
 				list: [],
 				total: 0,
@@ -171,7 +170,7 @@
                 size: 20,
                 listLoading: false,
                 tableHeight: 0,
-                
+
                 formRules: {
                     username: [
 						{ required: true, message: '请输入姓名', trigger: 'blur' }
@@ -179,14 +178,18 @@
                     account: [
 						{ required: true, message: '请输入用户名', trigger: 'blur' }
                     ],
+                    mobile: [
+                        // { required: true, message: '请输入联系方式', trigger: 'blur' },
+                        { required: true, validator: checkPhone, trigger: 'blur'}
+                    ],
                     teamName: [
 						{ required: true, message: '请选择人员类型', trigger: ["blur",'change'] }
 					],
                     companyId: [
 						{ required: true, message: '请选择所属公司', trigger: ["blur",'change'] }
 					],
-                    roleType: [
-						{ required: true, message: '请选择角色', trigger: ["blur",'change'] }
+                    roleName: [
+						{ required: true, message: '请输入角色名称', trigger: ["blur",'change'] }
 					]
                 },
 
@@ -200,7 +203,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 0
 				},
 
@@ -215,7 +218,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 1
 				}
 			}
@@ -223,22 +226,6 @@
 		methods: {
             // 获取基础数据
             getMsg(){
-                this.http.post(this.port.base.roles, {}, res => {
-                    if (res.code == "ok") {
-                        this.role = res.data;
-                    } else {
-                        this.$message({
-                            message: res.msg,
-                            type: 'error'
-                        });
-                    }
-                }, error => {
-                    this.$message({
-                        message: error,
-                        type: 'error'
-                    });
-                })
-
                 this.http.post(this.port.base.companys, {}, res => {
                     if (res.code == "ok") {
                         this.company = res.data;
@@ -274,10 +261,8 @@
                     keyName: this.filters.keyName,
                     currentPage: this.page,
                     pageSize: this.size,
-                    roleType: this.filters.roleType==''?-2:this.filters.roleType,
                     companyId: this.filters.companyId==''?-1:this.filters.companyId,
                     flag: this.filters.flag=='姓名'?0:this.filters.flag
-
                 }, res => {
                     this.listLoading = false;
                     if (res.code == "ok") {
@@ -308,7 +293,7 @@
                     mobile: '',
                     teamName: '',
 					companyId: '',
-                    roleType: '',
+                    roleName: '',
                     flag: 0
 				};
             },
@@ -376,7 +361,7 @@
             
 			//显示编辑界面
 			handleEdit: function (index, row) {
-				this.editFormVisible = true;
+                this.editFormVisible = true;
 				this.editForm = {
                     id: row.id,
                     parentId: JSON.parse(sessionStorage.getItem('user')).id,
@@ -385,7 +370,7 @@
                     mobile: row.mobile,
                     teamName: row.teamName,
 					companyId: row.companyId,
-                    roleType: row.roleType,
+                    roleName: row.roleName,
                     flag: 1
 				};
             },