Browse Source

对企业请求增加合作关系

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@7002 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
hejq 9 years ago
parent
commit
64335238d2

+ 215 - 0
src/main/java/com/uas/platform/b2b/controller/AddPartnerController.java

@@ -0,0 +1,215 @@
+package com.uas.platform.b2b.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.stereotype.Controller;
+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 com.uas.platform.b2b.model.AddPartner;
+import com.uas.platform.b2b.service.AddPartnerService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.web.bind.RequestState;
+
+/**
+ * 添加合作伙伴
+ * 
+ * @author hejq
+ * @time 创建时间:2017年1月4日
+ */
+@Controller
+@RequestMapping(value = "/addpartner")
+public class AddPartnerController {
+	
+	@Autowired
+	private AddPartnerService addPartnerService;
+
+	/**
+	 * 接收到的请求<br>
+	 * 企业的名义查看新的消息<br>
+	 * 全部
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/message", method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getAllMessage(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("supplieruu", SystemSession.getUser().getEnterprise().getUu());
+		return addPartnerService.findBysupplieruu(info, null);
+	}
+
+	/**
+	 * 接收到的请求<br>
+	 * 企业的名义查看新的消息<br>
+	 * 待回复
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/message", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getTodoMessage(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("supplieruu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.NOT_REPLY.value());
+		return addPartnerService.findBysupplieruu(info, null);
+	}
+
+	/**
+	 * 接收到的请求<br>
+	 * 企业的名义查看新的消息<br>
+	 * 已通过
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/message", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getDoneMessage(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("supplieruu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.AGREED.value());
+		return addPartnerService.findBysupplieruu(info, null);
+	}
+
+	/**
+	 * 接收到的请求<br>
+	 * 企业的名义查看新的消息<br>
+	 * 未通过
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/message", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getMessage(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("supplieruu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.NOTAGREED.value());
+		return addPartnerService.findBysupplieruu(info, null);
+	}
+
+	/**
+	 * 已发出的请求<br>
+	 * 请求者的名义查看个人的发出的请求<br>
+	 * 全部
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/request", method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getAllRequest(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("applicantuu", SystemSession.getUser().getUserUU());
+		info.filter("clientuu", SystemSession.getUser().getEnterprise().getUu());
+		return addPartnerService.findByApplicantuu(info, null);
+	}
+
+	/**
+	 * 已发出的请求<br>
+	 * 请求者的名义查看个人的发出的请求<br>
+	 * 待回复
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/request", params = RequestState.TODO, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getTodoRequest(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("applicantuu", SystemSession.getUser().getUserUU());
+		info.filter("clientuu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.NOT_REPLY.value());
+		return addPartnerService.findByApplicantuu(info, null);
+	}
+
+	/**
+	 * 已发出的请求<br>
+	 * 请求者的名义查看个人的发出的请求<br>
+	 * 已通过
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/request", params = RequestState.DONE, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getDoneRequest(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("applicantuu", SystemSession.getUser().getUserUU());
+		info.filter("clientuu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.AGREED.value());
+		return addPartnerService.findByApplicantuu(info, null);
+	}
+
+	/**
+	 * 已发出的请求<br>
+	 * 请求者的名义查看个人的发出的请求<br>
+	 * 未通过
+	 * 
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/request", params = RequestState.END, method = RequestMethod.GET)
+	@ResponseBody
+	public Page<AddPartner> getEndRequest(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		info.filter("applicantuu", SystemSession.getUser().getUserUU());
+		info.filter("clientuu", SystemSession.getUser().getEnterprise().getUu());
+		info.filter("applyStatuscode", Status.NOTAGREED.value());
+		return addPartnerService.findByApplicantuu(info, null);
+	}
+
+	/**
+	 * 新建立合作关系请求
+	 * 
+	 * @param uu
+	 * @return
+	 */
+	@RequestMapping(value = "/request/{uu}", method = RequestMethod.POST)
+	@ResponseBody
+	public AddPartner addNewPartner(@PathVariable("uu") Long uu) {
+		return addPartnerService.addNewPartner(uu);
+	}
+
+	/**
+	 * 再次申请建立合作关系
+	 * 
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/reapply/{id}", method = RequestMethod.POST)
+	@ResponseBody
+	public AddPartner reapply(@PathVariable("id") Long id) {
+		return addPartnerService.reapply(id);
+	}
+
+	/**
+	 * 企业同意申请
+	 */
+	@RequestMapping(value = "/agree/{id}", method = RequestMethod.POST)
+	@ResponseBody
+	public AddPartner agreeRequest(@PathVariable("id") Long id) {
+		return addPartnerService.agreeRequest(id);
+	}
+
+	/**
+	 * 企业拒绝申请
+	 * 
+	 * @param id
+	 * @param reason
+	 * @return
+	 */
+	@RequestMapping(value = "/refuse/{id}", method = RequestMethod.POST)
+	@ResponseBody
+	public AddPartner refuseRequest(@PathVariable("id") Long id, String reason) {
+		return addPartnerService.refuseRequest(id, reason);
+	}
+}

+ 51 - 0
src/main/java/com/uas/platform/b2b/dao/AddPartnerDao.java

@@ -0,0 +1,51 @@
+package com.uas.platform.b2b.dao;
+
+import java.util.List;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.uas.platform.b2b.model.AddPartner;
+
+@ResponseBody
+public interface AddPartnerDao extends JpaRepository<AddPartner, Long>, JpaSpecificationExecutor<AddPartner> {
+
+	/**
+	 * 通过申请人的uu号查询已发出的请求
+	 * 
+	 * @param applicantuu
+	 * @return
+	 */
+	public List<AddPartner> findByApplicantuu(Long applicantuu);
+
+	/**
+	 * 通过供应商uu查询待处理的请求
+	 * 
+	 * @param supplieruu
+	 * @return
+	 */
+	public List<AddPartner> findBySupplieruu(Long supplieruu);
+
+	/**
+	 * 通过企业与客户uu关系找出记录
+	 * 
+	 * @param clientuu
+	 * @param supplieruu
+	 * @return
+	 */
+	public AddPartner findByClientuuAndSupplieruu(Long clientuu, Long supplieruu);
+
+	/**
+	 * 查询未处理的请求
+	 * 
+	 * @param supplieruu
+	 * @param applyStatuscode
+	 * @return
+	 */
+	@Query("select count(o) from AddPartner o where o.supplieruu = :supplieruu and o.applyStatuscode = :applyStatuscode")
+	public int getTodoCountBySupplieruuAndApplyStatuscode(@Param("supplieruu") long supplieruu,
+			@Param("applyStatuscode") int applyStatuscode);
+}

+ 248 - 0
src/main/java/com/uas/platform/b2b/model/AddPartner.java

@@ -0,0 +1,248 @@
+package com.uas.platform.b2b.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+
+/**
+ * 申请建立合作关系的记录
+ * 
+ * @author hejq
+ * @time 创建时间:2017年1月3日
+ */
+@Entity
+@Table(name = "purc$addpartner")
+public class AddPartner implements Serializable {
+
+	/**
+	 * 序列号
+	 */
+	private static final long serialVersionUID = 1L;
+
+	@Id
+	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "purc$addpartner_gen")
+	@SequenceGenerator(name = "purc$addpartner_gen", sequenceName = "purc$addpartner_seq", allocationSize = 1)
+	@Column(name = "ap_id")
+	private Long id;
+	
+	/**
+	 * 客户名称
+	 */
+	@Column(name = "ap_client")
+	private String client;
+	
+	/**
+	 * 客户uu
+	 */
+	@Column(name = "ap_clientuu")
+	private Long clientuu;
+	
+	/**
+	 * 申请人
+	 */
+	@Column(name = "ap_applicant")
+	private String applicant;
+
+	/**
+	 * 申请人uu
+	 */
+	@Column(name = "ap_applicantuu")
+	private Long applicantuu;
+	
+	/**
+	 * 申请时间(最近的申请时间)
+	 */
+	@Column(name = "ap_applydate")
+	private Date applydate;
+	
+	/**
+	 * 申请状态code
+	 */
+	@Column(name = "ap_applystatuscode")
+	private Integer applyStatuscode;
+	
+	/**
+	 * 申请状态
+	 */
+	@Column(name = "ap_applystatus")
+	private String applyStatus;
+
+	/**
+	 * 供应商
+	 */
+	@Column(name = "ap_supplier")
+	private String supplier;
+
+	/**
+	 * 供应商uu
+	 */
+	@Column(name = "ap_supplieruu")
+	private Long supplieruu;
+
+	/**
+	 * 审核人
+	 */
+	@Column(name = "ap_auditor")
+	private String auditor;
+
+	/**
+	 * 审核人uu
+	 */
+	@Column(name = "ap_auditoruu")
+	private Long auditoruu;
+
+	/**
+	 * 审核时间(最近的审核时间)
+	 */
+	@Column(name = "ap_auditdate")
+	private Date auditdate;
+	
+	/**
+	 * 审核结果(是、否)
+	 */
+	@Column(name = "ap_result")
+	private Integer result;
+
+	/**
+	 * 审核不通过时添加原因
+	 */
+	@Column(name = "ap_reason")
+	private String reason;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getClient() {
+		return client;
+	}
+
+	public void setClient(String client) {
+		this.client = client;
+	}
+
+	public Long getClientuu() {
+		return clientuu;
+	}
+
+	public void setClientuu(Long clientuu) {
+		this.clientuu = clientuu;
+	}
+
+	public String getApplicant() {
+		return applicant;
+	}
+
+	public void setApplicant(String applicant) {
+		this.applicant = applicant;
+	}
+
+	public Long getApplicantuu() {
+		return applicantuu;
+	}
+
+	public void setApplicantuu(Long applicantuu) {
+		this.applicantuu = applicantuu;
+	}
+
+	public Date getApplydate() {
+		return applydate;
+	}
+
+	public void setApplydate(Date applydate) {
+		this.applydate = applydate;
+	}
+
+	public Integer getApplyStatuscode() {
+		return applyStatuscode;
+	}
+
+	public void setApplyStatuscode(Integer applyStatuscode) {
+		this.applyStatuscode = applyStatuscode;
+	}
+
+	public String getApplyStatus() {
+		return applyStatus;
+	}
+
+	public void setApplyStatus(String applyStatus) {
+		this.applyStatus = applyStatus;
+	}
+
+	public String getSupplier() {
+		return supplier;
+	}
+
+	public void setSupplier(String supplier) {
+		this.supplier = supplier;
+	}
+
+	public Long getSupplieruu() {
+		return supplieruu;
+	}
+
+	public void setSupplieruu(Long supplieruu) {
+		this.supplieruu = supplieruu;
+	}
+
+	public String getAuditor() {
+		return auditor;
+	}
+
+	public void setAuditor(String auditor) {
+		this.auditor = auditor;
+	}
+
+	public Long getAuditoruu() {
+		return auditoruu;
+	}
+
+	public void setAuditoruu(Long auditoruu) {
+		this.auditoruu = auditoruu;
+	}
+
+	public Date getAuditdate() {
+		return auditdate;
+	}
+
+	public void setAuditdate(Date auditdate) {
+		this.auditdate = auditdate;
+	}
+
+	public Integer getResult() {
+		return result;
+	}
+
+	public void setResult(Integer result) {
+		this.result = result;
+	}
+
+	public String getReason() {
+		return reason;
+	}
+
+	public void setReason(String reason) {
+		this.reason = reason;
+	}
+
+	@Override
+	public String toString() {
+		return "AddPartner [id=" + id + ", client=" + client + ", clientuu=" + clientuu + ", applicant=" + applicant
+				+ ", applicantuu=" + applicantuu + ", applydate=" + applydate + ", applyStatuscode=" + applyStatuscode
+				+ ", applyStatus=" + applyStatus + ", supplier=" + supplier + ", supplieruu=" + supplieruu
+				+ ", auditor=" + auditor + ", auditoruu=" + auditoruu + ", auditdate=" + auditdate + ", result="
+				+ result + ", reason=" + reason + "]";
+	}
+
+}

+ 66 - 0
src/main/java/com/uas/platform/b2b/service/AddPartnerService.java

@@ -0,0 +1,66 @@
+package com.uas.platform.b2b.service;
+
+import org.springframework.data.domain.Page;
+
+import com.uas.platform.b2b.model.AddPartner;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.core.model.PageInfo;
+
+public interface AddPartnerService {
+
+	/**
+	 * 通过申请人uu查询已发出的请求
+	 * 
+	 * @param applicantuu
+	 * @return
+	 */
+	public Page<AddPartner> findByApplicantuu(PageInfo pageInfo, SearchFilter filter);
+
+	/**
+	 * 供应商企业uu查询待审核的请求
+	 * 
+	 * @param supplieruu
+	 * @return
+	 */
+	public Page<AddPartner> findBysupplieruu(PageInfo pageInfo, SearchFilter filter);
+
+	/**
+	 * 向指定的企业发出建立合作关系请求
+	 * 
+	 * @param uu
+	 * @return
+	 */
+	public AddPartner addNewPartner(Long uu);
+
+	/**
+	 * 同意请求
+	 * 
+	 * @param id
+	 * @return
+	 */
+	public AddPartner agreeRequest(Long id);
+
+	/**
+	 * 拒绝请求
+	 * 
+	 * @param id
+	 * @param reason
+	 * @return
+	 */
+	public AddPartner refuseRequest(Long id, String reason);
+
+	/**
+	 * 再次申请建立合作关系
+	 * 
+	 * @param id
+	 * @return
+	 */
+	public AddPartner reapply(Long id);
+
+	/**
+	 * 新收到的未处理的请求数量
+	 * 
+	 * @return
+	 */
+	public Object getMyMessageTodoCount();
+}

+ 157 - 0
src/main/java/com/uas/platform/b2b/service/impl/AddPartnerServiceImpl.java

@@ -0,0 +1,157 @@
+package com.uas.platform.b2b.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import com.uas.platform.b2b.dao.AddPartnerDao;
+import com.uas.platform.b2b.dao.EnterpriseDao;
+import com.uas.platform.b2b.dao.UserBaseInfoDao;
+import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.model.AddPartner;
+import com.uas.platform.b2b.model.Enterprise;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.model.UserBaseInfo;
+import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.service.AddPartnerService;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.Status;
+
+@Service
+public class AddPartnerServiceImpl implements AddPartnerService {
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	@Autowired
+	private AddPartnerDao addPartnerDao;
+
+	@Autowired
+	private EnterpriseDao enterpriseDao;
+
+	@Autowired
+	private VendorDao vendorDao;
+
+	@Autowired
+	private UserBaseInfoDao userBaseInfoDao;
+
+	@Override
+	public Page<AddPartner> findByApplicantuu(final PageInfo pageInfo, SearchFilter filter) {
+		Page<AddPartner> pageLogs = addPartnerDao.findAll(new Specification<AddPartner>() {
+			public Predicate toPredicate(Root<AddPartner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+		return pageLogs;
+	}
+
+	@Override
+	public Page<AddPartner> findBysupplieruu(final PageInfo pageInfo, SearchFilter filter) {
+		Page<AddPartner> pageLogs = addPartnerDao.findAll(new Specification<AddPartner>() {
+			public Predicate toPredicate(Root<AddPartner> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+				query.where(pageInfo.getPredicates(root, query, builder));
+				return null;
+			}
+		}, pageInfo);
+		return pageLogs;
+	}
+
+	@Override
+	public AddPartner addNewPartner(Long uu) {
+		AddPartner adpa = addPartnerDao.findByClientuuAndSupplieruu(SystemSession.getUser().getEnterprise().getUu(),
+				uu);
+		List<Vendor> vendor = vendorDao.findByMyEnUUAndVendUU(SystemSession.getUser().getEnterprise().getUu(), uu);
+		if (!CollectionUtils.isEmpty(vendor)) {
+			throw new IllegalAccessError("该企业已是您的供应商,请不要重复申请");
+		}
+		AddPartner adp = new AddPartner();
+		if (adpa != null) {
+			if (adpa.getApplyStatuscode() == Status.NOT_REPLY.value()) {
+				throw new IllegalAccessError("对该企业的申请已存在,请不要重复申请");
+			}
+		} else {
+			Enterprise enter = enterpriseDao.findEnterpriseByUu(uu);
+			adp.setApplydate(new Date());
+			adp.setApplyStatus(Status.NOT_REPLY.getPhrase());
+			adp.setApplyStatuscode(Status.NOT_REPLY.value());
+			adp.setApplicant(SystemSession.getUser().getUserName());
+			adp.setApplicantuu(SystemSession.getUser().getUserUU());
+			adp.setClient(SystemSession.getUser().getEnterprise().getEnName());
+			adp.setClientuu(SystemSession.getUser().getEnterprise().getUu());
+			adp.setSupplier(enter.getEnName());
+			adp.setSupplieruu(uu);
+			logger.log("请求建立合作关系",
+					"[" + adp.getClient() + "]的[" + adp.getApplicant() + "]向[" + adp.getSupplier() + "]申请建立合作关系");
+		}
+		return addPartnerDao.save(adp);
+	}
+
+	@Override
+	public AddPartner agreeRequest(Long id) {
+		AddPartner adp = addPartnerDao.findOne(id);
+		adp.setAuditor(SystemSession.getUser().getUserName());
+		adp.setAuditoruu(SystemSession.getUser().getUserUU());
+		adp.setApplyStatus(Status.AGREED.getPhrase());
+		adp.setApplyStatuscode(Status.AGREED.value());
+		adp.setAuditdate(new Date());
+		logger.log("同意合作关系请求",
+				"[" + adp.getSupplier() + "]的[" + adp.getAuditor() + "]同意了[" + adp.getApplicant() + "的请求");
+		Vendor vendor = new Vendor();
+		Enterprise vendenter = enterpriseDao.findEnterpriseByUu(adp.getSupplieruu());
+		Enterprise myenter = enterpriseDao.findEnterpriseByUu(adp.getClientuu());
+		UserBaseInfo venduser = userBaseInfoDao.findByUserUU(adp.getAuditoruu());
+		UserBaseInfo myuser = userBaseInfoDao.findByUserUU(adp.getApplicantuu());
+		vendor.setMyEnterprise(myenter);
+		vendor.setMyEnUU(adp.getClientuu());
+		vendor.setMyUser(myuser);
+		vendor.setMyUserUU(adp.getApplicantuu());
+		vendor.setVendorEnterprise(vendenter);
+		vendor.setVendorUser(venduser);
+		vendor.setVendUserUU(adp.getAuditoruu());
+		vendor.setVendEnUU(adp.getSupplieruu());
+		vendorDao.save(vendor);
+		return addPartnerDao.save(adp);
+	}
+
+	@Override
+	public AddPartner refuseRequest(Long id, String reason) {
+		AddPartner adp = addPartnerDao.findOne(id);
+		adp.setAuditdate(new Date());
+		adp.setAuditor(SystemSession.getUser().getUserName());
+		adp.setAuditoruu(SystemSession.getUser().getUserUU());
+		adp.setReason(reason);
+		adp.setApplyStatus(Status.NOTAGREED.getPhrase());
+		adp.setApplyStatuscode(Status.NOTAGREED.value());
+		logger.log("拒绝合作关系请求",
+				"[" + adp.getSupplier() + "]的[" + adp.getAuditor() + "]拒绝了[" + adp.getApplicant() + "]的请求");
+		return addPartnerDao.save(adp);
+	}
+
+	@Override
+	public AddPartner reapply(Long id) {
+		AddPartner adp = addPartnerDao.findOne(id);
+		adp.setApplyStatus(Status.NOT_REPLY.getPhrase());
+		adp.setApplyStatuscode(Status.NOT_REPLY.value());
+		return addPartnerDao.save(adp);
+	}
+
+	@Override
+	public Object getMyMessageTodoCount() {
+		return addPartnerDao.getTodoCountBySupplieruuAndApplyStatuscode(SystemSession.getUser().getEnterprise().getUu(),
+				Status.NOT_REPLY.value());
+	}
+
+}

+ 209 - 0
src/main/webapp/resources/tpl/index/baseInfo/enterpriseList.html

@@ -0,0 +1,209 @@
+<style>
+.condition .more.open {
+	margin-top: 10px;
+	height: 36px;
+	opacity: 1;
+}
+
+.condition .more .form-group {
+	margin-bottom: 10px;
+}
+
+.enterprise-table .header>th {
+	height: 38px;
+	text-align: center;
+	background: #f5f5f5;
+	benterprise-top: 1px solid #e8e8e8;
+	benterprise-bottom: 1px solid #e8e8e8;
+}
+
+.enterprise-table .sep-row {
+	height: 10px;
+}
+
+.enterprise-table .selector {
+	vertical-align: middle;
+	margin: 0 0 2px 0;
+}
+
+.toolbar label {
+	margin-right: 10px;
+	margin-bottom: 0;
+}
+
+.toolbar .select_all {
+	margin: 0 6px 0 10px;
+	line-height: 20px;
+}
+
+.toolbar .btn {
+	-moz-benterprise-radius: 2px;
+	margin-right: 5px;
+	benterprise: 1px solid #dcdcdc;
+	benterprise-radius: 2px;
+	-webkit-benterprise-radius: 2px;
+}
+
+.enterprise-table .enterprise-hd {
+	background: #f5f5f5;
+	height: 40px;
+	line-height: 40px;
+}
+
+.enterprise-table .enterprise-hd td.first {
+	padding-left: 20px;
+}
+
+.enterprise-table .enterprise-hd .enterprise-main span {
+	margin-right: 8px;
+}
+
+.enterprise-table .enterprise-hd .enterprise-code {
+	font-style: normal;
+	font-family: verdana;
+}
+
+.enterprise-table .enterprise-hd .enterprise-sum {
+	padding: 0 5px;
+}
+
+.enterprise-table>tbody {
+	benterprise: 1px solid transparent;
+}
+
+.enterprise-table>tbody:hover {
+	benterprise-color: #56a022;
+	benterprise-width: 2px;
+}
+
+.enterprise-table .operates {
+	display: none;
+}
+
+.enterprise-table .operates i {
+	padding: 0 2px;
+}
+
+.enterprise-table>tbody:hover .operates {
+	display: block;
+}
+.enterprise-table>tbody:hover .operates-status {
+	display: none;
+}
+
+
+.enterprise-table .enterprise-bd {
+	benterprise-bottom: 1px solid #e6e6e6;
+}
+
+.enterprise-table .enterprise-bd>td {
+	padding: 10px 5px;
+	vertical-align: top;
+	position: relative;
+}
+
+.enterprise-table .enterprise-bd .product {
+	padding-left: 20px;
+}
+
+.enterprise-table .enterprise-bd .enterprise-number {
+	position: absolute;
+	top: -1px;
+	left: -1px;
+	width: 20px;
+	height: 20px;
+	line-height: 20px;
+	text-align: center;
+	background: #f5f5f5;
+	font-weight: 500;
+	benterprise: solid 1px #d5d5d5;
+	benterprise-radius: 0 0 10px 0;
+}
+
+.enterprise-table .enterprise-bd .enterprise-number.key {
+	background: #56a022;
+	color: #ffffff;
+}
+
+.unPrinted {
+	color: #56a022;
+}
+
+.info-container .info:hover {
+	color: #CC3333;
+}
+
+</style>
+<div class="block">
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="condition block">
+		<div class="row">
+			<div class="col-xs-10">
+				<div class="search">
+					<div class="form-group form-group-sm has-feedback" dropdown auto-close="outsideClick" on-toggle="searchAdvance=open">
+						<input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入企业名称、简称、物料信息、uu号进行搜索" />
+						<div class="search-advance text-link" ng-class="{'active': searchAdvance}" dropdown-toggle>高级搜索</div>
+						<div id="searchContainer" class="dropdown-menu">
+						</div>
+						<span class="form-control-feedback text-simple"><i class="fa fa-search"></i></span>
+					</div>
+				</div>
+			</div>
+			<div class="col-xs-2">
+				<div class="text-default f14 total">
+					共 <span ng-bind="tableParams.total()" class="text-num"></span>
+				</div>
+			</div>
+		</div>
+	</div>
+<table class="enterprise-table block" ng-table="tableParams">
+	<thead>
+		<tr class="header">
+			<th width="120">企业UU</th>
+			<th width="200">企业名称</th>
+			<th width="200">简称</th>
+			<th width="300">地址</th>
+			<th width="100">操作</th>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="5"></td>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="6"></td>
+		</tr>
+	</thead>
+	<tbody ng-repeat="enterprise in $data">
+		<tr class="enterprise-hd" ng-dblclick="enterprise.$collapsed=!enterprise.$collapsed">
+			<td width="120" class="text-center">
+				<span ng-bind="::enterprise.uu" ></span>
+			</td>
+			<td width="200" class="text-center"><span ng-bind="::enterprise.enName" class="text-center"></span></td>
+			<td width="200" class="text-center"><span ng-bind="::enterprise.enShortname"></span>
+			</td>
+			<td width="300" class="text-center"><span ng-bind="enterprise.enAddress"></span>
+			</td>
+			<td width="100" class="text-center"><a ng-click="addPartner(enterprise.uu)">添加合作关系<i class="fa fa-user-plus"></i></a>
+			</td>
+		</tr>
+		<tr class="enterprise-bd" ng-if="!enterprise.$collapsed ">
+			<td class="product" width="150">
+				<div class="">
+					联系人:
+					<span ng-bind="::enterprise.enCorporation"></span>
+				</div>
+				<div class="text-muted" ng-bind="::enterprise.enTel"></div>
+			</td>
+			<td class="text-center br-l">
+			</td>
+			<td class="text-center">
+			</td>
+			<td class="text-center">
+			</td>
+			<td class="">
+			</td>
+		</tr>
+	</tbody>
+</table>
+</div>

+ 33 - 0
src/main/webapp/resources/tpl/index/baseInfo/left.html

@@ -0,0 +1,33 @@
+<div class="left-nav left-home">
+	<div class="nav-home">
+		<a ui-sref="sale" class="text-default"><span
+			class="glyphicon glyphicon-home icon-left"></span>基础资料</a>
+	</div>
+</div>
+<div class="left-nav">
+	<div class="nav-label">
+		<i></i>物料管理
+	</div>
+	<ul class="list-unstyled">
+		<li ui-sref-active="active"><a ui-sref="baseInfo.prodList">物料列表</a></li>
+		<li ui-sref-active="active"><a ui-sref="baseInfo.uploadByBatch">批量导入</a></li>
+	</ul>
+</div>
+<div class="left-nav">
+	<div class="nav-label">
+		<i></i>企业列表
+	</div>
+	<ul class="list-unstyled">
+		<li ui-sref-active="active"><a ui-sref="baseInfo.enterpriseList">企业列表</a></li>
+		<!-- <li ui-sref-active="active"><a ui-sref="baseInfo.myClient">我的客户</a></li>
+		<li ui-sref-active="active"><a ui-sref="baseInfo.mySupplier">我的供应商</a></li> -->
+		<li ui-sref-active="active"><a ui-sref="baseInfo.myRequest">我发出的请求</a></li>
+		<li ui-sref-active="active"><a ui-sref="baseInfo.myMessage">我收到的请求</a></li>
+	</ul>
+</div>
+<div class="left-nav">
+	<ul class="list-unstyled">
+		<li><a ng-click="showModal()">问题反馈<span class="pull-right"><i class="fa fa-bell-o icon-right"></i></span></a></li>
+		<li><a href="serve">客服中心<span class="pull-right"><i class="fa fa-headphones icon-right"></i></span></a></li>
+	</ul>
+</div>

+ 80 - 0
src/main/webapp/resources/tpl/index/baseInfo/myClient.html

@@ -0,0 +1,80 @@
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="pane base-info" style="max-height: 500px;overflow: auto;">
+	<div class="pane-header">
+		客户资料 (共{{::totalCount}}个)
+		<div class="pull-right">
+			<a href="vendor/customer/xls" target="_self" class="text-simple"><i class="fa fa-file-excel-o fa-fw"></i>导出</a>
+		</div>
+	</div>
+	<div class="pane-body">
+		<table class="table table-bordered table-striped table-hover"
+			ng-table="customerParams">
+			<thead>
+				<tr class="header">
+					<th width="80">UU</th>
+					<th width="180">客户名称</th>
+					<th width="220">地址</th>
+					<th width="80">客户联系人</th>
+					<th width="100">联系人电话</th>
+					<th width="80">我方联系人</th>
+					<th width="50">用户分配</th>
+				</tr>
+			</thead>
+			<tbody>
+					<tr ng-repeat="customer in $data" ng-mouseenter="showUserInfo(customer,true)" ng-mouseleave="showUserInfo(customer,false)">
+						<td class="text-center" ng-bind="::customer.myEnterprise.uu"></td>
+						<td class="text-center" ng-bind="::customer.myEnterprise.enName"></td>
+						<td class="text-center" ng-bind="::customer.myEnterprise.enAddress"></td>
+						<td class="text-center" ng-bind="::customer.myUser.userName"></td>
+						<td ng-bind="::customer.myUser.userTel"></td>
+						<td class="text-center" ng-bind="::customer.vendorUser.userName"></td>
+						<td class="text-center">
+								<a title="新增" style="color: green;" ng-click="addUserInfo(customer)"><i class="fa fa-plus-circle fa-lg"></i></a>&nbsp;&nbsp;
+								<a title="展开" class="text-muted" ng-click="open(customer,$index)"><i class="fa fa-toggle-down fa-lg"></i></a>
+							</div>
+						</td>
+					</tr>
+			</tbody>
+		</table>
+		<div ng-show="userInfoResult">
+			<div class="pane-header">
+				客户分配用户资料 (共<span ng-bind="custInfos.length || 0"></span>个)<span class="f16" style="margin-left: 120px;"ng-bind="custInfo.myEnterprise.enName"></span>
+			</div>
+				<table class="table table-hover"
+					<thead>
+						<tr class="header">
+							<th class="text-center" width="90">用户UU</th>
+							<th class="text-center" width="180">用户名称</th>
+							<th class="text-center" width="200">邮箱</th>
+							<th class="text-center" width="100">联系人电话</th>
+							<th class="text-center" width="50">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr ng-repeat="userinfo in userdata.content">
+							<td class="text-center" ng-bind="::userinfo.userUU"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userName"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userEmail"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userTel"></td>
+							<td class="text-center"><a style="color: red;" title="删除"><i class="fa fa-user-times fa-lg"></i></a></td>
+						</tr>
+					</tbody>
+				</table>
+				<div class="row mb-20" ng-show="userdata.content">
+					<div class="col-md-8 col-md-offset-1 col-sm-10 col-sm-offset-0 col-xs-12 col-xs-offset-0">
+						<a ng-disabled="userdata.first"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="first()">上一页</a>
+						<div class="col-md-8 col-sm-6 col-xs-4 text-center f14"
+							style="line-height: 34px;">{{userdata.page}}/{{userdata.totalPage}}页</div>
+						<a ng-disabled="userdata.last"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="last()">下一页</a>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>

+ 218 - 0
src/main/webapp/resources/tpl/index/baseInfo/myMessage.html

@@ -0,0 +1,218 @@
+<style>
+.condition .more.open {
+	margin-top: 10px;
+	height: 36px;
+	opacity: 1;
+}
+
+.condition .more .form-group {
+	margin-bottom: 10px;
+}
+
+.order-table .header>th {
+	height: 38px;
+	text-align: center;
+	background: #f5f5f5;
+	border-top: 1px solid #e8e8e8;
+	border-bottom: 1px solid #e8e8e8;
+}
+
+.order-table .sep-row {
+	height: 10px;
+}
+
+.order-table .selector {
+	vertical-align: middle;
+	margin: 0 0 2px 0;
+}
+
+.toolbar label {
+	margin-right: 10px;
+	margin-bottom: 0;
+}
+
+.toolbar .select_all {
+	margin: 0 6px 0 10px;
+	line-height: 20px;
+}
+
+.toolbar .btn {
+	-moz-border-radius: 2px;
+	margin-right: 5px;
+	border: 1px solid #dcdcdc;
+	border-radius: 2px;
+	-webkit-border-radius: 2px;
+}
+
+.order-table .order-hd {
+	background: #f5f5f5;
+	height: 40px;
+	line-height: 40px;
+}
+
+.order-table .order-hd td.first {
+	padding-left: 20px;
+}
+
+.order-table .order-hd .order-main span {
+	margin-right: 8px;
+}
+
+.order-table .order-hd .order-code {
+	font-style: normal;
+	font-family: verdana;
+}
+
+.order-table .order-hd .order-sum {
+	padding: 0 5px;
+}
+
+.order-table>tbody {
+	border: 1px solid transparent;
+}
+
+.order-table>tbody:hover {
+	border-color: #56a022;
+	border-width: 2px;
+}
+
+.order-table .operates {
+	display: none;
+}
+
+.order-table .operates i {
+	padding: 0 2px;
+}
+
+.order-table>tbody:hover .operates {
+	display: block;
+}
+.order-table>tbody:hover .operates-status {
+	display: none;
+}
+
+
+.order-table .order-bd {
+	border-bottom: 1px solid #e6e6e6;
+}
+
+.order-table .order-bd>td {
+	padding: 10px 5px;
+	vertical-align: top;
+	position: relative;
+}
+
+.order-table .order-bd .product {
+	padding-left: 20px;
+}
+
+.order-table .order-bd .order-number {
+	position: absolute;
+	top: -1px;
+	left: -1px;
+	width: 20px;
+	height: 20px;
+	line-height: 20px;
+	text-align: center;
+	background: #f5f5f5;
+	font-weight: 500;
+	border: solid 1px #d5d5d5;
+	border-radius: 0 0 10px 0;
+}
+
+.order-table .order-bd .order-number.key {
+	background: #56a022;
+	color: #ffffff;
+}
+
+.unPrinted {
+	color: #56a022;
+}
+
+.info-container .info:hover {
+	color: #CC3333;
+}
+
+</style>
+<div class="block">
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="condition block">
+		<div class="row">
+			<div class="col-xs-4">
+				<div class="btn-group btn-group-sm btn-group-justified">
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待回复</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已通过</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">未通过</button>
+					</div>
+				</div>
+			</div>
+			<div class="col-xs-1">
+				<div class="text-default f14 total">
+					共 <span ng-bind="tableParams.total()" class="text-num"></span>
+				</div>
+			</div>
+		</div>
+	</div>
+<table class="order-table block" ng-table="tableParams">
+	<thead>
+		<tr class="header">
+			<th width="120" class="text-center">申请企业名称</th>
+			<th width="80" class="text-center">申请企业UU</th>
+			<th width="100" class="text-center">申请人</th>
+			<th width="120" class="text-center">回复状态</th>
+			<th width="180" class="text-center">原因</th>
+			<th width="80" class="text-center">操作</th>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="6"></td>
+		</tr>
+		<tr class="toolbar toolbar-top">
+			<td colspan="5">
+			</td>
+			<td class="text-center">
+			</td>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="6"></td>
+		</tr>
+	</thead>
+	<tbody ng-repeat="request in $data">
+		<tr class="order-hd" ng-dblclick="order.$collapsed=!order.$collapsed" ng-class="{'text-bold': order.display>0}">
+			<td class="first" class="text-center">
+				<div class="order-main">
+					<span ng-bind="request.client"></span>
+				</div>
+			</td>
+			<td colspan="1" class="text-center"><span ng-bind="::request.clientuu"></span></td>
+			<td colspan="1" class="text-center">
+				<span ng-bind="::request.applicant"></span>
+			</td>
+			<td colspan="1" class="text-center">
+				<span ng-bind="request.applyStatus"></span>
+			</td>
+			<td colspan="1" class="text-center">
+				<input class="form-control" ng-model="request.reason" ng-if="active=='todo'">
+				<span ng-bind="request.reason" ng-if="active!='todo'"></span>
+			</td>
+			<td colspan="1" class="text-center" >
+				<a class="btn btn-sm btn-default" ng-click="agree(request.id)" ng-if="active=='todo'">同意</a>
+				<a class="btn btn-sm btn-default" ng-click="refuse(request.id, request.reason)" ng-if="active=='todo'">拒绝</a>
+			</td>
+		</tr>
+	</tbody>
+</table>
+</div>

+ 216 - 0
src/main/webapp/resources/tpl/index/baseInfo/myRequest.html

@@ -0,0 +1,216 @@
+<style>
+.condition .more.open {
+	margin-top: 10px;
+	height: 36px;
+	opacity: 1;
+}
+
+.condition .more .form-group {
+	margin-bottom: 10px;
+}
+
+.order-table .header>th {
+	height: 38px;
+	text-align: center;
+	background: #f5f5f5;
+	border-top: 1px solid #e8e8e8;
+	border-bottom: 1px solid #e8e8e8;
+}
+
+.order-table .sep-row {
+	height: 10px;
+}
+
+.order-table .selector {
+	vertical-align: middle;
+	margin: 0 0 2px 0;
+}
+
+.toolbar label {
+	margin-right: 10px;
+	margin-bottom: 0;
+}
+
+.toolbar .select_all {
+	margin: 0 6px 0 10px;
+	line-height: 20px;
+}
+
+.toolbar .btn {
+	-moz-border-radius: 2px;
+	margin-right: 5px;
+	border: 1px solid #dcdcdc;
+	border-radius: 2px;
+	-webkit-border-radius: 2px;
+}
+
+.order-table .order-hd {
+	background: #f5f5f5;
+	height: 40px;
+	line-height: 40px;
+}
+
+.order-table .order-hd td.first {
+	padding-left: 20px;
+}
+
+.order-table .order-hd .order-main span {
+	margin-right: 8px;
+}
+
+.order-table .order-hd .order-code {
+	font-style: normal;
+	font-family: verdana;
+}
+
+.order-table .order-hd .order-sum {
+	padding: 0 5px;
+}
+
+.order-table>tbody {
+	border: 1px solid transparent;
+}
+
+.order-table>tbody:hover {
+	border-color: #56a022;
+	border-width: 2px;
+}
+
+.order-table .operates {
+	display: none;
+}
+
+.order-table .operates i {
+	padding: 0 2px;
+}
+
+.order-table>tbody:hover .operates {
+	display: block;
+}
+.order-table>tbody:hover .operates-status {
+	display: none;
+}
+
+
+.order-table .order-bd {
+	border-bottom: 1px solid #e6e6e6;
+}
+
+.order-table .order-bd>td {
+	padding: 10px 5px;
+	vertical-align: top;
+	position: relative;
+}
+
+.order-table .order-bd .product {
+	padding-left: 20px;
+}
+
+.order-table .order-bd .order-number {
+	position: absolute;
+	top: -1px;
+	left: -1px;
+	width: 20px;
+	height: 20px;
+	line-height: 20px;
+	text-align: center;
+	background: #f5f5f5;
+	font-weight: 500;
+	border: solid 1px #d5d5d5;
+	border-radius: 0 0 10px 0;
+}
+
+.order-table .order-bd .order-number.key {
+	background: #56a022;
+	color: #ffffff;
+}
+
+.unPrinted {
+	color: #56a022;
+}
+
+.info-container .info:hover {
+	color: #CC3333;
+}
+
+</style>
+<div class="block">
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="condition block">
+		<div class="row">
+			<div class="col-xs-4">
+				<div class="btn-group btn-group-sm btn-group-justified">
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='all'}" ng-click="setActive('all')">全部</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待回复</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已通过</button>
+					</div>
+					<div class="btn-group btn-group-sm">
+						<button type="button" class="btn btn-default btn-line"
+							ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">未通过</button>
+					</div>
+				</div>
+			</div>
+			<div class="col-xs-1">
+				<div class="text-default f14 total">
+					共 <span ng-bind="tableParams.total()" class="text-num"></span>
+				</div>
+			</div>
+		</div>
+	</div>
+<table class="order-table block" ng-table="tableParams">
+	<thead>
+		<tr class="header">
+			<th width="120" class="text-center">供应商名称</th>
+			<th width="80" class="text-center">供应商UU</th>
+			<th width="100" class="text-center">申请人</th>
+			<th width="120" class="text-center">回复状态</th>
+			<th width="180" class="text-center">原因</th>
+			<th width="80" class="text-center">操作</th>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="6"></td>
+		</tr>
+		<tr class="toolbar toolbar-top">
+			<td colspan="5">
+			</td>
+			<td class="text-center">
+			</td>
+		</tr>
+		<tr class="sep-row">
+			<td colspan="6"></td>
+		</tr>
+	</thead>
+	<tbody ng-repeat="request in $data">
+		<tr class="order-hd" ng-dblclick="order.$collapsed=!order.$collapsed" ng-class="{'text-bold': order.display>0}">
+			<td class="first" class="text-center">
+				<div class="order-main" >
+					<span ng-bind="request.supplier"></span>
+				</div>
+			</td>
+			<td colspan="1" class="text-center"><span ng-bind="::request.supplieruu"></span></td>
+			<td colspan="1" class="text-center">
+				<span ng-bind="::request.applicant"></span>
+			</td>
+			<td colspan="1" class="text-center">
+				<span ng-bind="request.applyStatus"></span>
+			</td>
+			<td colspan="1" class="text-center">
+				<span ng-bind="request.reason"></span>
+			</td>
+			<td colspan="1" class="text-center">
+				<a class="btn btn-sm btn-default" ng-if="active=='end'" ng-click="reapply(request.id)">再次申请</span>
+			</td>
+		</tr>
+	</tbody>
+</table>
+</div>

+ 80 - 0
src/main/webapp/resources/tpl/index/baseInfo/mySupplier.html

@@ -0,0 +1,80 @@
+<div class="loading in" ng-class="{'in': loading}">
+	<i></i>
+</div>
+<div class="pane base-info" style="max-height: 500px;overflow: auto;">
+	<div class="pane-header">
+		客户资料 (共{{::totalCount}}个)
+		<div class="pull-right">
+			<a href="vendor/customer/xls" target="_self" class="text-simple"><i class="fa fa-file-excel-o fa-fw"></i>导出</a>
+		</div>
+	</div>
+	<div class="pane-body">
+		<table class="table table-bordered table-striped table-hover"
+			ng-table="customerParams">
+			<thead>
+				<tr class="header">
+					<th width="80">UU</th>
+					<th width="180">客户名称</th>
+					<th width="220">地址</th>
+					<th width="80">客户联系人</th>
+					<th width="100">联系人电话</th>
+					<th width="80">我方联系人</th>
+					<th width="50">用户分配</th>
+				</tr>
+			</thead>
+			<tbody>
+					<tr ng-repeat="customer in $data" ng-mouseenter="showUserInfo(customer,true)" ng-mouseleave="showUserInfo(customer,false)">
+						<td class="text-center" ng-bind="::customer.myEnterprise.uu"></td>
+						<td class="text-center" ng-bind="::customer.myEnterprise.enName"></td>
+						<td class="text-center" ng-bind="::customer.myEnterprise.enAddress"></td>
+						<td class="text-center" ng-bind="::customer.myUser.userName"></td>
+						<td ng-bind="::customer.myUser.userTel"></td>
+						<td class="text-center" ng-bind="::customer.vendorUser.userName"></td>
+						<td class="text-center">
+								<a title="新增" style="color: green;" ng-click="addUserInfo(customer)"><i class="fa fa-plus-circle fa-lg"></i></a>&nbsp;&nbsp;
+								<a title="展开" class="text-muted" ng-click="open(customer,$index)"><i class="fa fa-toggle-down fa-lg"></i></a>
+							</div>
+						</td>
+					</tr>
+			</tbody>
+		</table>
+		<div ng-show="userInfoResult">
+			<div class="pane-header">
+				客户分配用户资料 (共<span ng-bind="custInfos.length || 0"></span>个)<span class="f16" style="margin-left: 120px;"ng-bind="custInfo.myEnterprise.enName"></span>
+			</div>
+				<table class="table table-hover"
+					<thead>
+						<tr class="header">
+							<th class="text-center" width="90">用户UU</th>
+							<th class="text-center" width="180">用户名称</th>
+							<th class="text-center" width="200">邮箱</th>
+							<th class="text-center" width="100">联系人电话</th>
+							<th class="text-center" width="50">操作</th>
+						</tr>
+					</thead>
+					<tbody>
+						<tr ng-repeat="userinfo in userdata.content">
+							<td class="text-center" ng-bind="::userinfo.userUU"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userName"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userEmail"></td>
+							<td class="text-center" ng-bind="::userinfo.user.userTel"></td>
+							<td class="text-center"><a style="color: red;" title="删除"><i class="fa fa-user-times fa-lg"></i></a></td>
+						</tr>
+					</tbody>
+				</table>
+				<div class="row mb-20" ng-show="userdata.content">
+					<div class="col-md-8 col-md-offset-1 col-sm-10 col-sm-offset-0 col-xs-12 col-xs-offset-0">
+						<a ng-disabled="userdata.first"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="first()">上一页</a>
+						<div class="col-md-8 col-sm-6 col-xs-4 text-center f14"
+							style="line-height: 34px;">{{userdata.page}}/{{userdata.totalPage}}页</div>
+						<a ng-disabled="userdata.last"
+							class="btn btn-default col-md-2 col-sm-3 col-xs-4"
+							ng-click="last()">下一页</a>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</div>