瀏覽代碼

兼任机构

USERINFO_ADJUNCT
Crystal.Sea 4 年之前
父節點
當前提交
68590eabef

+ 288 - 0
maxkey-core/src/main/java/org/maxkey/domain/UserInfoAdjoint.java

@@ -0,0 +1,288 @@
+package org.maxkey.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+import org.apache.mybatis.jpa.persistence.JpaBaseDomain;
+
+@Entity
+@Table(name = "MXK_USERINFO_ADJUNCT")
+public class UserInfoAdjoint extends JpaBaseDomain {
+    
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -8634054312223379561L;
+
+    @Id
+    @Column
+    @GeneratedValue(strategy = GenerationType.AUTO, generator = "uuid")
+    String id;
+    
+    protected String displayName;
+    @Column
+    protected String userId;
+    
+ // for work
+    @Column
+    protected String workCountry;
+    @Column
+    protected String workRegion;// province;
+    @Column
+    protected String workLocality;// city;
+    @Column
+    protected String workStreetAddress;
+    @Column
+    protected String workAddressFormatted;
+    @Column
+    protected String workEmail;
+    @Column
+    protected String workPhoneNumber;
+    @Column
+    protected String workPostalCode;
+    @Column
+    protected String workFax;
+    
+    @Column
+    protected String costCenter;
+    @Column
+    protected String organization;
+    @Column
+    protected String division;
+    @Column
+    protected String departmentId;
+    @Column
+    protected String department;
+    @Column
+    protected String jobTitle;
+    @Column
+    protected String jobLevel;
+    @Column
+    protected String managerId;
+    @Column
+    protected String manager;
+    @Column
+    protected String assistantId;
+    @Column
+    protected String assistant;
+    @Column
+    protected String entryDate;
+    @Column
+    protected String quitDate;
+    public UserInfoAdjoint() {
+        super();
+        // TODO Auto-generated constructor stub
+    }
+    public String getId() {
+        return id;
+    }
+    public void setId(String id) {
+        this.id = id;
+    }
+    public String getDisplayName() {
+        return displayName;
+    }
+    public void setDisplayName(String displayName) {
+        this.displayName = displayName;
+    }
+    public String getWorkCountry() {
+        return workCountry;
+    }
+    public void setWorkCountry(String workCountry) {
+        this.workCountry = workCountry;
+    }
+    public String getWorkRegion() {
+        return workRegion;
+    }
+    public void setWorkRegion(String workRegion) {
+        this.workRegion = workRegion;
+    }
+    public String getWorkLocality() {
+        return workLocality;
+    }
+    public void setWorkLocality(String workLocality) {
+        this.workLocality = workLocality;
+    }
+    public String getWorkStreetAddress() {
+        return workStreetAddress;
+    }
+    public void setWorkStreetAddress(String workStreetAddress) {
+        this.workStreetAddress = workStreetAddress;
+    }
+    public String getWorkAddressFormatted() {
+        return workAddressFormatted;
+    }
+    public void setWorkAddressFormatted(String workAddressFormatted) {
+        this.workAddressFormatted = workAddressFormatted;
+    }
+    public String getWorkEmail() {
+        return workEmail;
+    }
+    public void setWorkEmail(String workEmail) {
+        this.workEmail = workEmail;
+    }
+    public String getWorkPhoneNumber() {
+        return workPhoneNumber;
+    }
+    public void setWorkPhoneNumber(String workPhoneNumber) {
+        this.workPhoneNumber = workPhoneNumber;
+    }
+    public String getWorkPostalCode() {
+        return workPostalCode;
+    }
+    public void setWorkPostalCode(String workPostalCode) {
+        this.workPostalCode = workPostalCode;
+    }
+    public String getWorkFax() {
+        return workFax;
+    }
+    public void setWorkFax(String workFax) {
+        this.workFax = workFax;
+    }
+    public String getCostCenter() {
+        return costCenter;
+    }
+    public void setCostCenter(String costCenter) {
+        this.costCenter = costCenter;
+    }
+    public String getOrganization() {
+        return organization;
+    }
+    public void setOrganization(String organization) {
+        this.organization = organization;
+    }
+    public String getDivision() {
+        return division;
+    }
+    public void setDivision(String division) {
+        this.division = division;
+    }
+    public String getDepartmentId() {
+        return departmentId;
+    }
+    public void setDepartmentId(String departmentId) {
+        this.departmentId = departmentId;
+    }
+    public String getDepartment() {
+        return department;
+    }
+    public void setDepartment(String department) {
+        this.department = department;
+    }
+    public String getJobTitle() {
+        return jobTitle;
+    }
+    public void setJobTitle(String jobTitle) {
+        this.jobTitle = jobTitle;
+    }
+    public String getJobLevel() {
+        return jobLevel;
+    }
+    public void setJobLevel(String jobLevel) {
+        this.jobLevel = jobLevel;
+    }
+    public String getManagerId() {
+        return managerId;
+    }
+    public void setManagerId(String managerId) {
+        this.managerId = managerId;
+    }
+    public String getManager() {
+        return manager;
+    }
+    public void setManager(String manager) {
+        this.manager = manager;
+    }
+    public String getAssistantId() {
+        return assistantId;
+    }
+    public void setAssistantId(String assistantId) {
+        this.assistantId = assistantId;
+    }
+    public String getAssistant() {
+        return assistant;
+    }
+    public void setAssistant(String assistant) {
+        this.assistant = assistant;
+    }
+    public String getEntryDate() {
+        return entryDate;
+    }
+    public void setEntryDate(String entryDate) {
+        this.entryDate = entryDate;
+    }
+    public String getQuitDate() {
+        return quitDate;
+    }
+    public void setQuitDate(String quitDate) {
+        this.quitDate = quitDate;
+    }
+    
+    
+    public String getUserId() {
+        return userId;
+    }
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder();
+        builder.append("UserInfoAdjoint [id=");
+        builder.append(id);
+        builder.append(", displayName=");
+        builder.append(displayName);
+        builder.append(", workCountry=");
+        builder.append(workCountry);
+        builder.append(", workRegion=");
+        builder.append(workRegion);
+        builder.append(", workLocality=");
+        builder.append(workLocality);
+        builder.append(", workStreetAddress=");
+        builder.append(workStreetAddress);
+        builder.append(", workAddressFormatted=");
+        builder.append(workAddressFormatted);
+        builder.append(", workEmail=");
+        builder.append(workEmail);
+        builder.append(", workPhoneNumber=");
+        builder.append(workPhoneNumber);
+        builder.append(", workPostalCode=");
+        builder.append(workPostalCode);
+        builder.append(", workFax=");
+        builder.append(workFax);
+        builder.append(", costCenter=");
+        builder.append(costCenter);
+        builder.append(", organization=");
+        builder.append(organization);
+        builder.append(", division=");
+        builder.append(division);
+        builder.append(", departmentId=");
+        builder.append(departmentId);
+        builder.append(", department=");
+        builder.append(department);
+        builder.append(", jobTitle=");
+        builder.append(jobTitle);
+        builder.append(", jobLevel=");
+        builder.append(jobLevel);
+        builder.append(", managerId=");
+        builder.append(managerId);
+        builder.append(", manager=");
+        builder.append(manager);
+        builder.append(", assistantId=");
+        builder.append(assistantId);
+        builder.append(", assistant=");
+        builder.append(assistant);
+        builder.append(", entryDate=");
+        builder.append(entryDate);
+        builder.append(", quitDate=");
+        builder.append(quitDate);
+        builder.append("]");
+        return builder.toString();
+    }
+    
+    
+}

+ 31 - 0
maxkey-persistence/src/main/java/org/maxkey/persistence/mapper/UserInfoAdjointMapper.java

@@ -0,0 +1,31 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.persistence.mapper;
+
+import org.apache.mybatis.jpa.persistence.IJpaBaseMapper;
+import org.maxkey.domain.UserInfoAdjoint;
+
+
+/**
+ * @author Crystal.Sea
+ *
+ */
+public interface UserInfoAdjointMapper  extends IJpaBaseMapper<UserInfoAdjoint>{
+
+	
+}

+ 46 - 0
maxkey-persistence/src/main/java/org/maxkey/persistence/service/UserInfoAdjointService.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.persistence.service;
+
+import org.apache.mybatis.jpa.persistence.JpaBaseService;
+import org.maxkey.domain.UserInfoAdjoint;
+import org.maxkey.persistence.mapper.RolesMapper;
+import org.maxkey.persistence.mapper.UserInfoAdjointMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserInfoAdjointService  extends JpaBaseService<UserInfoAdjoint>{
+    final static Logger _logger = LoggerFactory.getLogger(UserInfoAdjointService.class);
+    
+    
+	public UserInfoAdjointService() {
+		super(UserInfoAdjointMapper.class);
+	}
+
+	/* (non-Javadoc)
+	 * @see com.connsec.db.service.BaseService#getMapper()
+	 */
+	@Override
+	public UserInfoAdjointMapper getMapper() {
+		return (UserInfoAdjointMapper)super.getMapper();
+	}
+	
+
+}

+ 49 - 0
maxkey-persistence/src/main/resources/org/maxkey/persistence/mapper/xml/mysql/UserInfoAdjointMapper.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.maxkey.persistence.mapper.UserInfoAdjointMapper">
+
+	<sql id="where_statement">
+    	<if test="id != null and id != ''">
+			AND	ID	=	#{id}
+		</if> 
+		<if test="userId != null and userId != ''">
+			AND	USERID	=	#{userId}
+		</if> 
+    </sql>
+    
+
+	
+	<select id="queryPageResults" parameterType="UserInfoAdjoint" resultType="UserInfoAdjoint">
+		SELECT
+			*
+		FROM
+			MXK_USERINFO_ADJUNCT
+		WHERE
+			 (1=1)	
+		<include refid="where_statement"/>
+	</select>
+	
+	
+	<update id="logisticDelete" parameterType="UserInfoAdjoint" >
+    	UPDATE MXK_USERINFO_ADJUNCT SET
+    		STATUS	=	'2'  
+    	WHERE	1	=	1
+    	<if test="id != null">
+			AND	ID	=	#{id}
+		</if>
+		<if test="name != name">
+			ADN	NAME	=	#{name}
+		</if>
+    </update>
+    
+    
+    <update id="logisticBatchDelete" parameterType="java.util.List">
+    	UPDATE MXK_USERINFO_ADJUNCT SET STATUS='2' WHERE ID IN
+    		<foreach item="item" collection="list" open="(" separator="," close=")">
+				#{item}
+    		</foreach>
+    </update>
+    
+
+   
+</mapper>

+ 145 - 0
maxkey-web-manage/src/main/java/org/maxkey/web/contorller/UserAdjointController.java

@@ -0,0 +1,145 @@
+/*
+ * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+
+package org.maxkey.web.contorller;
+
+import org.apache.mybatis.jpa.persistence.JpaPageResults;
+import org.maxkey.constants.ConstantsOperateMessage;
+import org.maxkey.domain.UserInfoAdjoint;
+import org.maxkey.persistence.service.UserInfoAdjointService;
+import org.maxkey.web.WebContext;
+import org.maxkey.web.message.Message;
+import org.maxkey.web.message.MessageType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+
+@Controller
+@RequestMapping(value={"/useradjoint"})
+public class UserAdjointController {
+	final static Logger _logger = LoggerFactory.getLogger(UserAdjointController.class);
+	
+	@Autowired
+	@Qualifier("userInfoAdjointService")
+	UserInfoAdjointService userInfoAdjointService;
+
+	
+	@RequestMapping(value={"/list/{userId}"})
+	public ModelAndView userinfoAdjointList(@PathVariable("userId") String userId){
+	    ModelAndView modelAndView=new ModelAndView("userinfo/userinfoAdjointList");
+	    modelAndView.addObject("userId", userId);
+		return modelAndView;
+	}
+	
+	
+	@RequestMapping(value = { "/grid" })
+	@ResponseBody
+	public JpaPageResults<UserInfoAdjoint> queryDataGrid(@ModelAttribute("userInfoAdjoint") UserInfoAdjoint userInfoAdjoint) {
+		_logger.debug(""+userInfoAdjoint);
+		return userInfoAdjointService.queryPageResults(userInfoAdjoint);
+	}
+
+	
+	@RequestMapping(value = { "/forwardAdd/{userId}" })
+	public ModelAndView forwardAdd(@PathVariable("userId") String userId) {
+	    ModelAndView modelAndView=new ModelAndView("userinfo/userinfoAdjointAdd");
+        modelAndView.addObject("userId", userId);
+        return modelAndView;
+	}
+	
+	@RequestMapping(value = { "/forwardUpdate/{id}" })
+	public ModelAndView forwardUpdate(@PathVariable("id") String id) {
+		ModelAndView modelAndView=new ModelAndView("userinfo/userinfoAdjointUpdate");
+		UserInfoAdjoint userInfoAdjoint=userInfoAdjointService.get(id);
+		modelAndView.addObject("model",userInfoAdjoint);
+		return modelAndView;
+	}
+	
+	@ResponseBody
+	@RequestMapping(value={"/add"})
+	public Message insert(@ModelAttribute("userInfoAdjoint") UserInfoAdjoint userInfoAdjoint) {
+		_logger.debug("-Add  :" + userInfoAdjoint);
+		
+		if (userInfoAdjointService.insert(userInfoAdjoint)) {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.INSERT_SUCCESS),MessageType.success);
+			
+		} else {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.INSERT_SUCCESS),MessageType.error);
+		}
+		
+	}
+	
+	/**
+	 * 查询
+	 * @param group
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping(value={"/query"}) 
+	public Message query(@ModelAttribute("userInfoAdjoint") UserInfoAdjoint userInfoAdjoint) {
+		_logger.debug("-query  :" + userInfoAdjoint);
+		if (userInfoAdjointService.load(userInfoAdjoint)!=null) {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.INSERT_SUCCESS),MessageType.success);
+			
+		} else {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.INSERT_ERROR),MessageType.error);
+		}
+		
+	}
+	
+	/**
+	 * 修改
+	 * @param group
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping(value={"/update"})  
+	public Message update(@ModelAttribute("userInfoAdjoint") UserInfoAdjoint userInfoAdjoint) {
+		_logger.debug("-update  userInfoAdjoint :" + userInfoAdjoint);
+		
+		if (userInfoAdjointService.update(userInfoAdjoint)) {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_SUCCESS),MessageType.success);
+			
+		} else {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.UPDATE_ERROR),MessageType.error);
+		}
+		
+	}
+	
+
+	@ResponseBody
+	@RequestMapping(value={"/delete"})
+	public Message delete(@ModelAttribute("userInfoAdjoint") UserInfoAdjoint userInfoAdjoint) {
+		_logger.debug("-delete  group :" + userInfoAdjoint);
+		
+		if (userInfoAdjointService.remove(userInfoAdjoint.getId())) {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.DELETE_SUCCESS),MessageType.success);
+			
+		} else {
+			return  new Message(WebContext.getI18nValue(ConstantsOperateMessage.DELETE_SUCCESS),MessageType.error);
+		}
+		
+	}
+}

+ 1 - 0
maxkey-web-manage/src/main/resources/messages/message.properties

@@ -467,6 +467,7 @@ button.text.generate=\u751f\u6210
 button.text.view=\u67e5\u770b
 button.text.hidden=\u9690\u85cf
 button.text.import=\u5bfc\u5165
+button.text.adjunct=\u517c\u4efb\u673a\u6784
 
 log.loginhistory.id=\u7f16\u53f7
 log.loginhistory.sessionId=\u4f1a\u8bdd

+ 1 - 1
maxkey-web-manage/src/main/resources/messages/message_en.properties

@@ -466,7 +466,7 @@ button.text.generate=Generate
 button.text.view=View
 button.text.hidden=Hidden
 button.text.import=Import
-
+button.text.adjunct=Adjoint Depts
 
 log.loginhistory.id=id
 log.loginhistory.sessionId=sessionId

+ 1 - 0
maxkey-web-manage/src/main/resources/messages/message_zh_CN.properties

@@ -468,6 +468,7 @@ button.text.generate=\u751f\u6210
 button.text.view=\u67e5\u770b
 button.text.hidden=\u9690\u85cf
 button.text.import=\u5bfc\u5165
+button.text.adjunct=\u517c\u4efb\u673a\u6784
 
 log.loginhistory.id=\u7f16\u53f7
 log.loginhistory.sessionId=\u4f1a\u8bdd

+ 7 - 1
maxkey-web-manage/src/main/resources/static/css/base.css

@@ -309,7 +309,13 @@ header .header-container .nav-left>li, .header .header-container .nav-right>li {
 }
 
 #tool_box_right {
-	height:32px;
+	height:46px;
+	text-align: right;
+	padding-right: 10px;
+	width:484px;
+}
+#tool_box_right_more{
+	height:46px;
 	text-align: right;
 	padding-right: 10px;
 	width:484px;

+ 9 - 2
maxkey-web-manage/src/main/resources/static/jquery/platform.common.js

@@ -311,7 +311,12 @@ $(function(){
 		
 		var url=$(this).attr("wurl");
 		
+		
 		if($(this).attr("ref")){
+			if($("#"+$(this).attr("ref")).val()==""){
+				$.alert({content:$.platform.messages.select.alertText});
+				return;
+			}
 			url=url+"/"+$("#"+$(this).attr("ref")).val();
 		}
 		
@@ -375,7 +380,8 @@ $(function(){
 			if($(this).attr("target")&&$(this).attr("target")=="forward"){
 				if($(this).attr("ref")){
 					if($("#"+$(this).attr("ref")+"").val()==""){
-						$.forward($(this).attr("wurl"));
+						$.alert({content:$.platform.messages.select.alertText});
+						return;
 					}else{
 						$.forward($(this).attr("wurl")+"/"+$("#"+$(this).attr("ref")+"").val());
 					}
@@ -392,7 +398,8 @@ $(function(){
 					};
 				if($(this).attr("ref")){
 					if($("#"+$(this).attr("ref")+"").val()==""){
-						settings.url=$(this).attr("wurl");
+						$.alert({content:$.platform.messages.select.alertText});
+						return;
 					}else{
 						settings.url=$(this).attr("wurl")+"/"+$("#"+$(this).attr("ref")+"").val();
 					}

+ 167 - 0
maxkey-web-manage/src/main/resources/templates/views/userinfo/userInfoAdjointAdd.ftl

@@ -0,0 +1,167 @@
+<!DOCTYPE HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<#include  "../layout/header.ftl"/>
+	<#include  "../layout/common.cssjs.ftl"/>
+<script type="text/javascript">
+   <!--
+      $(function(){	
+      	$("#departmentId").val($.cookie("select_org_id"));
+		$("#department").val($.cookie("select_org_name"));
+		
+      	$("#picture").on("click",function(){
+      		$("#pictureFile").click();
+      			
+      	});
+      });
+      //-->
+</script>
+
+<style   type="text/css">
+  .table th, .table td {
+    padding: .2rem;
+    vertical-align: middle;
+  }
+</style>
+</head>
+<body>
+<form  id="actionForm"
+	method="post"
+	type="alert"  
+	action="<@base/>/useradjoint/add" 
+	forward="<@base/>/useradjoint/list/${userId}"
+	class="needs-validation" novalidate>
+	 <div class="" style="width:100%;">
+
+	    <div class="main">
+	    <div class="mainin">			 
+  	        <!-- content -->    
+  	      	
+ <table  class="table table-bordered"   id="table_switch_company" width="980">
+	<tbody>				
+		<tr>
+			<td style="width:15%;"><@locale code="userinfo.organization" />:</td>
+			<td style="width:35%;">
+				<input class="form-control"  type="text" id="organization" name="organization"  title="" value=""/>
+			</td>
+			<td style="width:15%;"><@locale code="userinfo.division" />:</td>
+			<td style="width:35%;">
+				<input class="form-control"  type="text" id="division" name="division"  title="" value=""/>
+			</td>
+			
+		</tr>
+		
+		<tr>
+			<td><@locale code="userinfo.department" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="departmentId" name="departmentId"  title="" value=""/>
+				<input class="form-control"  type="text" style="width:70%"  id="department" name="department"  title="" value=""/>
+				<s:Dialog text="button.text.select" title="department" url="/orgs/orgsSelect/deptId/department" width="300" height="400" />
+			</td>
+			<td><@locale code="userinfo.costCenter" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="costCenter" name="costCenter"  title="" value=""/>
+			</td>
+			
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.jobTitle" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="jobTitle" name="jobTitle"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.jobLevel" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="jobLevel" name="jobLevel"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.manager" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="managerId" name="managerId"  title="" value=""/>
+				<input class="form-control"  type="text" id="manager" name="manager"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.assistant" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="assistantId" name="assistantId"  title="" value=""/>
+				<input class="form-control"   type="text" id="assistant" name="assistant"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.entryDate" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="entryDate" name="entryDate"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.quitDate" />:</td>
+			<td>
+				<input class="form-control"   type="text" id="quitDate" name="quitDate"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4">&nbsp;
+			</td>
+			
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.workCountry" />:</td>
+			<td nowrap >
+				<input class="form-control"   type="text" id="workCountry" name="workCountry"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.workRegion" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workRegion" name="workRegion"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.workLocality" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workLocality" name="workLocality"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.workStreetAddress" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workStreetAddress" name="workStreetAddress"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			
+			<td><@locale code="userinfo.workPostalCode" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workPostalCode" name="workPostalCode"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.workFax" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workFax" name="workFax"  title="" value=""/>
+			</td>
+		</tr>
+
+		<tr>
+			<td><@locale code="userinfo.workPhoneNumber" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workPhoneNumber" name="workPhoneNumber"  title="" value=""/>
+			</td>
+			<td><@locale code="userinfo.workEmail" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workEmail" name="workEmail"  title="" value=""/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4">&nbsp;
+			</td>
+			
+		</tr>					
+	</tbody>
+</table>
+
+  	        <div class="clear"></div>
+		</div>
+		</div>
+			<div >
+				<div >
+					<input class="form-control"  type="hidden" id="userId" name="userId"  title="" value="${userId}"/>
+					<input id="_method" type="hidden" name="_method"  value="post"/>
+					<input id="submitBtn" class="button btn btn-primary mr-3" type="submit" value="<@locale code="button.text.save" />"/>
+				</div>
+			</div>
+	 </div> 
+</form>
+</body>
+</html>

+ 165 - 0
maxkey-web-manage/src/main/resources/templates/views/userinfo/userInfoAdjointUpdate.ftl

@@ -0,0 +1,165 @@
+<!DOCTYPE HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<#include  "../layout/header.ftl"/>
+	<#include  "../layout/common.cssjs.ftl"/>
+<script type="text/javascript">
+   <!--
+      $(function(){	
+      	$("#picture").on("click",function(){
+      		$("#pictureFile").click();
+      	});
+      });
+      //-->
+</script>
+
+<style   type="text/css">
+  .table th, .table td {
+    padding: .2rem;
+    vertical-align: middle;
+  }
+</style>
+</head>
+<body>
+<form  id="actionForm"
+	method="post"
+	type="alert"  
+	action="<@base/>/useradjoint/update" 
+	forward="<@base/>/useradjoint/list/${model.userId}"
+	class="needs-validation" novalidate>
+	 <div class="" style="width:100%;">
+
+	    <div class="main">
+	    <div class="mainin">			 
+  	        <!-- content -->    
+  	      	<!--table-->
+
+ <table  class="table table-bordered"   id="table_switch_company" width="980">
+	<tbody>				
+		<tr>
+			<td style="width:15%;"><@locale code="userinfo.organization" />:</td>
+			<td style="width:35%;">
+				<input class="form-control"  type="text" id="organization" name="organization"  title="" value="${model.organization!""}"/>
+			</td>
+			<td style="width:15%;"><@locale code="userinfo.division" />:</td>
+			<td style="width:35%;">
+				<input class="form-control"  type="text" id="division" name="division"  title="" value="${model.division!""}"/>
+			</td>
+			
+		</tr>
+		
+		<tr>
+			<td><@locale code="userinfo.department" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="departmentId" name="departmentId"  title="" value="${model.departmentId!""}"/>
+				<input class="form-control"  type="text" style="width:70%"  id="department" name="department"  title="" value="${model.department!""}"/>
+				<s:Dialog text="button.text.select" title="department" url="/orgs/orgsSelect/deptId/department" width="300" height="400" />
+			</td>
+			<td><@locale code="userinfo.costCenter" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="costCenter" name="costCenter"  title="" value="${model.costCenter!""}"/>
+			</td>
+			
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.jobTitle" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="jobTitle" name="jobTitle"  title="" value="${model.jobTitle!""}"/>
+			</td>
+			<td><@locale code="userinfo.jobLevel" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="jobLevel" name="jobLevel"  title="" value="${model.jobLevel!""}"/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.manager" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="managerId" name="managerId"  title="" value="${model.managerId!""}"/>
+				<input class="form-control"  type="text" id="manager" name="manager"  title="" value="${model.manager!""}"/>
+			</td>
+			<td><@locale code="userinfo.assistant" />:</td>
+			<td>
+				<input class="form-control"  type="hidden" id="assistantId" name="assistantId"  title="" value="${model.assistantId!""}"/>
+				<input class="form-control"   type="text" id="assistant" name="assistant"  title="" value="${model.assistant!""}"/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.entryDate" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="entryDate" name="entryDate"  title="" value="${model.entryDate!""}"/>
+			</td>
+			<td><@locale code="userinfo.quitDate" />:</td>
+			<td>
+				<input class="form-control"   type="text" id="quitDate" name="quitDate"  title="" value="${model.quitDate!""}"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4">&nbsp;
+			</td>
+			
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.workCountry" />:</td>
+			<td nowrap >
+				<input class="form-control"   type="text" id="workCountry" name="workCountry"  title="" value="${model.workCountry!""}"/>
+			</td>
+			<td><@locale code="userinfo.workRegion" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workRegion" name="workRegion"  title="" value="${model.workRegion!""}"/>
+			</td>
+		</tr>
+		<tr>
+			<td><@locale code="userinfo.workLocality" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workLocality" name="workLocality"  title="" value="${model.workLocality!""}"/>
+			</td>
+			<td><@locale code="userinfo.workStreetAddress" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workStreetAddress" name="workStreetAddress"  title="" value="${model.workStreetAddress!""}"/>
+			</td>
+		</tr>
+		<tr>
+			
+			<td><@locale code="userinfo.workPostalCode" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workPostalCode" name="workPostalCode"  title="" value="${model.workPostalCode!""}"/>
+			</td>
+			<td><@locale code="userinfo.workFax" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workFax" name="workFax"  title="" value="${model.workFax!""}"/>
+			</td>
+		</tr>
+
+		<tr>
+			<td><@locale code="userinfo.workPhoneNumber" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workPhoneNumber" name="workPhoneNumber"  title="" value="${model.workPhoneNumber!""}"/>
+			</td>
+			<td><@locale code="userinfo.workEmail" />:</td>
+			<td>
+				<input class="form-control"  type="text" id="workEmail" name="workEmail"  title="" value="${model.workEmail!""}"/>
+			</td>
+		</tr>
+		<tr>
+			<td colspan="4">&nbsp;
+			</td>
+			
+		</tr>					
+	</tbody>
+</table>
+
+  	        <div class="clear"></div>
+		</div>
+		</div>
+			<div >
+				<div >
+					<input class="form-control"  type="hidden" id="userId" name="userId"  title="" value="${model.userId}"/>
+					<input class="form-control"  type="hidden" id="userId" name="id"  title="" value="${model.id}"/>
+					<input id="_method" type="hidden" name="_method"  value="post"/>
+					<input id="submitBtn" class="button btn btn-primary mr-3" type="submit" value="<@locale code="button.text.save" />"/>
+				</div>
+			</div>
+	 </div> 
+</form>
+</body>
+</html>

+ 75 - 0
maxkey-web-manage/src/main/resources/templates/views/userinfo/userinfoAdjointList.ftl

@@ -0,0 +1,75 @@
+<!DOCTYPE HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<#include  "../layout/header.ftl"/>
+	<#include  "../layout/common.cssjs.ftl"/>
+<style   type="text/css">
+  .table th, .table td {
+    padding: .2rem;
+    vertical-align: middle;
+  }
+</style>
+
+<script type="text/javascript">
+	function genderFormatter(value, row, index){
+   		if(value==1){
+   			return '<@locale code="userinfo.gender.female" />';
+   		}else{
+   			return '<@locale code="userinfo.gender.male" />';
+   		}
+	};
+	$(function () {	
+		$("#winClose").on("click",function(){
+			$.closeWindow();
+		});
+	});
+	</script>
+</head>
+<body>
+ <div style="float: right;">
+ 	<input class="button btn btn-success mr-3" id="addBtn" type="button" value="<@locale code="button.text.add"/>" 
+	 		    wurl="<@base/>/useradjoint/forwardAdd/${userId!}"
+ 		    	target="forward">	    	
+ 		    	
+ 	<input class="button btn btn-info mr-3 " id="modifyBtn" type="button" value="<@locale code="button.text.edit"/>" 
+ 				wurl="<@base/>/useradjoint/forwardUpdate"
+ 		    	target="forward"> 
+ 	<input class="button btn btn-danger mr-3 "  id="deleteBtn" type="button" value="<@locale code="button.text.delete"/>"
+ 				wurl="<@base/>/useradjoint/delete" />
+
+ 	<input class="button btn btn-primary mr-3"  id="winClose" type="button" value="<@locale code="button.text.close" />" >
+ </div>
+     <!-- content -->  
+  <table class="datatable"   width="100%" >
+   <tr>
+      <td  valign="top"  class="td_1" style="vertical-align: top;">
+	 	<table  data-url="<@base/>/useradjoint/grid?userId=${userId!}"
+				id="datagrid"
+				data-toggle="table"
+				data-classes="table table-bordered table-hover table-striped"
+				data-click-to-select="true"
+				data-pagination="true"
+				data-total-field="records"
+				data-page-list="[10, 25, 50, 100]"
+				data-search="false"
+				data-locale="zh-CN"
+				data-query-params="dataGridQueryParams"
+				data-query-params-type="pageSize"
+				data-side-pagination="server">
+			<thead>
+				<tr>
+				<th data-checkbox="true"></th>
+				<th data-sortable="true" data-field="id"   data-visible="false"><@locale code="userinfo.id"/></th>
+				<th data-field="organization"><@locale code="userinfo.organization"/></th>
+				<th data-field="department"><@locale code="userinfo.department"/></th>
+				<th data-field="jobTitle"><@locale code="userinfo.jobTitle"/></th>
+				<th data-field="jobLevel"><@locale code="userinfo.jobLevel"/></th>
+				
+				</tr>
+			</thead>
+		</table>
+	     </td>
+	   </tr>
+	</table>
+</body>
+</html>

+ 34 - 12
maxkey-web-manage/src/main/resources/templates/views/userinfo/usersList.ftl

@@ -19,6 +19,14 @@ function onClick (event, treeId, treeNode) {
 	$("#searchBtn").click();
 	 
 }
+
+//adjunctUserIdRef
+function beforeWindow( ){
+	if($('#datagrid').bootstrapTable('getSelections')){
+		$("#adjunctUserIdRef").val($('#datagrid').bootstrapTable('getSelections')[0].id);
+	}
+}
+
 	
 $(function () {
 		
@@ -145,6 +153,16 @@ $(function () {
 		$("#changepwdBtnHidden").click();	
 	});
 	
+	
+	$("#moreBtn").on("click",function(){
+		var node=$("#tool_box_right_more");
+		if(node.is(':hidden')){  
+		  node.show(); 
+		}else{
+		  node.hide();
+		}
+	});
+	
 });
 	</script>
 </head>
@@ -199,17 +217,7 @@ $(function () {
 					 	</form>
 				</td>
 				<td colspan="2"> 
-					 <div id="tool_box_right">
-					 	<input class="button btn btn-warning mr-3" id="changepwdBtn" type="button" value="<@locale code="login.password.changepassword"/>" />
-						<input class="button btn btn-warning mr-3 window" id="changepwdBtnHidden" type="hidden"
-						 value="<@locale code="login.password.changepassword"/>" 
-						 		    wurl="<@base/>/userinfo/forwardChangePassword" wwidth="600px" wheight="250px" />
-						 		    
-						 <input class="button btn btn-success mr-3 window" id="usersImportBtn" type="button" 
-						 		value="<@locale code="button.text.import"/>" 
-						 		    wurl="<@base/>/userinfo/import" wwidth="400px" wheight="250px" />
-						 		    
-						 		    		    
+					 <div id="tool_box_right">    
 						 <input class="button btn btn-success mr-3" id="addBtn" type="button" value="<@locale code="button.text.add"/>" 
 						 		    wurl="<@base/>/userinfo/forwardAdd"
 						 		    wwidth="960"
@@ -221,9 +229,23 @@ $(function () {
 					 				wwidth="960"
 						 		    wheight="600"
 					 		    	target="window"> 
-					 		    	
 					 	<input class="button btn btn-danger mr-3 "  id="deleteBtn" type="button" value="<@locale code="button.text.delete"/>"
 					 				wurl="<@base/>/userinfo/delete" />
+					 	<input  class="button btn btn-secondary"  id="moreBtn" type="button" size="50"  value="<@locale code="button.text.expandsearch"/>" expandValue="<@locale code="button.text.expandsearch"/>"  collapseValue="<@locale code="button.text.collapsesearch"/>">	    	
+					 </div>
+					 <div id="tool_box_right_more" style="display:none;">
+					 	<input class="button btn btn-warning mr-3" id="changepwdBtn" type="button" value="<@locale code="login.password.changepassword"/>" />
+						<input class="button btn btn-warning mr-3 window" id="changepwdBtnHidden" type="hidden"
+						 value="<@locale code="login.password.changepassword"/>" 
+						 		    wurl="<@base/>/userinfo/forwardChangePassword" wwidth="600px" wheight="250px" />
+						
+						 <input class="button btn btn-info mr-3 window" id="userAdjointBtn" type="button" 
+						 		value="<@locale code="button.text.adjunct"/>"  ref="adjunctUserIdRef"
+						 		    wurl="<@base/>/useradjoint/list" wwidth="900px" wheight="600px" />
+						 <input  id="adjunctUserIdRef" 		type="hidden" />     		    
+						 <input class="button btn btn-success mr-3 window" id="usersImportBtn" type="button" 
+						 		value="<@locale code="button.text.import"/>" 
+						 		    wurl="<@base/>/userinfo/import" wwidth="400px" wheight="250px" />
 					</div>
 				</td>
 			</tr>