Browse Source

Merge branch 'dev' into tenderInterface

dongbw 8 years ago
parent
commit
7eead99bc7
22 changed files with 1028 additions and 124 deletions
  1. 16 23
      src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java
  2. 6 11
      src/main/java/com/uas/platform/b2b/controller/CartController.java
  3. 18 33
      src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java
  4. 23 12
      src/main/java/com/uas/platform/b2b/controller/RoleController.java
  5. 7 7
      src/main/java/com/uas/platform/b2b/controller/UserController.java
  6. 24 3
      src/main/java/com/uas/platform/b2b/dao/RoleDao.java
  7. 4 1
      src/main/java/com/uas/platform/b2b/model/Cart.java
  8. 482 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderCart.java
  9. 331 0
      src/main/java/com/uas/platform/b2b/model/PurchaseOrderCartItem.java
  10. 16 2
      src/main/java/com/uas/platform/b2b/service/RoleService.java
  11. 6 1
      src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java
  12. 16 20
      src/main/java/com/uas/platform/b2b/service/impl/CartServiceImpl.java
  13. 11 0
      src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java
  14. 1 0
      src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java
  15. 4 0
      src/main/webapp/WEB-INF/web.xml
  16. 28 4
      src/main/webapp/resources/js/index/app.js
  17. 13 1
      src/main/webapp/resources/js/index/services/Account.js
  18. 13 0
      src/main/webapp/resources/tpl/error/index.html
  19. 1 1
      src/main/webapp/resources/tpl/index/approvalFlow/user.html
  20. 1 1
      src/main/webapp/resources/tpl/index/purc/addOrder.html
  21. 2 2
      src/main/webapp/resources/tpl/index/purc/cart_detail.html
  22. 5 2
      src/main/webapp/resources/tpl/index/purc/modal/purc_uplodaByBatch.html

+ 16 - 23
src/main/java/com/uas/platform/b2b/controller/BaseInfoController.java

@@ -1,28 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.fastjson.JSONObject;
 import com.uas.account.util.AccountUtils;
 import com.uas.platform.b2b.model.Enterprise;
@@ -51,6 +28,22 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * 基础资料设置<br>

+ 6 - 11
src/main/java/com/uas/platform/b2b/controller/CartController.java

@@ -1,16 +1,5 @@
 package com.uas.platform.b2b.controller;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
@@ -30,6 +19,12 @@ import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 购物车

+ 18 - 33
src/main/java/com/uas/platform/b2b/controller/DeputyOrderController.java

@@ -1,42 +1,10 @@
 package com.uas.platform.b2b.controller;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.manage.service.MasterService;
-import com.uas.platform.b2b.model.AccessToken;
-import com.uas.platform.b2b.model.DeputyEnterprise;
-import com.uas.platform.b2b.model.DeputyHisVendors;
-import com.uas.platform.b2b.model.DeputyLastOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrder;
-import com.uas.platform.b2b.model.DeputyOrderKeywords;
-import com.uas.platform.b2b.model.DeputyOrdersLog;
-import com.uas.platform.b2b.model.DeputyPaymentCompany;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AccessTokenService;
 import com.uas.platform.b2b.service.DeputyOrderService;
@@ -60,6 +28,22 @@ import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.model.Sort.Type;
 import com.uas.search.b2b.util.SearchConstants;
 import com.uas.sso.common.util.HttpUtil.ResponseWrap;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 代采订单
@@ -668,6 +652,7 @@ public class DeputyOrderController {
 			ResponseWrap res = com.uas.sso.common.util.HttpUtil.doGet(redirectUrl.toString());
 			if (!res.isSuccess())
 				map.put("error", "暂未获取到相关数据");
+			System.out.println(res.getContent());
 			JSONObject jsonObject = JSONObject.parseObject(res.getContent());
 			if (jsonObject != null) {
 				String nodeStr = URLDecoder.decode(jsonObject.getString("nodes"), "UTF-8");

+ 23 - 12
src/main/java/com/uas/platform/b2b/controller/RoleController.java

@@ -1,22 +1,18 @@
 package com.uas.platform.b2b.controller;
 
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
 import com.uas.platform.b2b.model.Role;
 import com.uas.platform.b2b.service.RoleService;
 import com.uas.platform.b2b.support.UsageBufferedLogger;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 账户管理--角色
@@ -71,4 +67,19 @@ public class RoleController {
 		logger.log("角色", "删除角色", role.getDuty(), role.getDesc(), role.getId());
 		return new ResponseEntity<String>(HttpStatus.OK);
 	}
+
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+	 *
+	 * @return
+	 */
+	@RequestMapping(value = "/currentRole", method =  RequestMethod.GET)
+	@ResponseBody
+	public ModelMap getCurrentRoles(){
+		return roleService.getCurrentRoles();
+	}
+
+	@RequestMapping(value = "/isManager", method =  RequestMethod.GET)
+	@ResponseBody
+	public ModelMap isManager(){return  roleService.isManager(); }
 }

+ 7 - 7
src/main/java/com/uas/platform/b2b/controller/UserController.java

@@ -198,13 +198,13 @@ public class UserController {
 	 * 
 	 * @return
 	 */
-	@RequestMapping(method = RequestMethod.PUT)
-	public ResponseEntity<String> saveUser(@RequestBody String json, HttpServletRequest request) {
-		User user = FlexJsonUtils.fromJson(json, User.class);
-		user = userService.updateUserInfo(user);
-		if (user != null) {
-			logger.log("用户信息", "修改用户信息,UU:" + user.getUserUU());
-			if (SystemSession.getUser().getUserUU().equals(user.getUserUU()))
+			@RequestMapping(method = RequestMethod.PUT)
+			public ResponseEntity<String> saveUser(@RequestBody String json, HttpServletRequest request) {
+				User user = FlexJsonUtils.fromJson(json, User.class);
+				user = userService.updateUserInfo(user);
+				if (user != null) {
+					logger.log("用户信息", "修改用户信息,UU:" + user.getUserUU());
+					if (SystemSession.getUser().getUserUU().equals(user.getUserUU()))
 				request.getSession().setAttribute("user", user);
 		}
 		return new ResponseEntity<String>(HttpStatus.OK);

+ 24 - 3
src/main/java/com/uas/platform/b2b/dao/RoleDao.java

@@ -1,13 +1,12 @@
 package com.uas.platform.b2b.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2b.model.Role;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2b.model.Role;
+import java.util.List;
 
 @Repository
 public interface RoleDao extends JpaRepository<Role, Long> {
@@ -44,4 +43,26 @@ public interface RoleDao extends JpaRepository<Role, Long> {
 	public int getCountByEnUUAndDesc(@Param("enUU") long enUU, @Param("desc") String desc);
 
     List<Role> findByEnUUAndIssys(Long vendUU, short yes);
+
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理<br>
+	 *
+	 * 分配客户需要
+	 *
+	 * @param enuu
+	 * @param useruu
+	 * @return
+	 */
+    @Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and (r.role_name = 'ROLE_ADMIN' or r.role_name = 'ROLE_SALEMANAGER')",nativeQuery = true)
+    Double findByEnuuAndUseruu(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
+
+	/**
+	 * 是否是当前企业的管理员(只有管理员才能设置权限)
+	 *
+	 * @param enuu
+	 * @param useruu
+	 * @return
+	 */
+	@Query(value = "select count(1) from sec$roles r left join sec$userrole u on r.role_id = u.role_id where r.role_enuu = :enuu and u.user_uu = :useruu and r.role_name = 'ROLE_ADMIN'",nativeQuery = true)
+	Double findByEnuuAndUserUU(@Param("enuu") Long enuu, @Param("useruu") Long useruu);
 }

+ 4 - 1
src/main/java/com/uas/platform/b2b/model/Cart.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2b.model;
 
+import org.hibernate.annotations.Where;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Set;
@@ -167,7 +169,8 @@ public class Cart implements Serializable {
 	/**
 	 * 购物车明细
 	 */
-	@OneToMany(mappedBy = "cart", cascade = { CascadeType.REFRESH }, fetch = FetchType.EAGER)
+	@OneToMany(mappedBy = "cart",  cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
 	@OrderBy("number")
 	private Set<CartDetail> cartDetails;
 

+ 482 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderCart.java

@@ -0,0 +1,482 @@
+package com.uas.platform.b2b.model;
+
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.Set;
+
+/**
+ * 平台里面,以供应商的角度来查看采购订单 <br>
+ * 级联采购明细<br>
+ * 已结案采购单
+ * 
+ * @author yingp
+ * 
+ */
+@Table(name = "purc$orders", indexes = { @Index(name = "purc$orders_date", columnList = "pu_date") })
+@Where(clause = "pu_status = 311")
+@Entity
+public class PurchaseOrderCart {
+
+	@Id
+	@Column(name = "pu_id")
+	private Long id;
+
+	/**
+	 * 采购企业UU
+	 */
+	@Column(name = "pu_enuu")
+	private Long enUU;
+
+	/**
+	 * 采购企业
+	 */
+	@OneToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
+	@JoinColumn(name = "pu_enuu", insertable = false, updatable = false)
+	private EnterpriseInfo enterprise;
+
+	/**
+	 * 采购单所属采购员
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pu_useruu", insertable = false, updatable = false)
+	private UserBaseInfo user;
+
+	/**
+	 * 采购单所属采购员UU
+	 */
+	@Column(name = "pu_useruu")
+	private Long userUU;
+
+	/**
+	 * 采购单号
+	 */
+	@Column(name = "pu_code")
+	private String code;
+
+	/**
+	 * 采购类型
+	 */
+	@Column(name = "pu_type")
+	private String type;
+
+	/**
+	 * 单据归属日期
+	 */
+	@Column(name = "pu_date")
+	private Date date;
+
+	/**
+	 * 录单人
+	 */
+	@Column(name = "pu_recorder")
+	private String recorder;
+
+	/**
+	 * 审核人
+	 */
+	@Column(name = "pu_auditor")
+	private String auditor;
+
+	/**
+	 * 供应商UU
+	 */
+	@Column(name = "pu_venduu")
+	private Long vendUU;
+
+	/**
+	 * 供应商联系人UU
+	 */
+	@Column(name = "pu_venduseruu")
+	private Long vendUserUU;
+
+	/**
+	 * 收货地址
+	 */
+	@Column(name = "pu_shipaddress")
+	private String shipAddress;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pu_remark")
+	private String remark;
+
+	/**
+	 * 付款币种
+	 */
+	@Column(name = "pu_currency")
+	private String currency;
+
+	/**
+	 * 汇率
+	 */
+	@Column(name = "pu_rate")
+	private Float rate;
+
+	/**
+	 * 付款方式
+	 */
+	@Column(name = "pu_payments")
+	private String payments;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pu_status")
+	private Short status;
+
+	/**
+	 * 从平台传到供应商ERP的状态
+	 */
+	@Column(name = "pu_sendstatus")
+	private Short sendStatus;
+
+	/**
+	 * 采购单明细
+	 */
+	@OneToMany(mappedBy = "order", cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.REMOVE,
+			CascadeType.MERGE }, fetch = FetchType.EAGER)
+	@OrderBy("number")
+	private Set<PurchaseOrderCartItem> orderItems;
+
+	/**
+	 * 1表示该采购单的明细至少有一条结案的情况
+	 */
+	@Column(name = "pu_end")
+	private Short end;
+	
+	/**
+	 * 显示状态(0 已查看 , 1 未查看, 2 置顶)
+	 */
+	@Column(name = "pu_display")
+	private Short display;
+
+	public Short getCustPrint() {
+		return custPrint;
+	}
+
+	public void setCustPrint(Short custPrint) {
+		this.custPrint = custPrint;
+	}
+
+	/**
+	 * 打印次数(供应商)
+	 */
+	@Column(name = "pu_print")
+	private Short print;
+
+	/**
+	 * 打印次数(采购方)
+	 */
+	@Column(name = "pu_custprint")
+	private Short custPrint;
+
+	/**
+	 * 应付供应商名称
+	 */
+	@Column(name = "pu_receivename")
+	private String receiveName;
+
+	/**
+	 * 客户公司名称
+	 */
+	@Column(name = "pu_cop")
+	private String cop;
+
+	/**
+	 * 应付供应商编号
+	 */
+	@Column(name = "pu_receivecode")
+	private String receiveCode;
+	
+	/**
+	 * 供应商名称
+	 */
+	@Transient
+	private String enName;
+
+	@Column(name = "pu_purpose")
+	private String purpose; // 用途,
+
+	@Column(name = "pu_arcustcode")
+	private String arCustCode; // 买家应收客户,
+
+	@Column(name = "pu_shcustcode")
+	private String shCustCode; // 收货客户,
+
+	@Column(name = "pu_refcode")
+	private String refCode; // 销售单号
+
+	@Column(name = "pu_custcode")
+	private String custCode; // 客户编号,
+
+	@Column(name = "pu_custname")
+	private String custName; // 客户名称。
+
+	public String getPurpose() {
+		return purpose;
+	}
+
+	public void setPurpose(String purpose) {
+		this.purpose = purpose;
+	}
+
+	public String getArCustCode() {
+		return arCustCode;
+	}
+
+	public void setArCustCode(String arCustCode) {
+		this.arCustCode = arCustCode;
+	}
+
+	public String getShCustCode() {
+		return shCustCode;
+	}
+
+	public void setShCustCode(String shCustCode) {
+		this.shCustCode = shCustCode;
+	}
+
+	public String getRefCode() {
+		return refCode;
+	}
+
+	public void setRefCode(String refCode) {
+		this.refCode = refCode;
+	}
+
+	public String getCustCode() {
+		return custCode;
+	}
+
+	public void setCustCode(String custCode) {
+		this.custCode = custCode;
+	}
+
+	public String getCustName() {
+		return custName;
+	}
+
+	public void setCustName(String custName) {
+		this.custName = custName;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public EnterpriseInfo getEnterprise() {
+		return enterprise;
+	}
+
+	public void setEnterprise(EnterpriseInfo enterprise) {
+		this.enterprise = enterprise;
+	}
+
+	public UserBaseInfo getUser() {
+		return user;
+	}
+
+	public void setUser(UserBaseInfo user) {
+		this.user = user;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public Date getDate() {
+		return date;
+	}
+
+	public void setDate(Date date) {
+		this.date = date;
+	}
+
+	public String getRecorder() {
+		return recorder;
+	}
+
+	public void setRecorder(String recorder) {
+		this.recorder = recorder;
+	}
+
+	public String getAuditor() {
+		return auditor;
+	}
+
+	public void setAuditor(String auditor) {
+		this.auditor = auditor;
+	}
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public Long getVendUserUU() {
+		return vendUserUU;
+	}
+
+	public void setVendUserUU(Long vendUserUU) {
+		this.vendUserUU = vendUserUU;
+	}
+
+	public String getShipAddress() {
+		return shipAddress;
+	}
+
+	public void setShipAddress(String shipAddress) {
+		this.shipAddress = shipAddress;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getCurrency() {
+		return currency;
+	}
+
+	public void setCurrency(String currency) {
+		this.currency = currency;
+	}
+
+	public Float getRate() {
+		return rate;
+	}
+
+	public void setRate(Float rate) {
+		this.rate = rate;
+	}
+
+	public String getPayments() {
+		return payments;
+	}
+
+	public void setPayments(String payments) {
+		this.payments = payments;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	public Short getSendStatus() {
+		return sendStatus;
+	}
+
+	public void setSendStatus(Short sendStatus) {
+		this.sendStatus = sendStatus;
+	}
+
+	public Set<PurchaseOrderCartItem> getOrderItems() {
+		return orderItems;
+	}
+
+	public void setOrderItems(Set<PurchaseOrderCartItem> orderItems) {
+		this.orderItems = orderItems;
+	}
+
+	public Short getEnd() {
+		return end;
+	}
+
+	public void setEnd(Short end) {
+		this.end = end;
+	}
+
+	public Short getDisplay() {
+		if(this.display == null) this.display = 0;
+		return display;
+	}
+
+	public void setDisplay(Short display) {
+		this.display = display;
+	}
+
+	public Short getPrint() {
+		return print;
+	}
+
+	public void setPrint(Short print) {
+		this.print = print;
+	}
+
+	public String getReceiveName() {
+		return receiveName;
+	}
+
+	public void setReceiveName(String receiveName) {
+		this.receiveName = receiveName;
+	}
+
+	public String getReceiveCode() {
+		return receiveCode;
+	}
+
+	public void setReceiveCode(String receiveCode) {
+		this.receiveCode = receiveCode;
+	}
+
+	public String getEnName() {
+		return enName;
+	}
+
+	public void setEnName(String enName) {
+		this.enName = enName;
+	}
+
+	public String getCop() {
+		return cop;
+	}
+
+	public void setCop(String cop) {
+		this.cop = cop;
+	}
+}

+ 331 - 0
src/main/java/com/uas/platform/b2b/model/PurchaseOrderCartItem.java

@@ -0,0 +1,331 @@
+package com.uas.platform.b2b.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.hibernate.annotations.Where;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Table(name = "purc$orderitems")
+@Entity
+public class PurchaseOrderCartItem {
+
+	@Id
+	@Column(name = "pd_id")
+	private Long id;
+
+	/**
+	 * 序号
+	 */
+	@Column(name = "pd_number")
+	private Short number;
+
+	/**
+	 * 采购订单
+	 */
+	@ManyToOne(cascade = CascadeType.ALL, optional = true)
+	@JoinColumn(name = "pd_puid", nullable = false)
+	private PurchaseOrderCart order;
+
+	/**
+	 * 产品ID
+	 */
+	@Column(name = "pd_prid")
+	private Long productId;
+
+	/**
+	 * 产品
+	 */
+	@OneToOne(cascade = { CascadeType.REFRESH })
+	@JoinColumn(name = "pd_prid", insertable = false, updatable = false)
+	private Product product;
+
+	/**
+	 * 数量
+	 */
+	@Column(name = "pd_qty")
+	private Double qty;
+
+	/**
+	 * 已回复的数量
+	 */
+	@Column(name = "pd_replyqty")
+	private Double replyQty;
+
+	/**
+	 * (最近一次)回复的交期
+	 */
+	@Column(name = "pd_replydelivery")
+	private Date replyDelivery;
+
+	/**
+	 * (最近一次)回复的备注
+	 */
+	@Column(name = "pd_replyremark")
+	private String replyRemark;
+
+	/**
+	 * 备注
+	 */
+	@Column(name = "pd_remark")
+	private String remark;
+
+	/**
+	 * 送货工厂
+	 */
+	@Column(name = "pd_factory")
+	private String factory;
+
+	/**
+	 * 供应商规格
+	 */
+	@Column(name = "pd_vendspec")
+	private String vendspec;
+
+	public String getVendspec() {
+		return vendspec;
+	}
+
+	public void setVendspec(String vendspec) {
+		this.vendspec = vendspec;
+	}
+
+	/**
+	 * 含税单价
+	 */
+	@Column(name = "pd_price")
+	private Double price;
+
+	/**
+	 * 税率
+	 */
+	@Column(name = "pd_taxrate")
+	private Float taxrate;
+
+	/**
+	 * 处理状态(已回复、未回复),全部回复后改为已回复
+	 */
+	@Column(name = "pd_status", insertable = false, updatable = false)
+	private Short status;
+
+	/**
+	 * 含税金额
+	 */
+	@Column(name = "pd_amount", insertable = false, updatable = false)
+	private Double amount;
+
+	/**
+	 * 不含税单价
+	 */
+	@Column(name = "pd_notaxprice", insertable = false, updatable = false)
+	private Double noTaxPrice;
+
+	/**
+	 * 不含税金额
+	 */
+	@Column(name = "pd_notaxamount", insertable = false, updatable = false)
+	private Double noTaxAmount;
+
+	/**
+	 * 交货日期
+	 */
+	@Column(name = "pd_delivery")
+	private Date delivery;
+
+	/**
+	 * 客户已验收数量
+	 */
+	@Column(name = "pd_acceptqty")
+	private Double acceptQty;
+
+	/**
+	 * 客户验退数量
+	 */
+	@Column(name = "pd_returnqty")
+	private Double returnQty;
+
+	/**
+	 * 关键词查询相关
+	 */
+	@Transient
+	private Boolean key;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Short getNumber() {
+		return number;
+	}
+
+	public void setNumber(Short number) {
+		this.number = number;
+	}
+
+	public Long getProductId() {
+		return productId;
+	}
+
+	public void setProductId(Long productId) {
+		this.productId = productId;
+	}
+
+	public Product getProduct() {
+		return product;
+	}
+
+	public void setProduct(Product product) {
+		this.product = product;
+	}
+
+	public Double getQty() {
+		return qty;
+	}
+
+	public void setQty(Double qty) {
+		this.qty = qty;
+	}
+
+	public Double getReplyQty() {
+		return replyQty;
+	}
+
+	public void setReplyQty(Double replyQty) {
+		this.replyQty = replyQty;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Double getPrice() {
+		return price;
+	}
+
+	public void setPrice(Double price) {
+		this.price = price;
+	}
+
+	public Float getTaxrate() {
+		return taxrate;
+	}
+
+	public void setTaxrate(Float taxrate) {
+		this.taxrate = taxrate;
+	}
+
+	public Double getAmount() {
+		return amount;
+	}
+
+	public void setAmount(Double amount) {
+		this.amount = amount;
+	}
+
+	public Double getNoTaxPrice() {
+		return noTaxPrice;
+	}
+
+	public void setNoTaxPrice(Double noTaxPrice) {
+		this.noTaxPrice = noTaxPrice;
+	}
+
+	public Double getNoTaxAmount() {
+		return noTaxAmount;
+	}
+
+	public void setNoTaxAmount(Double noTaxAmount) {
+		this.noTaxAmount = noTaxAmount;
+	}
+
+	public Date getDelivery() {
+		return delivery;
+	}
+
+	public void setDelivery(Date delivery) {
+		this.delivery = delivery;
+	}
+
+	public Date getReplyDelivery() {
+		return replyDelivery;
+	}
+
+	public void setReplyDelivery(Date replyDelivery) {
+		this.replyDelivery = replyDelivery;
+	}
+
+	public String getReplyRemark() {
+		return replyRemark;
+	}
+
+	public void setReplyRemark(String replyRemark) {
+		this.replyRemark = replyRemark;
+	}
+
+	public Short getStatus() {
+		return status;
+	}
+
+	public void setStatus(Short status) {
+		this.status = status;
+	}
+
+	@JsonIgnore
+	@JSONField(serialize = false)
+	public PurchaseOrderCart getOrder() {
+		return order;
+	}
+
+	public void setOrder(PurchaseOrderCart order) {
+		this.order = order;
+	}
+
+	public Double getAcceptQty() {
+		return acceptQty;
+	}
+
+	public void setAcceptQty(Double acceptQty) {
+		this.acceptQty = acceptQty;
+	}
+
+	public Double getReturnQty() {
+		return returnQty;
+	}
+
+	public void setReturnQty(Double returnQty) {
+		this.returnQty = returnQty;
+	}
+
+	public Boolean getKey() {
+		return key;
+	}
+
+	public void setKey(Boolean key) {
+		this.key = key;
+	}
+
+	public String getFactory() {
+		return factory;
+	}
+
+	public void setFactory(String factory) {
+		this.factory = factory;
+	}
+
+	public double getBalance() {
+		double qtyNum, returnQtyNum, acceptQtyNum;
+		qtyNum = qty == null ? 0 : qty;
+		returnQtyNum = returnQty == null ? 0 : returnQty;
+		acceptQtyNum = acceptQty == null ? 0 : acceptQty;
+		return qtyNum + returnQtyNum - acceptQtyNum;
+	}
+}

+ 16 - 2
src/main/java/com/uas/platform/b2b/service/RoleService.java

@@ -1,8 +1,9 @@
 package com.uas.platform.b2b.service;
 
-import java.util.List;
-
 import com.uas.platform.b2b.model.Role;
+import org.springframework.ui.ModelMap;
+
+import java.util.List;
 
 public interface RoleService {
 
@@ -50,4 +51,17 @@ public interface RoleService {
 	 */
 	public void delete(long id);
 
+	/**
+	 * 查询当前用户在当前企业的角色是否是管理员或者销售经理
+	 *
+	 * @return
+	 */
+	public ModelMap getCurrentRoles();
+
+	/**
+	 * 判断是否是当前企业的管理员
+	 *
+	 * @return
+	 */
+	ModelMap isManager();
 }

+ 6 - 1
src/main/java/com/uas/platform/b2b/service/impl/BaseInfoServiceImpl.java

@@ -615,7 +615,12 @@ public class BaseInfoServiceImpl implements BaseInfoService {
 					orderDetail.setNumber(i);
 					orderDetail.setPuid(order.getId());
 					orderDetail.setPrice(Double.valueOf(orderitem.getPrice()));
-					orderDetail.setTaxrate(orderitem.getTaxrate());
+					// 这里根据币别设置税率信息,非RMB全部设置0
+					if(!order.getCurrency().equals("RMB")) {
+						orderDetail.setTaxrate((float) 0);
+					} else {
+						orderDetail.setTaxrate(orderitem.getTaxrate());
+					}
 				} else {
 					orderDetail = purchaseOrderAllItemDao.findOne(orderitem.getId());
 					orderDetail.setRemark(orderitem.getRemark());

+ 16 - 20
src/main/java/com/uas/platform/b2b/service/impl/CartServiceImpl.java

@@ -2,9 +2,11 @@ package com.uas.platform.b2b.service.impl;
 
 import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
 import com.uas.platform.b2b.dao.PurchaseOrderAllItemDao;
+import com.uas.platform.b2b.dao.PurchaseOrderCartDao;
 import com.uas.platform.b2b.dao.VendorDao;
 import com.uas.platform.b2b.model.PurchaseOrderAll;
 import com.uas.platform.b2b.model.PurchaseOrderAllItem;
+import com.uas.platform.b2b.model.PurchaseOrderCart;
 import com.uas.platform.b2b.model.Vendor;
 import com.uas.platform.b2b.service.CartService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -44,6 +46,9 @@ public class CartServiceImpl implements CartService {
 	@Autowired
 	private PurchaseOrderAllDao purchaseOrderAllDao;
 
+	@Autowired
+	private PurchaseOrderCartDao cartDao;
+
 	@Override
 	public SPage<PurchaseOrderAll> getCartList(PageParams params, String keyword) {
 		SPage<PurchaseOrderAll> orders = new SPage<PurchaseOrderAll>();
@@ -85,16 +90,13 @@ public class CartServiceImpl implements CartService {
 	@Override
 	public ModelMap deleteCart(Long id) {
 		ModelMap map = new ModelMap();
-		PurchaseOrderAll purcOrder = purchaseOrderAllDao.findOne(id);
-		if (purcOrder != null && !CollectionUtils.isEmpty(purcOrder.getOrderItems())) {
-			purchaseOrderAllItemDao.delete(purcOrder.getOrderItems());
-			purchaseOrderAllDao.delete(id);
-		} else if (purcOrder != null && CollectionUtils.isEmpty(purcOrder.getOrderItems())) {
-			purchaseOrderAllDao.delete(id);
-		} else {
+		// 采用可以级联删除的dao方法,更加快速
+		try {
+			cartDao.delete(id);
+			map.put("success", "删除成功");
+		} catch (Exception e) {
 			map.put("error", "该单据不存在,可能已被删除");
 		}
-		map.put("success", "删除成功");
 		return map;
 	}
 
@@ -114,20 +116,14 @@ public class CartServiceImpl implements CartService {
 	@Override
 	public ModelMap deleteCarts() {
 		ModelMap map = new ModelMap();
-		List<PurchaseOrderAll> orders = purchaseOrderAllDao
-				.findByEnUUAndStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.UNAUDIT.value());
+		List<PurchaseOrderCart> orders = cartDao.findByEnUUAndStatus(SystemSession.getUser().getEnterprise().getUu(), (short) Status.UNAUDIT.value());
 		if (!CollectionUtils.isEmpty(orders)) {
-			for (PurchaseOrderAll order : orders) {
-				if (!CollectionUtils.isEmpty(order.getOrderItems())) {
-					for (PurchaseOrderAllItem detail : order.getOrderItems()) {
-						purchaseOrderAllItemDao.delete(detail.getId());
-					}
-				}
+			try {
+				cartDao.delete(orders);
+				map.put("success", "购物车已清空");
+			} catch (Exception e) {
+				map.put("error", "购物车删除失败");
 			}
-			purchaseOrderAllDao.delete(orders);
-			map.put("success", "购物车已清空");
-		} else {
-			map.put("error", "购物车删除失败");
 		}
 		return map;
 	}

+ 11 - 0
src/main/java/com/uas/platform/b2b/service/impl/RoleServiceImpl.java

@@ -11,6 +11,7 @@ import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.Constant;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 
@@ -86,4 +87,14 @@ public class RoleServiceImpl implements RoleService {
 		delete(findById(id));
 	}
 
+	@Override
+	public ModelMap getCurrentRoles() {
+		return new ModelMap("count", roleDao.findByEnuuAndUseruu(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()));
+	}
+
+	@Override
+	public ModelMap isManager() {
+		return new ModelMap("isManager", roleDao.findByEnuuAndUserUU(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU()) > 0 ? true : false);
+	}
+
 }

+ 1 - 0
src/main/java/com/uas/platform/b2b/v2/controller/EnterpriseController.java

@@ -84,6 +84,7 @@ public class EnterpriseController {
 		if (enterprise != null) {
 			enterprise.setEnName(userSpaceDetail.getName());
 			enterprise.setEnShortname(userSpaceDetail.getShortName());
+			enterprise.setEnAddress(userSpaceDetail.getAddress());
 			try {
 				enterpriseService.save(enterprise);
 				return "success";

+ 4 - 0
src/main/webapp/WEB-INF/web.xml

@@ -130,4 +130,8 @@
 		<filter-name>cors</filter-name>
 		<url-pattern>/*</url-pattern>
 	</filter-mapping>
+	<error-page>
+		<error-code>404</error-code>
+		<location>/static/tpl/error/index.html</location>
+	</error-page>
 </web-app>

+ 28 - 4
src/main/webapp/resources/js/index/app.js

@@ -1825,12 +1825,18 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     }]);
 
     // 客户
-    app.controller('CustomerCtrl', ['$scope', 'VendorService', 'BaseService', 'AuthenticationService', 'ngTableParams', '$modal', 'toaster', 'Vendor', 'AccountUser', function ($scope, VendorService, BaseService, AuthenticationService, ngTableParams, $modal, toaster, Vendor, AccountUser) {
+    app.controller('CustomerCtrl', ['$scope', 'VendorService', 'BaseService', 'AuthenticationService', 'ngTableParams', '$modal', 'toaster', 'Vendor', 'AccountUser', 'CurrentRole', function ($scope, VendorService, BaseService, AuthenticationService, ngTableParams, $modal, toaster, Vendor, AccountUser, CurrentRole) {
         BaseService.scrollBackToTop();
         $scope.userInfoResult = true;
         AuthenticationService.getAuthentication().success(function (data) {
             $scope.loading = false;
             $scope.thisUser = data;
+        });
+        // 获取当前用户分配客户的操作权限
+        CurrentRole.roles({}, function (data) {
+            $scope.enabled =  data.count > 0 ? true : false ;
+        }, function (response) {
+
         });
         var getCustInfos = function (custuu) {
             if (custuu) {
@@ -1874,8 +1880,8 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             AccountUser.getEnTransfer ({custUU: customer.myEnterprise.uu}, function(data) {
                 customer.enTransfer = data.result;
                 //是管理员,或者被转移了权限时
-                console.log(customer.enTransfer);
-                if ($scope.thisUser.sys || customer.enTransfer) {
+                console.log($scope.thisUser);
+                if ($scope.enabled || customer.enTransfer) {
                     var modalInstance = $modal.open({
                         animation: true,
                         templateUrl: 'static/tpl/index/account/add_userInfo.html',
@@ -10002,7 +10008,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
     }]);
 
-    app.controller('UserCtrl', ['$scope', '$filter', 'AuthenticationService', 'AccountUser', 'BaseService', 'ngTableParams', 'toaster', '$modal', '$http', 'ngAlert', 'AccountEnterprise', function ($scope, $filter, AuthenticationService, AccountUser, BaseService, ngTableParams, toaster, $modal, $http, ngAlert, AccountEnterprise) {
+    app.controller('UserCtrl', ['$scope', '$filter', 'AuthenticationService', 'AccountUser', 'BaseService', 'ngTableParams', 'toaster', '$modal', '$http', 'ngAlert', 'AccountEnterprise', 'CurrentRole', function ($scope, $filter, AuthenticationService, AccountUser, BaseService, ngTableParams, toaster, $modal, $http, ngAlert, AccountEnterprise, CurrentRole) {
         BaseService.scrollBackToTop();
         $scope.editing = false;
         $scope.loading = true;
@@ -10019,6 +10025,14 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $scope.user = data;
         });
         var users = [];
+
+        var getMangagerInfo = function() {
+            CurrentRole.isManager({}, function(data) {
+               $scope.isManager = data.isManager;
+            });
+        };
+        getMangagerInfo();
+
         $scope.tableParams = new ngTableParams({
             page: 1,
             count: 20,
@@ -13392,18 +13406,22 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     app.controller('PurcUploadByBatchCtrl', ['$scope', 'toaster', '$upload', '$modalInstance', function ($scope, toaster, $upload, $modalInstance) {
         // 通过excel批量上传物料
         $scope.result = null;
+        $scope.loading = false;
         $scope.upload = function () {
+            $scope.loading = true;
             var file = $scope.myFiles[0];
             $upload.upload({
                 url: 'purchase/release/excel',
                 file: file,
                 method: 'POST'
             }).success(function (data) {
+                $scope.loading = false;
                 $scope.result = data;
                 $scope.success = $scope.result.success;
                 $scope.total = $scope.result.total;
                 $scope.alters = $scope.result.alters;
             }).error(function (response) {
+                $scope.loading = false;
                 toaster.pop('error', response.data || response);
             });
         };
@@ -13417,6 +13435,11 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $modalInstance.close($scope.result.products);
         }
 
+        // 点击确定时增加加载标志
+        $scope.addClass = function() {
+            $scope.loading = true;
+        }
+
         $scope.cancel = function () {
             $modalInstance.dismiss();
         }
@@ -13527,6 +13550,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         // 分配权限
         $scope.addUserInfo = function (customer) {
             //TODO
+            console.log($scope.thisUser);
             if ($scope.thisUser.sys) {
                 var modalInstance = $modal.open({
                     animation: true,

+ 13 - 1
src/main/webapp/resources/js/index/services/Account.js

@@ -39,5 +39,17 @@ define([ 'ngResource' ], function() {
 				method: 'GET'
 			}
 		})
-	}]);
+	}]).factory('CurrentRole', ['$resource', function($resource) {
+        return $resource('account/role', {}, {
+            //当前企业对应的角色是否是销售经理或管理员
+            roles: {
+                url: 'account/role/currentRole',
+                method: 'GET'
+            },
+			isManager: {
+            	url: 'account/role/isManager',
+				mehtod: 'GET'
+			}
+        })
+    }]);
 });

+ 13 - 0
src/main/webapp/resources/tpl/error/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>404</title>
+</head>
+<body>
+<script type="text/javascript">
+    //去除掉undefined
+    window.location.href=window.location.href.replace('/undefined', '#/index');
+</script>
+</body>
+</html>

+ 1 - 1
src/main/webapp/resources/tpl/index/approvalFlow/user.html

@@ -455,7 +455,7 @@
 						</td>
 						<!-- 系统管理员无法被编辑限制,因为用户反馈注册用户都是业务员,需要权限来保护隐私,所以拿掉这个限制 -->
 						<!-- ng-show="user.sys && enterprise.enAdminuu != u.userUU" -->
-						<td class="row-operator" >
+						<td class="row-operator" ng-show="isManager">
 							<a class="operator-trigger" href="javascript:void(0);"><i class="fa fa-pencil fa-lg" ng-show="(user.sys && enterprise.enAdminuu != u.userUU) || $data.length == 1"></i></a>
 							<ul class="list-unstyle list-inline operator-menu" ng-show="(user.sys && enterprise.enAdminuu != u.userUU) || $data.length == 1">
 								<li><a ng-click="editUserRole(u)"><i class="fa fa-fw fa-pencil-square-o" style="color: #fff"></i>编辑</a></li>

+ 1 - 1
src/main/webapp/resources/tpl/index/purc/addOrder.html

@@ -142,7 +142,7 @@
 								style="cursor: pointer; width: 568px;" /></span>
 						</div>
 					</li>
-					<li>
+					<li ng-show="false">
 						<div class="fl">
 							<em>税率:</em> <span class="fl" required="required"
 								ng-if="order.currency == 'RMB'"> <select

+ 2 - 2
src/main/webapp/resources/tpl/index/purc/cart_detail.html

@@ -138,7 +138,7 @@
 							</span>
 						</div>
 					</li>
-					<!--<li>
+					<li ng-show="false">
 						<div class="fl">
 							<em>税率:</em> 
 							<span class="fl" required="required" ng-if="order.currency == 'RMB'"> 
@@ -151,7 +151,7 @@
 								class="text select02 wid100" value="0" readonly>
 							</span>
 						</div>
-					</li>-->
+					</li>
 				</ul>
 				<div class="com_title01"
 					ng-if="order.orderItems.length == 0 && order.receiveCode">

+ 5 - 2
src/main/webapp/resources/tpl/index/purc/modal/purc_uplodaByBatch.html

@@ -13,6 +13,9 @@
 		<a style="padding-left: 780px;" ng-click="cancel()"><i class="fa fa-close"></i></a>
 	</div>
 </div>
+<div class="loading " ng-class="{'in': loading}">
+	<i></i>
+</div>
 <div class="modal-body Deputy" style="min-height: 200px;">
 	<div class="content f14 text-bold">第一步、下载Excel模板</div>
 	<div class="box-item">
@@ -45,7 +48,7 @@
 					<button ng-click="upload()" class="btn btn-success btn-sm">
 						确认上传 <i class="fa fa-upload"></i>
 					</button>
-				</div class="col-xs-4">
+				</div>
 			</div>
 			<div>
 			</div>
@@ -61,7 +64,7 @@
 </div>
 <div class="modal-footer Deputy">
 	<div class="text-center">
-		<button class="btn btn-success btn-sm" ng-click="enSure()" type="button">确定</button>
+		<button class="btn btn-success btn-sm" ng-click=" addClass(); enSure()" type="button">确定</button>
 		<button class="btn btn-danger btn-sm" ng-click="cancel()" type="button">取消</button>
 	</div>
 </div>