Przeglądaj źródła

新增客户管理功能

user5 4 lat temu
rodzic
commit
e6817e50f6

+ 858 - 0
src/main/java/com/jeeplus/modules/workclientinfo/service/WorkClientInfoAllService.java

@@ -0,0 +1,858 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workclientinfo.service;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MenuStatusEnum;
+import com.jeeplus.common.utils.SpringContextHolder;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.serialnum.service.SerialNumTplService;
+import com.jeeplus.modules.sys.dao.AreaDao;
+import com.jeeplus.modules.sys.dao.MainDictDetailDao;
+import com.jeeplus.modules.sys.entity.Area;
+import com.jeeplus.modules.sys.entity.MainDict;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.MainDictService;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientAttachmentDao;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientBankDao;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientInfoDao;
+import com.jeeplus.modules.workclientinfo.dao.WorkClientLinkmanDao;
+import com.jeeplus.modules.workclientinfo.entity.*;
+import com.jeeplus.modules.workcontractinfo.dao.WorkContractInfoDao;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workreimbursement.utils.VarStr;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客户管理Service
+ * @author 丁旭
+ * @version 2017-03-20
+ */
+@Service
+@Transactional(readOnly = true)
+public class WorkClientInfoAllService extends CrudService<WorkClientInfoDao, WorkClientInfo> {
+
+	@Autowired
+	private WorkClientLinkmanDao workClientLinkmanDao;
+	@Autowired
+	private WorkClientBankDao workClientBankDao;
+	@Autowired
+	private WorkClientAttachmentDao workClientAttachmentDao;
+    @Autowired
+    private WorkattachmentService workattachmentService;
+    @Autowired
+    private WorkContractInfoDao workContractInfoDao;
+    @Autowired
+    private WorkClientInfoDao workClientInfoDao;
+    @Autowired
+    private SerialNumTplService serialNumTplService;
+
+    @Autowired
+    private AreaDao areaDao;
+
+    private static MainDictService mainDictService = SpringContextHolder.getBean(MainDictService.class);
+
+    private static MainDictDetailDao mainDictDetailDao = SpringContextHolder.getBean(MainDictDetailDao.class);
+
+
+    public WorkClientInfo get(String id) {
+	    if(StringUtils.isBlank(id)){
+	        return new WorkClientInfo();
+        }
+        WorkClientInfo workClientInfo = super.get(id);
+		//获取一个客户所关联的联系人信息
+//        if(StringUtils.isNotBlank(wld[0])){
+//            WorkClientLinkman workClientLinkman = workClientLinkmanDao.get(wld[0]);
+//            workClientInfo.setWorkClientLinkman(workClientLinkman);
+//        }
+        if(workClientInfo != null){
+            workClientInfo.setWorkClientLinkmanList(workClientLinkmanDao.findList(new WorkClientLinkman(workClientInfo)));
+            //获取一个客户关联的银行信息
+            workClientInfo.setWorkClientBankList(workClientBankDao.findList(new WorkClientBank(workClientInfo)));
+            //获取附件信息
+            WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+            workClientAttachment.setAttachmentId(id);
+            workClientAttachment.setAttachmentFlag(VarStr.attachmentFlag[0]);
+            workClientInfo.setWorkAttachments(workattachmentService.getAttachmentList(workClientAttachment));
+
+            //多个联系人
+            List<WorkClientLinkman> linkman = workClientLinkmanDao.findByClientId(workClientInfo.getId());
+//        workClientInfo.setWorkClientLinkman(linkman);
+            workClientInfo.setWorkClientLinkmanList(linkman);
+            WorkClientAttachment attchment = new WorkClientAttachment();
+            attchment.setAttachmentId(workClientInfo.getId());
+            List<WorkClientAttachment> attachments = workattachmentService.getAttachmentList(attchment);
+            workClientInfo.setWorkAttachments(attachments);
+
+            //添加当前文件服务器类型
+            workClientInfo.setUploadMode(uploadMode);
+            //数据处理(如果为阿里云文件服务器,则对查看的路径进行处理)
+            workattachmentService.clientAttachmentManageOnUrl(workClientInfo.getWorkAttachments());
+        }
+		return workClientInfo;
+	}
+
+    /**
+     * 获取客户列表信息
+     * @param workClientInfo
+     * @return
+     */
+	public List<WorkClientInfo> findList(WorkClientInfo workClientInfo) {
+        workClientInfo.setDelFlag("0");
+		return super.findList(workClientInfo);
+	}
+
+    /**
+     * 获取客户联系人列表信息
+     * @return
+     */
+    public List<WorkClientLinkman> findByClientId(String clientId) {
+        return workClientLinkmanDao.findByClientId(clientId);
+    }
+
+
+    public List<WorkClientLinkman> findLinkmanList(String projectId) {
+        WorkClientLinkman linkman = new WorkClientLinkman();
+        linkman.setProjectId(projectId);
+        return workClientLinkmanDao.findListByProjectId(linkman);
+    }
+
+    /**
+     * 获取联系人列表信息
+     * @param workClientInfo
+     * @return
+     */
+	public List<WorkClientLinkman> findLinkmanList(WorkClientInfo workClientInfo)  {
+		return workClientLinkmanDao.findList(new WorkClientLinkman(workClientInfo));
+	}
+    /**
+     * 获取联系人列表信息
+     * @param workClientLinkman
+     * @return
+     */
+	public List<WorkClientLinkman> findByClient(WorkClientLinkman workClientLinkman)  {
+		return workClientLinkmanDao.findByClient(workClientLinkman);
+	}
+    /**
+     * 获取合同信息
+     */
+    public List<WorkContractInfo> findCIF(WorkClientInfo workClientInfo)  {
+        return workContractInfoDao.findList(new WorkContractInfo(workClientInfo));
+    }
+    /**
+     * 获取银行开户信息
+     * @param workClientInfo
+     * @return
+     */
+    public List<WorkClientBank> findBankList(WorkClientInfo workClientInfo)  {
+        return workClientBankDao.findListByClient(new WorkClientBank(workClientInfo));
+    }
+
+    /**
+     * 获取附件列表信息
+     * @param workClientInfo
+     * @return
+     */
+    public List<WorkClientAttachment> findAttachmentList(WorkClientInfo workClientInfo)  {
+        WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+        workClientAttachment.setAttachmentId(workClientInfo.getId());
+        workClientAttachment.setAttachmentFlag(VarStr.attachmentFlag[0]);
+        return workattachmentService.getAttachmentList(workClientAttachment);
+    }
+
+    /**
+     * 获取一个客户信息
+     * @param page 分页对象
+     * @param workClientInfo
+     * @return
+     */
+    public Page<WorkClientInfo> findPage(Page<WorkClientInfo> page, WorkClientInfo workClientInfo) {
+        /*if(!UserUtils.getUser().isAdmin()) {
+            workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+            workClientInfo.getSqlMap().put("dsf", dataScopeFilter(workClientInfo.getCurrentUser(), "o", "u", "s", MenuStatusEnum.WORK_CLIENT_INFO.getValue()));
+        }*/
+        long t1 = System.currentTimeMillis();
+        //根据项目类型获取对应的客户id个数
+        int count = workClientInfoDao.queryCount(workClientInfo);
+        page.setCount(count);
+        long t2 = System.currentTimeMillis();
+        logger.info("查询客户总数耗时:{}",t2-t1);
+        page.setCountFlag(false);
+        workClientInfo.setPage(page);
+        List<WorkClientInfo> list = findList(workClientInfo);
+        //根据客户id查询客户的相关客户类型
+        for (WorkClientInfo clientInfo: list) {
+            clientInfo.setJobTypeStr(workClientInfoDao.getJobTypeStr(clientInfo.getId()));
+        }
+        long t3 = System.currentTimeMillis();
+        logger.info("查询客户列表耗时:{}",t3-t2);
+        if(list!=null && list.size()>0){
+            for (int i = 0; i < list.size(); i++) {
+                WorkClientInfo entity = list.get(i);
+                List<WorkClientLinkman> linkmanList = findLinkmanList(entity);
+                entity.setWorkClientLinkmanList(linkmanList);
+                if(linkmanList!=null && linkmanList.size()>0){
+                    StringBuilder builder = new StringBuilder();
+                    for (int j = 0; j < linkmanList.size(); j++) {
+                        builder.append(linkmanList.get(j).getName());
+                        if(j<linkmanList.size()-1){
+                            builder.append(",");
+                        }
+                    }
+                    entity.setLinkManNames(builder.toString());
+                }
+                List<WorkClientBank> bankList = findBankList(entity);
+                entity.setWorkClientBankList(bankList);
+            }
+        }
+        long t4 = System.currentTimeMillis();
+        logger.info("查询客户详情耗时:{}",t4-t3);
+        logger.info("查询客户总耗时:{}",t4-t1);
+        page.setList(list);
+        return page;
+    }
+    /**
+     * 获取开票单位
+     * @param page 分页对象
+     * @param workClientInfo
+     * @return
+     */
+    public Page<WorkClientInfo> findAllPage(Page<WorkClientInfo> page, WorkClientInfo workClientInfo) {
+        workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+//        workClientInfo.getSqlMap().put("dsf", dataScopeFilter(workClientInfo.getCurrentUser(), "o", "u","s", MenuStatusEnum.WORK_CLIENT_INFO.getValue()));
+        long t1 = System.currentTimeMillis();
+        //根据项目类型获取对应的客户id个数
+        int count = workClientInfoDao.queryAllCount(workClientInfo);
+        page.setCount(count);
+        long t2 = System.currentTimeMillis();
+        logger.info("查询客户总数耗时:{}",t2-t1);
+        page.setCountFlag(false);
+        workClientInfo.setPage(page);
+        List<WorkClientInfo> list = workClientInfoDao.findAll(workClientInfo);
+        //根据客户id查询客户的相关客户类型
+        for (WorkClientInfo clientInfo: list) {
+            clientInfo.setJobTypeStr(workClientInfoDao.getJobTypeStr(clientInfo.getId()));
+        }
+        long t3 = System.currentTimeMillis();
+        logger.info("查询客户列表耗时:{}",t3-t2);
+        if(list!=null && list.size()>0){
+            for (int i = 0; i < list.size(); i++) {
+                WorkClientInfo entity = list.get(i);
+                List<WorkClientLinkman> linkmanList = findLinkmanList(entity);
+                entity.setWorkClientLinkmanList(linkmanList);
+                if(linkmanList!=null && linkmanList.size()>0){
+                    StringBuilder builder = new StringBuilder();
+                    for (int j = 0; j < linkmanList.size(); j++) {
+                        builder.append(linkmanList.get(j).getName());
+                        if(j<linkmanList.size()-1){
+                            builder.append(",");
+                        }
+                    }
+                    entity.setLinkManNames(builder.toString());
+                }
+                List<WorkClientBank> bankList = findBankList(entity);
+                entity.setWorkClientBankList(bankList);
+            }
+        }
+        long t4 = System.currentTimeMillis();
+        logger.info("查询客户详情耗时:{}",t4-t3);
+        logger.info("查询客户总耗时:{}",t4-t1);
+        page.setList(list);
+        return page;
+    }
+
+
+
+    /**
+     * 获取一个客户信息
+     * @param page 分页对象
+     * @param workClientInfo
+     * @return
+     */
+    public Page<WorkClientInfo> findPageByContract(Page<WorkClientInfo> page, WorkClientInfo workClientInfo) {
+        long t1 = System.currentTimeMillis();
+        //根据项目类型获取对应的客户id个数
+        int count = workClientInfoDao.queryCount(workClientInfo);
+        page.setCount(count);
+        long t2 = System.currentTimeMillis();
+        logger.info("查询客户总数耗时:{}",t2-t1);
+        page.setCountFlag(false);
+        workClientInfo.setPage(page);
+        List<WorkClientInfo> list = findList(workClientInfo);
+        //根据客户id查询客户的相关客户类型
+        for (WorkClientInfo clientInfo: list) {
+            clientInfo.setJobTypeStr(workClientInfoDao.getJobTypeStr(clientInfo.getId()));
+        }
+        long t3 = System.currentTimeMillis();
+        logger.info("查询客户列表耗时:{}",t3-t2);
+        if(list!=null && list.size()>0){
+            for (int i = 0; i < list.size(); i++) {
+                WorkClientInfo entity = list.get(i);
+                List<WorkClientLinkman> linkmanList = findLinkmanList(entity);
+                entity.setWorkClientLinkmanList(linkmanList);
+                if(linkmanList!=null && linkmanList.size()>0){
+                    StringBuilder builder = new StringBuilder();
+                    for (int j = 0; j < linkmanList.size(); j++) {
+                        builder.append(linkmanList.get(j).getName());
+                        if(j<linkmanList.size()-1){
+                            builder.append(",");
+                        }
+                    }
+                    entity.setLinkManNames(builder.toString());
+                }
+                List<WorkClientBank> bankList = findBankList(entity);
+                entity.setWorkClientBankList(bankList);
+            }
+        }
+        long t4 = System.currentTimeMillis();
+        logger.info("查询客户详情耗时:{}",t4-t3);
+        logger.info("查询客户总耗时:{}",t4-t1);
+        page.setList(list);
+        return page;
+    }
+
+    /**
+     * 获取客户关联的联系人信息
+     * @param page
+     * @param workClientInfo
+     * @return
+     */
+	public Page<WorkClientLinkman> findLinkmanPage(Page<WorkClientLinkman> page, WorkClientInfo workClientInfo) {
+		WorkClientLinkman linkman = new WorkClientLinkman(workClientInfo);
+		linkman.setPage(page);
+		page.setList(workClientLinkmanDao.findList(linkman));
+		return page;
+	}
+
+    /**
+     * 获取客户关联的银行信息
+     * @param page
+     * @param workClientInfo
+     * @return
+     */
+	public Page<WorkClientBank> findBankPage(Page<WorkClientBank> page,WorkClientInfo workClientInfo){
+	    WorkClientBank workClientBank = new WorkClientBank(workClientInfo);
+	    workClientBank.setPage(page);
+	    page.setList(workClientBankDao.findList(workClientBank));
+	    return page;
+    }
+
+    /**
+     * 获取附件列表信息
+     * @param page
+     * @param workClientInfo
+     * @return
+     */
+    public Page<WorkClientAttachment> findAttachmentPage(Page<WorkClientAttachment> page,WorkClientInfo workClientInfo){
+        String id = workClientInfo.getId();
+        WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+        workClientAttachment.setAttachmentId(id);
+        workClientAttachment.setPage(page);
+        workClientAttachment.setAttachmentFlag(VarStr.attachmentFlag[0]);
+        page.setList(workattachmentService.getAttachmentList(workClientAttachment));
+        return page;
+    }
+
+    /**
+     * 保存或修改信息
+     * @param workClientInfo
+     */
+	@Transactional(readOnly = false)
+	public void save(WorkClientInfo workClientInfo) {
+	    //判定是否为修改类型
+	    boolean flag = false;
+	    if(StringUtils.isNotBlank(workClientInfo.getId())){
+            flag = true;
+        }
+	    User user = UserUtils.getUser();
+        long t1 = System.currentTimeMillis();
+        Area area = workClientInfo.getArea();
+        area = areaDao.get(area.getId());
+        workClientInfo.setArea(area);
+        workClientInfo.setNumber(serialNumTplService.genSerialNum(user.getCompany(),"50"));
+		super.save(workClientInfo);
+        long t2 = System.currentTimeMillis();
+        logger.info("保存客户主表耗时:{}",t2-t1);
+        //若为修改内容则删除对应的客户工作类型信息
+        if(flag){
+            if(StringUtils.isNotBlank(workClientInfo.getJobTypeStr())){
+                workClientLinkmanDao.jobTypeDelete(workClientInfo.getId());
+
+            }
+        }
+        //保存客户和工作类型关系信息
+        if(StringUtils.isNotBlank(workClientInfo.getJobTypeStr())){
+            List<String> list = Arrays.asList(workClientInfo.getJobTypeStr().split(","));
+
+            List<WorkClientJobTypeInfo> workClientJobTypeList = new ArrayList<>();
+            for (String jobType:list){
+                WorkClientJobTypeInfo workClientJobTypeInfo = new WorkClientJobTypeInfo();
+                workClientJobTypeInfo.setJobTypeId(jobType);
+                workClientJobTypeInfo.setWorkClientId(workClientInfo.getId());
+                workClientJobTypeList.add(workClientJobTypeInfo);
+            }
+            workClientLinkmanDao.jobTypeInsert(workClientJobTypeList);
+        }
+		//联系人信息
+		for (WorkClientLinkman workClientLinkman : workClientInfo.getWorkClientLinkmanList()){
+			if (workClientLinkman.getId() == null){
+				continue;
+			}
+			if (WorkClientLinkman.DEL_FLAG_NORMAL.equals(workClientLinkman.getDelFlag())){
+                workClientLinkman.setClientId(workClientInfo);
+				if (StringUtils.isBlank(workClientLinkman.getId())){
+					workClientLinkman.preInsert();
+					workClientLinkmanDao.insert(workClientLinkman);
+				}else{
+					workClientLinkman.preUpdate();
+					workClientLinkmanDao.update(workClientLinkman);
+				}
+			}else{
+				workClientLinkmanDao.delete(workClientLinkman);
+			}
+		}
+        long t3 = System.currentTimeMillis();
+        logger.info("保存客户联系人耗时:{}",t3-t2);
+		//开户信息
+        for (WorkClientBank workClientBank : workClientInfo.getWorkClientBankList()){
+            if (workClientBank.getId() == null){
+                continue;
+            }
+            if (WorkClientBank.DEL_FLAG_NORMAL.equals(workClientBank.getDelFlag())){
+                workClientBank.setClientId(workClientInfo);
+                if (StringUtils.isBlank(workClientBank.getId())){
+                    workClientBank.preInsert();
+                    workClientBankDao.insert(workClientBank);
+                }else{
+                    workClientBank.preUpdate();
+                    workClientBankDao.update(workClientBank);
+                }
+            }else{
+                workClientBankDao.delete(workClientBank);
+            }
+        }
+        long t4 = System.currentTimeMillis();
+        logger.info("保存客户银行信息耗时:{}",t4-t3);
+        //附件信息
+        for (WorkClientAttachment workClientAttachment : workClientInfo.getWorkAttachments()){
+            if (workClientAttachment.getId() == null){
+                continue;
+            }
+            if (WorkClientAttachment.DEL_FLAG_NORMAL.equals(workClientAttachment.getDelFlag())){
+                workClientAttachment.setAttachmentId(workClientInfo.getId());
+                workClientAttachment.setAttachmentFlag("44");
+                workClientAttachment.setAttachmentUser(UserUtils.getUser().getId());
+                if (StringUtils.isBlank(workClientAttachment.getId()) || "null".equals(workClientAttachment.getId())){
+                    workattachmentService.insertOnWorkClientAttachment(workClientAttachment);
+                }else{
+                    workattachmentService.updateOnWorkClientAttachment(workClientAttachment);
+                }
+            }else{
+                workClientAttachmentDao.delete(workClientAttachment);
+            }
+        }
+        logger.info("保存客户耗时:{}",System.currentTimeMillis()-t1);
+
+	}
+
+    /**
+     * 该客户是否被引用
+     */
+    public boolean getUsedCount(WorkClientInfo workClientInfo){
+        //WorkBidProject
+        //WorkBidingProject
+        //WorkEngineeringProject
+        //WorkFullManage
+        //work_contract_info
+        //被引用过的客户信息不可以被删除,但可以修改。 没有被引用过的客户信息可以删除
+        //投标、招标、工程咨询、全过程、合同
+        String clientId = workClientInfo.getId();
+        int count = 0;
+        count += workClientInfoDao.getBeUsedCount1(clientId);
+        if(count>0){
+            return true;
+        }
+        count += workClientInfoDao.getBeUsedCount2(clientId);
+        if(count>0){
+            return true;
+        }
+        count += workClientInfoDao.getBeUsedCount3(clientId);
+        if(count>0){
+            return true;
+        }
+        count += workClientInfoDao.getBeUsedCount4(clientId);
+        if(count>0){
+            return true;
+        }
+        count += workClientInfoDao.getBeUsedCount5(clientId);
+        if(count>0){
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 删除客户的所有信息
+     * @param workClientInfo
+     */
+	@Transactional(readOnly = false)
+	public void delete(WorkClientInfo workClientInfo){
+		super.delete(workClientInfo);   //删除客户信息
+		workClientLinkmanDao.delete(new WorkClientLinkman(workClientInfo)); //删除联系人信息
+		workClientBankDao.delete(new WorkClientBank(workClientInfo)); //删除银行信息
+        WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+        workClientAttachment.setAttachmentId(workClientInfo.getId());
+        workClientAttachment.setAttachmentFlag(VarStr.attachmentFlag[0]);
+        workClientAttachmentDao.delete(workClientAttachment); //删除附件信息
+
+
+	}
+
+
+    /**
+     * 上传多个文件
+     * @param request
+     * @param upload_files
+     */
+    public  List<WorkClientAttachment> uploadFile(HttpServletRequest request, MultipartFile[] upload_files, String ClientId,String attachmentFlag){
+        String  uploadFolder = request.getSession().getServletContext().getRealPath("local_upload/notify/"+System.currentTimeMillis());
+        new File(uploadFolder).mkdirs();
+        InputStream inputStream = null;
+        List<String> imgList = new ArrayList<>();
+        List<WorkClientAttachment> workClientAttachments = new ArrayList<>();
+        if(upload_files!=null && upload_files.length>0){
+            for(int i=0;i<upload_files.length;i++){
+                try {
+                    if (upload_files[i] == null || upload_files[i].getSize() == 0)
+                        continue;
+                    String imageName = System.nanoTime() + upload_files[i].getOriginalFilename();
+                    String imageNewName = uploadFolder + "/" + imageName;
+                    imgList.add(imageNewName);
+                    upload_files[i].transferTo(new File(imageNewName));
+                    inputStream = new FileInputStream(new File(imageNewName));
+                    OSSClientUtil ossUtil = new OSSClientUtil();
+                    String suffix = imageNewName.substring(imageNewName.lastIndexOf("."));
+                    String name = System.nanoTime() + suffix;
+                    ossUtil.uploadFile2OSS(inputStream, Global.getNotifyData(), name);
+                    WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+                    workClientAttachment.setId("");
+                    workClientAttachment.setUrl(Global.getAliyunUrl() + "/" + Global.getNotifyData() + name);
+                    workClientAttachment.setAttachmentUser(UserUtils.getUser().getId());
+                    workClientAttachment.setAttachmentName(upload_files[i].getOriginalFilename());
+                    workClientAttachment.setAttachmentId(ClientId);
+                    workClientAttachment.setType(suffix);
+                    workClientAttachments.add(workClientAttachment);
+                    workClientAttachment.setAttachmentFlag(attachmentFlag);
+                }catch (Exception e){
+                    logger.error("Exception e:"+e);
+                    e.printStackTrace();
+                }finally {
+                    try {
+                        if (inputStream != null)
+                            inputStream.close();
+                    } catch (IOException e) {
+                        logger.error("Exception e:"+e);
+                        e.printStackTrace();
+                    }
+                }
+            }
+        }
+        return workClientAttachments;
+    }
+
+    /**
+     * 上传单个文件
+     * @param request
+     * @param upload_files
+     */
+    public  WorkClientAttachment uploadFileSingle(HttpServletRequest request, CommonsMultipartFile upload_files, String ClientId, String attachmentFlag){
+        String  uploadFolder = request.getSession().getServletContext().getRealPath("local_upload/notify/"+System.currentTimeMillis());
+        InputStream inputStream = null;
+        WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+        try {
+            new File(uploadFolder).mkdirs();
+            String imageName = System.nanoTime()+upload_files.getOriginalFilename();
+            String imageNewName = uploadFolder+"/"+imageName;
+            upload_files.transferTo(new File(imageNewName));
+            inputStream = new FileInputStream(new File(imageNewName));
+            OSSClientUtil ossUtil = new OSSClientUtil();
+            String suffix = imageNewName.substring(imageNewName.lastIndexOf("."));
+            String name = System.nanoTime() + suffix;
+            ossUtil.uploadFile2OSS(inputStream, Global.getNotifyData(), name);
+            workClientAttachment.setUrl(Global.getAliyunUrl()+"/"+Global.getNotifyData()+name);
+            workClientAttachment.setAttachmentUser(UserUtils.getUser().getId());
+            workClientAttachment.setAttachmentName(upload_files.getOriginalFilename()); //name
+            workClientAttachment.setAttachmentId(ClientId);
+            workClientAttachment.setType(suffix);
+            workClientAttachment.setAttachmentFlag(attachmentFlag);
+        } catch (IOException e) {
+            logger.error("Exception e:"+e);
+            e.printStackTrace();
+        } finally {
+            try {
+                if (inputStream != null)
+                    inputStream.close();
+            } catch (IOException e) {
+                logger.error("Exception e:"+e);
+                e.printStackTrace();
+            }
+        }
+        return workClientAttachment;
+    }
+    /**
+     * 删除附件
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String deleteAttachment(WorkClientAttachment  workClientAttachment){
+        int i = workClientAttachmentDao.deleteByLogic(workClientAttachment);
+        String str = (i > 0)?"删除成功":"删除失败";
+        return str;
+    }
+
+    /**
+     * 保存或修改信息
+     * @param workClientAttachment
+     */
+    @Transactional(readOnly = false)
+    public String save(WorkClientAttachment workClientAttachment) {
+        int update = 0;
+        if(!workClientAttachment.getIsNewRecord()){
+            workClientAttachment.preUpdate();
+            update = workClientAttachmentDao.update(workClientAttachment);
+        }else{
+            workClientAttachment.preInsert();
+            update = workClientAttachmentDao.insert(workClientAttachment);
+        }
+        String str = (update > 0)?"上传成功":"上传失败";
+        return str;
+    }
+
+    /**
+     *
+     * @MethodName: deleteFile
+     * @Description: 单文件删除
+     * @param fileUrl 需要删除的文件url
+     * @return boolean 是否删除成功
+     */
+    @Transactional(readOnly = false)
+    public void deleteFile(String fileUrl,String attach){
+        new OSSClientUtil().deleteSingleObject(fileUrl);
+        workClientAttachmentDao.delete(workClientAttachmentDao.get(attach));
+    }
+
+
+    /**
+     * 获取客户关联的联系人信息
+     * @param page
+     * @return
+     */
+    public Page<WorkClientLinkman> findLinkmanPage(Page<WorkClientLinkman> page, WorkClientLinkman linkman) {
+        linkman.setPage(page);
+        page.setList(workClientLinkmanDao.findList(linkman));
+        return page;
+    }
+
+    /**
+     * 保存或修改信息
+     * @param workClientInfo
+     */
+    @Transactional(readOnly = false)
+    public void saveImport(WorkClientInfo workClientInfo) {
+        Area area = workClientInfo.getArea();
+        area = areaDao.get(area.getId());
+        workClientInfo.setArea(area);
+        super.save(workClientInfo);
+        //联系人信息
+        for (WorkClientLinkman workClientLinkman : workClientInfo.getWorkClientLinkmanList()){
+            workClientLinkman.preInsert();
+            workClientLinkman.setClientId(workClientInfo);
+            workClientLinkmanDao.insert(workClientLinkman);
+        }
+        //开户信息
+        for (WorkClientBank workClientBank : workClientInfo.getWorkClientBankList()){
+            workClientBank.preInsert();
+            workClientBank.setClientId(workClientInfo);
+            workClientBankDao.insert(workClientBank);
+        }
+
+    }
+
+    public int countByUscCode(String uscCode) {
+        return dao.countByUscCode(uscCode);
+    }
+
+    public Page<WorkClientBank> findBankInfoPage(Page<WorkClientBank> page, WorkClientBank workClientBank) {
+        workClientBank.setPage(page);
+        page.setOrderBy("b.update_date");
+        page.setList(workClientBankDao.findList(workClientBank));
+        return page;
+    }
+
+    public WorkClientLinkman queryLinkManByClientId(String clientId){
+        return workClientLinkmanDao.queryLinkManByClientId(clientId);
+    }
+
+    /**
+     * 无合同状态,获取公司所有的客户相关联的联系人信息
+     * @param page
+     * @return
+     */
+    public Page<WorkClientLinkman> queryLinkManPageByCompany(Page<WorkClientLinkman> page, WorkClientLinkman linkman){
+        linkman.setPage(page);
+        List<WorkClientLinkman> linkmen=workClientLinkmanDao.queryLinkManByCompany(linkman);
+        page.setList(linkmen);
+        return page;
+    }
+
+
+
+    public List<WorkClientInfo> findByName(WorkClientInfo workClientInfo){
+        return workClientInfoDao.findByName(workClientInfo);
+    }
+
+
+    public List<MainDictDetail> getJobType(){
+        String type = "job_type";
+        List<MainDictDetail> dictList=new ArrayList<>();
+        String comId=UserUtils.getSelectCompany().getId();
+        String branchId=UserUtils.getSelectBranchOffice();
+        MainDict mainDict = mainDictService.getIdByName(type);
+        try {
+            MainDictDetail mainDictDetail = new MainDictDetail();
+            if("1".equals(mainDict.getDictType())){
+                mainDictDetail.setBranchOffice(comId);
+            }else{
+                mainDictDetail.setBranchOffice(branchId);
+            }
+            mainDictDetail.setType(type);
+            dictList = mainDictDetailDao.findAchievementParentIdList(mainDictDetail);
+            return dictList;
+        } catch (Exception e) {
+            logger.error("Exception e:"+e);
+            System.out.println("获取业务字典失败!");
+        }
+        return dictList;
+    }
+
+    public List<MainDictDetail> getJobTypeById(String id){
+        List<MainDictDetail> dictList=new ArrayList<>();
+        try {
+            dictList = workClientInfoDao.getJobTypeById(id);
+            return dictList;
+        } catch (Exception e) {
+            logger.error("Exception e:"+e);
+            e.getMessage();
+        }
+        return dictList;
+    }
+
+    /**
+     * 根据类型获取联系人信息
+     * @param page 分页对象
+     * @param workClientInfo
+     * @return
+     */
+    public Page<WorkClientInfo> findPageUnit(Page<WorkClientInfo> page, WorkClientInfo workClientInfo) {
+//        workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+//        workClientInfo.getSqlMap().put("dsf", dataScopeFilter(workClientInfo.getCurrentUser(), "o", "u","s", MenuStatusEnum.WORK_CLIENT_INFO.getValue()));
+        long t1 = System.currentTimeMillis();
+        //根据项目类型获取对应的客户id个数
+        int count =workClientInfoDao.getCount(workClientInfo);
+      //  int count = workClientInfoDao.queryCount(workClientInfo);
+        page.setCount(count);
+        long t2 = System.currentTimeMillis();
+        logger.info("查询客户总数耗时:{}",t2-t1);
+        page.setCountFlag(false);
+        workClientInfo.setPage(page);
+        List<WorkClientInfo> list = findPageUnit(workClientInfo);
+        long t3 = System.currentTimeMillis();
+        logger.info("查询客户列表耗时:{}",t3-t2);
+        if(list!=null && list.size()>0){
+            for (int i = 0; i < list.size(); i++) {
+                WorkClientInfo entity = list.get(i);
+                List<WorkClientLinkman> linkmanList = findLinkmanList(entity);
+                entity.setWorkClientLinkmanList(linkmanList);
+                if(linkmanList!=null && linkmanList.size()>0){
+                    StringBuilder builder = new StringBuilder();
+                    for (int j = 0; j < linkmanList.size(); j++) {
+                        builder.append(linkmanList.get(j).getName());
+                        if(j<linkmanList.size()-1){
+                            builder.append(",");
+                        }
+                    }
+                    entity.setLinkManNames(builder.toString());
+                }
+                List<WorkClientBank> bankList = findBankList(entity);
+                entity.setWorkClientBankList(bankList);
+            }
+        }
+        long t4 = System.currentTimeMillis();
+        logger.info("查询客户详情耗时:{}",t4-t3);
+        logger.info("查询客户总耗时:{}",t4-t1);
+        page.setList(list);
+        return page;
+    }
+
+    /**
+     * 根据类型获取联系人信息集合
+     * @param workClientInfo
+     * @return
+     */
+    public List<WorkClientInfo> findPageUnit(WorkClientInfo workClientInfo) {
+        workClientInfo.setDelFlag("0");
+        return workClientInfoDao.findList3(workClientInfo);
+    }
+    /**
+     * 根据统一社会信用代码进行查询获取客户对象
+     */
+    public WorkClientInfo findUscCode(WorkClientInfo workClientInfo){
+        //根据统一社会信用代码查出来对应的客户信息表
+        WorkClientInfo work=workClientInfoDao.findWorkClientInfo(workClientInfo);
+        //根据客户信息表id查出来对应的联系人信息
+        WorkClientLinkman workLink=new WorkClientLinkman();
+        WorkClientInfo infoId=new WorkClientInfo();
+        if(null!= work){
+            infoId.setId(work.getId());
+            workLink.setClientId(infoId);
+            List<WorkClientLinkman> workmManList=workClientLinkmanDao.getLinkMan(workLink);
+            work.setWorkClientLinkmanList(workmManList);
+            //根据客户信息表id查出来对应的银行信息
+            WorkClientBank workClientBank=new WorkClientBank();
+            workClientBank.setClientId(infoId);
+            List<WorkClientBank> workmBankList=workClientBankDao.getLinkBank(workClientBank);
+            work.setWorkClientBankList(workmBankList);
+            //根据客户信息表查出来对应的联系人类型
+            List<Map> jopType=workClientInfoDao.getJopType(work);
+            String types=new String();
+            for(Map mapTypes:jopType){
+                types+=mapTypes.get("getJobTypeById");
+            }
+            work.setJobTypeStr(types);
+        }
+        return work;
+
+    }
+}

+ 935 - 0
src/main/java/com/jeeplus/modules/workclientinfo/web/WorkClientInfoAllController.java

@@ -0,0 +1,935 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workclientinfo.web;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.common.beanvalidator.BeanValidators;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.json.AjaxJson;
+import com.jeeplus.common.mapper.JsonMapper;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.TicketQueryUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.sys.entity.Area;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.utils.DictUtils;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.sysimportinfo.entity.SysImportInfo;
+import com.jeeplus.modules.sysimportinfo.service.SysImportInfoService;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientAttachment;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientBank;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workclientinfo.service.WorkClientInfoAllService;
+import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
+import com.jeeplus.modules.workreimbursement.utils.VarStr;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import java.io.*;
+import java.net.URLDecoder;
+import java.util.*;
+
+/**
+ * 客户管理Controller
+ * @author 丁旭
+ * @version 2017-03-20
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/workclientinfo/workClientInfoAll")
+public class WorkClientInfoAllController extends BaseController {
+
+	@Autowired
+	private WorkClientInfoAllService workClientInfoService;
+	@Autowired
+	private SysImportInfoService sysImportInfoService;
+
+
+	@Autowired
+	private HttpServletRequest request;
+
+	@ModelAttribute
+	public WorkClientInfo get(@RequestParam(required=false) String id) {
+		WorkClientInfo entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = workClientInfoService.get(id);
+		}
+		if (entity == null){
+			entity = new WorkClientInfo();
+		}
+		return entity;
+	}
+
+	/**
+	 * 客户管理列表页面
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(WorkClientInfo workClientInfo, HttpServletRequest request, HttpServletResponse response, Model model) {
+
+		if(StringUtils.isNotBlank(workClientInfo.getCreateNameStr())){
+			model.addAttribute("createName", workClientInfo.getCreateNameStr());
+		}
+
+		WorkClientLinkman workClientLinkman = workClientInfo.getWorkClientLinkman();
+		if(workClientLinkman != null){
+			workClientLinkman.setId("");
+		}
+		workClientInfo.setWorkClientLinkman(workClientLinkman);
+		if(UserUtils.isManager()){
+			model.addAttribute("flag","1");
+		}
+		Page<WorkClientInfo> page = workClientInfoService.findPage(new Page<WorkClientInfo>(request, response), workClientInfo);
+		model.addAttribute("page", page);
+		model.addAttribute("createId", workClientInfo.getCreateId());
+		return "modules/workclientinfo/all/workClientInfoList";
+	}
+
+	/**
+	 * 查看,增加,编辑客户管理表单页面
+	 */
+	@RequiresPermissions(value={"workclientinfo:workClientInfoAll:view","workclientinfo:workClientInfoAll:add","workclientinfo:workClientInfoAll:edit"},logical=Logical.OR)
+	@RequestMapping(value = "form")
+	public String form(WorkClientInfo workClientInfo, Model model) {
+		if(StringUtils.isBlank(workClientInfo.getId())){
+			WorkClientInfo workClientInfo1=new WorkClientInfo();
+			Area area=new Area();
+			area.setId("9AF3266E03384019BFE935DD9F35332F");
+			area.setName("南京");
+			workClientInfo1.setArea(area);
+			workClientInfo1.setJobTypeShow(workClientInfo.getJobTypeShow());
+			model.addAttribute("workClientInfo", workClientInfo1);
+			return "modules/workclientinfo/all/workClientInfoForm";
+		}
+
+		model.addAttribute("workClientInfo", workClientInfo);
+
+		return "modules/workclientinfo/all/workClientInfoForm";
+	}
+
+	/**
+	 * 查看,增加,编辑客户管理表单页面
+	 */
+	@RequiresPermissions(value={"workclientinfo:workClientInfoAll:view","workclientinfo:workClientInfoAll:add","workclientinfo:workClientInfoAll:edit"},logical=Logical.OR)
+	@RequestMapping(value = "formTwo")
+	public String formTwo(WorkClientInfo workClientInfo, Model model) {
+		model.addAttribute("workClientInfo", workClientInfo);
+		return "modules/workclientinfo/all/workClientInfoFormTwo";
+	}
+
+	//二次进行增加联系人类型
+	@RequiresPermissions(value={"workclientinfo:workClientInfoAll:view","workclientinfo:workClientInfoAll:add","workclientinfo:workClientInfoAll:edit"},logical=Logical.OR)
+	@RequestMapping(value = "fType")
+	public String fType(WorkClientInfo workClientInfo, Model model,String linkType) {
+		model.addAttribute("workClientInfo", workClientInfo);
+		model.addAttribute("linkType",linkType);
+		System.out.println("-----"+linkType);
+		return "modules/workclientinfo/all/workClientInfoFormType";
+	}
+
+
+	//直接进行增加联系人类型
+	@ResponseBody
+	@RequestMapping(value = "typeAdd")
+	public Map typeAdd(WorkClientInfo workClientInfo, Model model,String linkType) {
+		/*model.addAttribute("workClientInfo", workClientInfo);
+		model.addAttribute("linkType",linkType);*/
+		WorkClientLinkman linkman = workClientInfo.getWorkClientLinkmanList().get(0);
+		Map<String,Object> map = new HashMap<>();
+		map.put("id",linkman.getId());//联系人id
+		map.put("clientId",workClientInfo.getId());//客户id
+		map.put("clientName",workClientInfo.getName());
+		map.put("uscCode",workClientInfo.getUscCode());
+		map.put("linkName",linkman.getName());
+		map.put("linkMobile",linkman.getLinkMobile());
+		map.put("linkPhone",linkman.getLinkPhone());
+
+		return map;
+	}
+
+	/**
+	 * 增加联系人类型
+	 */
+	@RequestMapping(value = "formType")
+	public String formType(WorkClientInfo workClientInfo,String param, Model model) {
+		if(StringUtils.isBlank(workClientInfo.getId())){
+
+			Area area=new Area();
+			area.setId("9AF3266E03384019BFE935DD9F35332F");
+			area.setName("南京");
+			workClientInfo.setArea(area);
+		}
+		model.addAttribute("workClientInfo", workClientInfo);
+		model.addAttribute("linkType",param);
+		return "modules/workclientinfo/workClientTypeForm";
+	}
+    /**
+     * 查看,增加,编辑客户管理表单页面
+     */
+    @RequiresPermissions(value={"workclientinfo:workClientInfoAll:view","workclientinfo:workClientInfoAll:add","workclientinfo:workClientInfoAll:edit"},logical=Logical.OR)
+    @RequestMapping(value = "detail")
+    public String detail(WorkClientInfo workClientInfo, Model model) {
+        model.addAttribute("workClientInfo", workClientInfo);
+        model.addAttribute("bankSize",workClientInfo.getWorkClientBankList().size());
+        model.addAttribute("linkManSize",workClientInfo.getWorkClientLinkmanList().size());
+        model.addAttribute("attachmentSize",workClientInfo.getWorkAttachments().size());
+        return "modules/workclientinfo/workClientInfoFormDetail";
+    }
+	/**
+	 * 保存客户管理
+	 */
+	@RequiresPermissions(value={"workclientinfo:workClientInfoAll:add","workclientinfo:workClientInfoAll:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public String save(WorkClientInfo workClientInfo,
+                       Model model, RedirectAttributes redirectAttributes,
+//					   @RequestParam(value = "upload_files") MultipartFile[] upload_files.
+                       HttpServletRequest request
+                        ) throws Exception{
+		if (!beanValidator(model, workClientInfo)){
+			return form(workClientInfo, model);
+		}
+
+		//保存当前人的公司
+		workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+		workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+        if(!workClientInfo.getIsNewRecord()){//编辑表单保存
+			WorkClientInfo t = workClientInfoService.get(workClientInfo.getId());//从数据库取出记录的值
+			MyBeanUtils.copyBeanNotNull2Bean(workClientInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+			workClientInfoService.save(t);//保存
+		}else{//新增表单保存
+			workClientInfoService.save(workClientInfo);//保存
+		}
+		addMessage(redirectAttributes, "保存客户管理成功");
+		return "redirect:"+Global.getAdminPath()+"/workclientinfo/workClientInfoAll/?repage";
+	}
+
+	/**
+	 * 保存客户和联系人类型
+	 */
+	@ResponseBody
+	@RequestMapping(value = "saveType")
+	public Object saveType(WorkClientInfo workClientInfo,
+					   Model model
+	) throws Exception{
+		if (!beanValidator(model, workClientInfo)){
+			return form(workClientInfo, model);
+		}
+
+		//上传文件
+
+		Map<String,Object> map = new HashMap<>();
+
+		String [] jobStr=workClientInfo.getJobTypeStr().split(",");
+		Set<String> setType=new HashSet<>();
+		for(String str:jobStr){
+			setType.add(str);
+		}
+
+		String str = StringUtils.join(setType.toArray(), ",");
+		workClientInfo.setJobTypeStr(str);
+		//保存当前人的公司
+		workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+		workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+		if(!workClientInfo.getIsNewRecord()){//编辑表单保存
+			WorkClientInfo t = workClientInfoService.get(workClientInfo.getId());//从数据库取出记录的值
+			MyBeanUtils.copyBeanNotNull2Bean(workClientInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+			workClientInfoService.save(t);//保存
+		}else{//新增表单保存
+			workClientInfoService.save(workClientInfo);//保存
+		}
+
+		WorkClientLinkman linkman = workClientInfo.getWorkClientLinkmanList().get(0);
+		map.put("id",linkman.getId());//联系人id
+		map.put("clientId",workClientInfo.getId());//客户id
+		map.put("clientName",workClientInfo.getName());
+		map.put("uscCode",workClientInfo.getUscCode());
+		map.put("linkName",linkman.getName());
+		map.put("linkMobile",linkman.getLinkMobile());
+		map.put("linkPhone",linkman.getLinkPhone());
+
+		map.put("str","新增客户信息成功!");
+		return map;
+	}
+
+	/**
+	 * 合同新增客户管理
+	 */
+	@RequestMapping(value = "contractsave")
+	@ResponseBody
+	public HashMap<Object,Object> contractsave(WorkClientInfo workClientInfo
+                        ) {
+		HashMap<Object, Object> map = Maps.newHashMap();
+
+		String [] jobStr=workClientInfo.getJobTypeStr().split(",");
+		Set<String> setType=new HashSet<>();
+		for(String str:jobStr){
+			setType.add(str);
+		}
+
+		String str = StringUtils.join(setType.toArray(), ",");
+
+		workClientInfo.setJobTypeStr(str);
+
+		try {
+			//保存当前人的公司
+			workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+			workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+			if(!workClientInfo.getIsNewRecord()){//编辑表单保存
+				WorkClientInfo t = workClientInfoService.get(workClientInfo.getId());//从数据库取出记录的值
+				MyBeanUtils.copyBeanNotNull2Bean(workClientInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+				workClientInfoService.save(t);//保存
+				map.put("str","修改成功");
+			}else{//新增表单保存
+				workClientInfoService.save(workClientInfo);//保存
+				map.put("str","新增成功");
+			}
+			map.put("id",workClientInfo.getId());
+			map.put("name",workClientInfo.getName());
+			map.put("companyType", DictUtils.getMainDictLabel(workClientInfo.getCompanyType(),"company_type",""));
+			map.put("companyIndustry", DictUtils.getMainDictLabel(workClientInfo.getCompanyIndustry(),"company_industry",""));
+			if(workClientInfo.getArea()!=null){
+				map.put("areaName",workClientInfo.getArea().getName());
+			}
+			map.put("msg","true");
+		}catch (Exception e){
+			logger.error("Exception e:"+e);
+			map.put("id",workClientInfo.getId());
+			map.put("msg","false");
+		}
+		return  map;
+	}
+
+	@RequestMapping(value = "getRow")
+	@ResponseBody
+	public String getPNumberr() {
+		HashMap<Object, Object> map = Maps.newHashMap();
+		String obj = request.getParameter("obj");
+		WorkClientInfo workClientInfo = workClientInfoService.get(obj);
+		map.put("id",workClientInfo.getId());
+		map.put("name",workClientInfo.getName());
+		map.put("companyType", DictUtils.getMainDictLabel(workClientInfo.getCompanyType(),"company_type",""));
+
+		map.put("companyIndustry", DictUtils.getMainDictLabel(workClientInfo.getCompanyIndustry(),"company_industry",""));
+		if(workClientInfo.getArea()!=null){
+			map.put("areaName",workClientInfo.getArea().getName());
+		}
+		return JsonMapper.toJsonString(map);
+	}
+
+	/**
+	 * 删除客户管理(被引用过的客户信息不可以被删除,但可以修改。 没有被引用过的客户信息可以删除)
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:del")
+	@RequestMapping(value = "delete")
+	@ResponseBody
+	public Map delete(WorkClientInfo workClientInfo) {
+		Map map = new HashMap();
+		if(!workClientInfoService.getUsedCount(workClientInfo)){
+			workClientInfoService.delete(workClientInfo);
+			map.put("result",1);
+			map.put("msg","删除客户成功");
+		}else{
+			map.put("result",0);
+			map.put("msg","该客户已经被其他模块引用,删除失败");
+		}
+		return map;
+	}
+
+	/**
+	 * 批量删除客户管理
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:del")
+	@RequestMapping(value = "deleteAll")
+	public String deleteAll(String ids, RedirectAttributes redirectAttributes) {
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			workClientInfoService.delete(workClientInfoService.get(id));
+		}
+		addMessage(redirectAttributes, "删除客户管理成功");
+		return "redirect:"+Global.getAdminPath()+"/workclientinfo/workClientInfoAll/?repage";
+	}
+
+	/**
+	 * 导出excel文件
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:export")
+    @RequestMapping(value = "export", method=RequestMethod.POST)
+    public String exportFile(WorkClientInfo workClientInfo, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "客户管理"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+			if(!"1".equals(UserUtils.getSelectCompany().getId())){
+				workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+			}
+            Page<WorkClientInfo> page = workClientInfoService.findPage(new Page<WorkClientInfo>(request, response, -1), workClientInfo);
+    		new ExportExcel(true,"客户管理", WorkClientInfo.class,1).setDataList(true,page.getList()).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+    		return null;
+		} catch (Exception e) {
+			logger.error("Exception e:"+e);
+			addMessage(redirectAttributes, "导出客户管理记录失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workclientinfo/workClientInfoAll/?repage";
+    }
+
+	/**
+	 * 导入Excel数据
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:import")
+    @RequestMapping(value = "import", method=RequestMethod.POST)
+    public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+		try {
+			String date = DateUtils.getDate("yyyyMMddHHmmss");
+			int successNum = 0;
+			int failureNum = 0;
+			StringBuilder failureMsg = new StringBuilder();
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<WorkClientInfo> list = ei.getDataList(WorkClientInfo.class);
+			List<WorkClientInfo> errlist = new ArrayList<>();
+			for (WorkClientInfo workClientInfo : list){
+				try{
+					String validator = beanValidatorImport(workClientInfo);
+					if (StringUtils.isNotBlank(validator)){
+						failureMsg.append("<br/>"+validator+"!");
+						failureNum++;
+						workClientInfo = toWorkClientInfo(workClientInfo,date,validator);
+						errlist.add(workClientInfo);
+					}else if (StringUtils.isBlank(workClientInfo.getOurBank())){
+						failureMsg.append("<br/>开户银行为空; ");
+						failureNum++;
+						workClientInfo = toWorkClientInfo(workClientInfo,date,"开户银行为空!");
+						errlist.add(workClientInfo);
+					}else if (StringUtils.isBlank(workClientInfo.getBankNumber())){
+						failureMsg.append("<br/>开户账号为空; ");
+						failureNum++;
+						workClientInfo = toWorkClientInfo(workClientInfo,date,"开户账号为空!");
+						errlist.add(workClientInfo);
+					}else if (StringUtils.isBlank(workClientInfo.getLinkname())){
+						failureMsg.append("<br/>联系人姓名为空; ");
+						failureNum++;
+						workClientInfo = toWorkClientInfo(workClientInfo,date,"联系人姓名为空!");
+						errlist.add(workClientInfo);
+					}else if (StringUtils.isNotBlank(workClientInfo.getUscCode())&&"false".equals(this.checkUscCode(workClientInfo.getUscCode(),""))){
+                        failureMsg.append("<br/>重复的统一社会信用代码; ");
+                        failureNum++;
+                        workClientInfo = toWorkClientInfo(workClientInfo,date,"重复的统一社会信用代码!");
+                        errlist.add(workClientInfo);
+                    }else {
+						workClientInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+						workClientInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+						workClientInfo.convertClientType();
+						List<WorkClientLinkman> linkmanList = Lists.newArrayList();
+						workClientInfo.setWorkClientLinkmanList(linkmanList);
+						WorkClientLinkman workClientLinkman = new WorkClientLinkman();
+						workClientLinkman.setName(workClientInfo.getLinkname());
+						workClientLinkman.setEmail(workClientInfo.getLinkemail());
+						workClientLinkman.setPosition(workClientInfo.getPosition());
+						workClientLinkman.setQq(workClientInfo.getQq());
+						workClientLinkman.setLinkPhone(workClientInfo.getLinkPhone());
+						workClientLinkman.setLinkMobile(workClientInfo.getLinkMobile());
+						linkmanList.add(workClientLinkman);
+						List<WorkClientBank> workClientBankList = Lists.newArrayList();
+						WorkClientBank workClientBank = new WorkClientBank();
+						workClientBank.setBankNumber(workClientInfo.getBankNumber());
+						workClientBank.setOurBank(workClientInfo.getOurBank());
+						workClientBankList.add(workClientBank);
+						workClientInfo.setWorkClientBankList(workClientBankList);
+						workClientInfoService.saveImport(workClientInfo);
+						successNum++;
+					}
+				}catch(ConstraintViolationException ex){
+					logger.error("Exception e:"+ex);
+					List<String> messageList = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
+					for (String message : messageList){
+						failureMsg.append(message+"; ");
+						failureNum++;
+					}
+					workClientInfo = toWorkClientInfo(workClientInfo,date,"导入失败!");
+					errlist.add(workClientInfo);
+				}catch (Exception ex) {
+					logger.info("Exception ex"+ex);
+					workClientInfo = toWorkClientInfo(workClientInfo,date,ex+"!");
+					failureNum++;
+					errlist.add(workClientInfo);
+					failureMsg.append(ex+"!");
+				}
+			}
+			SysImportInfo sysImportInfo = new SysImportInfo();
+			sysImportInfo.setCompanyId(UserUtils.getSelectCompany().getId());
+			sysImportInfo.setOfficeId(UserUtils.getSelectOffice().getId());
+			sysImportInfo.setModular("1");
+			if (failureNum>0){
+				failureMsg.insert(0, ",失败 "+failureNum+" 个错误信息记录。");
+				ExportExcel exportExcel= new ExportExcel(false,"客户信息数据", WorkClientInfo.class, 1).setDataList(errlist);
+				OSSClientUtil ossUtil = new OSSClientUtil();
+
+				String fileName=date+"客户信息错误导入日志.xlsx";
+				String fileDir = "importInfo/workClintInfoImport/";
+				fileDir = fileDir+System.nanoTime()+"/";
+				try {
+					ByteArrayOutputStream os = new ByteArrayOutputStream();
+					exportExcel.write(os);
+					byte[] content = os.toByteArray();
+					InputStream inputStream = new ByteArrayInputStream(content);
+					ossUtil.uploadFile2OSS(inputStream,fileDir, fileName);
+				}catch (IOException e){
+					logger.error("Exception e:"+e);
+					e.printStackTrace();
+				}catch (Exception e1){
+					logger.error("Exception e1:"+e1);
+					e1.printStackTrace();
+					System.out.println("客户信息错误导入日志文件上传失败!");
+				}
+
+				String name = Global.getAliyunUrl()+"/"+fileDir+fileName;
+				logger.info("name:"+name);
+				sysImportInfo.setUrl(name);
+				sysImportInfo.setFileName(fileName);
+				sysImportInfo.setErrCount(failureNum+"");
+				sysImportInfo.setIsTrue("0");
+			}else {
+				sysImportInfo.setIsTrue("1");
+				sysImportInfo.setErrCount("0");
+			}
+
+			String msg = "已成功导入 "+successNum+" 条客户信息记录"+failureMsg;
+			String info = "已成功导入 "+successNum+" 条客户信息记录,失败 "+failureNum+" 个错误信息记录。";
+			sysImportInfo.setErrInfo(info);
+			sysImportInfoService.save(sysImportInfo);
+			addMessage(redirectAttributes, msg);
+		} catch (Exception e) {
+			logger.error("Exception e:"+e);
+			addMessage(redirectAttributes, "导入客户信息失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workclientinfo/workClientInfoAll/?repage";
+    }
+
+	/**
+	 * 下载导入客户管理数据模板
+	 */
+	@RequiresPermissions("workclientinfo:workClientInfoAll:import")
+    @RequestMapping(value = "import/template")
+    public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "客户管理数据导入模板.xlsx";
+    		List<WorkClientInfo> list = Lists.newArrayList();
+    		new ExportExcel(true,"客户管理数据", WorkClientInfo.class, 1).setDataList(list).write(response, fileName,request.getHeader("USER-AGENT")).dispose();
+    		return null;
+		} catch (Exception e) {
+			logger.error("Exception e:"+e);
+			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workclientinfo/workClientInfoAll/?repage";
+    }
+
+	/**
+	 * 查看导入客户管理数据信息
+	 */
+    @RequestMapping(value = "importInfoErr")
+    public String importInfoErr(SysImportInfo sysImportInfo,HttpServletRequest request, HttpServletResponse response, Model model) {
+		SysImportInfo importInfo = new SysImportInfo();
+		importInfo.setModular("1");
+		Page<SysImportInfo> page = sysImportInfoService.findPage(new Page<SysImportInfo>(request, response), importInfo);
+		model.addAttribute("page", page);
+		model.addAttribute("modular", "1");
+		return "modules/sysimportinfo/sysimportinfoList";
+    }
+
+	/**
+	 * 选择客户的联系人
+	 */
+	@ResponseBody
+	@RequestMapping(value = "selectLinkman")
+	public AjaxJson selectLinkman(String clientId, HttpServletRequest request, HttpServletResponse response, Model model) {
+		AjaxJson j = new AjaxJson();
+		if(StringUtils.isBlank(clientId)){
+			clientId = "1";
+		}
+		List<WorkClientLinkman> list = workClientInfoService.findLinkmanList(new WorkClientInfo(clientId));
+		j.put("list", list);
+		return j;
+	}
+
+	/**
+	 * 删除附件
+	 * @return
+	 */
+	@RequestMapping("/deleteAttachment")
+	public String deleteAttachment(WorkClientInfo workClientInfo,HttpServletRequest request,RedirectAttributes redirectAttributes,Model model){
+		String attchmentId = request.getParameter("attchmentId");
+		model.addAttribute("workClientInfo",workClientInfo);
+		WorkClientAttachment workClientAttachment = new WorkClientAttachment();
+		workClientAttachment.setId(attchmentId);
+		workClientAttachment.setDelFlag("1");
+		String s = workClientInfoService.deleteAttachment(workClientAttachment);
+		addMessage(redirectAttributes, s);
+		return "modules/workclientinfo/workClientInfoForm";
+	}
+
+	/**
+	 * 异步上传文件
+	 * @return
+	 */
+	@RequestMapping("/uploadFile")
+	@ResponseBody
+	public Map<String,Object> uploadFile(WorkClientInfo workClientInfo,
+										 Model model, RedirectAttributes redirectAttributes,
+										 HttpServletRequest request,
+										 @RequestParam(value = "myFile") CommonsMultipartFile myFile){
+		String attchmentId = request.getParameter("attchmentId");
+		WorkClientAttachment workClientAttachment = workClientInfoService.uploadFileSingle(request, myFile, workClientInfo.getId(), VarStr.attachmentFlag[0]);
+		workClientAttachment.setId(attchmentId);
+		String s = workClientInfoService.save(workClientAttachment);
+		Map map = new HashMap();
+		map.put("msg","success");
+		return map;
+	}
+
+	/**
+	 * 同步WorkClientInfo
+	 * @return
+	 */
+	public WorkClientInfo toWorkClientInfo(WorkClientInfo workClientInfo, String date , String errInfo){
+		workClientInfo.setNowDate(date);
+		workClientInfo.setUserName(UserUtils.getUser().getName());
+		workClientInfo.setErrInfo(errInfo);
+		return workClientInfo;
+	}
+
+	@RequestMapping("linkmanList")
+	public String queryLinkmanListByClientId(WorkClientLinkman linkman, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		Page<WorkClientLinkman> page = workClientInfoService.findLinkmanPage(new Page<WorkClientLinkman>(request, response), linkman);
+		//Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", linkman);
+		model.addAttribute("page", page);
+		return  "modules/sys/gridselect1";
+	}
+	//施工方联系人
+	@RequestMapping("clientInfolist")
+	public String queryClientInfolist(WorkClientInfo clientInfo, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", clientInfo);
+		model.addAttribute("page", page);
+		if(clientInfo.getClientType().equals("3")){
+			return  "modules/sys/gridselectClientLink";
+		}else if(clientInfo.getClientType().equals("2")){
+			return  "modules/sys/gridselectClientBuild";
+		}else if(clientInfo.getClientType().equals("4")){
+			return  "modules/sys/gridselectClientSuper";
+		}else if(clientInfo.getClientType().equals("5")){
+			return  "modules/sys/gridselectClientDesign";
+		}
+			return "null";
+	}
+
+	/**
+	 * 新添加页面建设单位
+	 * @return
+	 */
+	@RequestMapping("clientInfoBuild")
+	public String queryClientInfoBuild(WorkClientInfo clientInfo, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", clientInfo);
+		model.addAttribute("page", page);
+		return  "modules/sys/gridselectClientBuild";
+	}
+
+	/**
+	 * 新添加监理单位
+	 * @return
+	 */
+	@RequestMapping("clientInfoSuper")
+	public String queryClientInfoSuper(WorkClientInfo clientInfo, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", clientInfo);
+		model.addAttribute("page", page);
+		return  "modules/sys/gridselectClientSuper";
+	}
+
+	//设计方联系人
+	@RequestMapping("clientInfoDesign")
+	public String queryClientInfoDesign(WorkClientInfo clientInfo, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", clientInfo);
+		model.addAttribute("page", page);
+		return  "modules/sys/gridselectClientDesign";
+	}
+    @ResponseBody
+	@RequestMapping("checkUscCode")
+    public String checkUscCode(String uscCode,String oldUscCode){
+        if(uscCode!=null&&uscCode.equals(oldUscCode)){
+            return "true";
+        }else if(uscCode!=null){
+            int cou=workClientInfoService.countByUscCode(uscCode);
+            if (cou==0){
+                return "true";
+            }
+        }
+	    return "false";
+    }
+
+    @RequestMapping("selectclientBankinfo")
+    public String queryclientBankinfo(WorkClientBank workClientBank, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+        Page<WorkClientBank> page = workClientInfoService.findBankInfoPage(new Page<WorkClientBank>(request, response), workClientBank);
+        try {
+            fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+            fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+            searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+            searchKey = URLDecoder.decode(searchKey, "UTF-8");
+        } catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+            e.printStackTrace();
+        }
+        model.addAttribute("labelNames", fieldLabels.split("\\|"));
+        model.addAttribute("labelValues", fieldKeys.split("\\|"));
+        model.addAttribute("fieldLabels", fieldLabels);
+        model.addAttribute("fieldKeys", fieldKeys);
+        model.addAttribute("url", url);
+        model.addAttribute("searchLabel", searchLabel);
+        model.addAttribute("searchKey", searchKey);
+        model.addAttribute("obj", workClientBank);
+        model.addAttribute("page", page);
+        return  "modules/sys/gridselectClientBankinfo";
+    }
+
+	/**
+	 * 根据关键字查询相关企业
+	 * @param keyword
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("enterpriseSearchByName")
+	public String enterpriseSearchByName(String keyword){
+		if(StringUtils.isBlank(keyword)){
+			return null;
+		}
+		return  TicketQueryUtils.enterpriseSearchByName(keyword);
+	}
+
+	/**
+	 * 根据id查询企业税号
+	 * @param id
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping("enterpriseTicketInfo")
+	public Object enterpriseTicketInfo(String id){
+		if(StringUtils.isBlank(id)){
+			return null;
+		}
+		return TicketQueryUtils.enterpriseTicketInfoQueryById(id);
+	}
+
+	/**
+	 * 无合同,查询公司所有客户及其关联的联系人
+	 * @return
+	 */
+	@RequestMapping("queryLinkManByCompany")
+	public String queryLinkManByCompany(WorkClientLinkman linkman, String url, String fieldLabels, String fieldKeys, String searchLabel, String searchKey, String searchLabel1, String searchKey1, HttpServletRequest request, HttpServletResponse response, Model model){
+		WorkClientInfo clientInfo = new WorkClientInfo();
+		clientInfo.setCompanyId(UserUtils.getUser().getCompany().getId());
+		if(null !=linkman.getClientId()){
+			if (StringUtils.isNotBlank(linkman.getClientId().getName())){
+				clientInfo.setName(linkman.getClientId().getName());
+			}
+		}
+		linkman.setClientId(clientInfo);
+		Page<WorkClientLinkman> page = workClientInfoService.queryLinkManPageByCompany(new Page<WorkClientLinkman>(request, response), linkman);
+		//Page<WorkClientInfo> page = workClientInfoService.findPageUnit(new Page<WorkClientInfo>(request, response), clientInfo);
+		try {
+			fieldLabels = URLDecoder.decode(fieldLabels, "UTF-8");
+			fieldKeys = URLDecoder.decode(fieldKeys, "UTF-8");
+			searchLabel = URLDecoder.decode(searchLabel, "UTF-8");
+			searchKey = URLDecoder.decode(searchKey, "UTF-8");
+		} catch (UnsupportedEncodingException e) {
+			logger.error("Exception e:"+e);
+			e.printStackTrace();
+		}
+		model.addAttribute("labelNames", fieldLabels.split("\\|"));
+		model.addAttribute("labelValues", fieldKeys.split("\\|"));
+		model.addAttribute("fieldLabels", fieldLabels);
+		model.addAttribute("fieldKeys", fieldKeys);
+		model.addAttribute("url", url);
+		model.addAttribute("searchLabel", searchLabel);
+		model.addAttribute("searchKey", searchKey);
+		model.addAttribute("obj", linkman);
+		model.addAttribute("page", page);
+		return  "modules/sys/gridselect1";
+	}
+
+	@ResponseBody
+	@RequestMapping("checkClient")
+	public String  checkClient(WorkClientInfo workClientInfo){
+       List<WorkClientInfo> workClientInfos = workClientInfoService.findByName(workClientInfo);
+       if(workClientInfos != null && workClientInfos.size()>0){
+       	   return "false";
+	   }
+       return "true";
+	}
+
+	/**
+	 * 查询工作类型
+	 * @return
+	 */
+	@RequestMapping("getJobType")
+	@ResponseBody
+	public AjaxJson getJobType(){
+		AjaxJson ajaxJson = new AjaxJson();
+		try {
+			List<MainDictDetail> getAchievementTypeList = workClientInfoService.getJobType();
+			List<Map<String, Object>> mapList = new ArrayList<>();
+			for (int i = 0; i < getAchievementTypeList.size(); i++) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("name", getAchievementTypeList.get(i).getLabel());
+				map.put("value", getAchievementTypeList.get(i).getValue());
+				mapList.add(map);
+			}
+			ajaxJson.getBody().put("list", mapList);
+			ajaxJson.setMsg("获取数据成功");
+		} catch (Exception e) {
+			logger.error("获取数据异常!", e);
+			ajaxJson.setSuccess(false);
+			ajaxJson.setMsg("获取数据异常");
+		}
+		return ajaxJson;
+	}
+	/**
+	 * 查询工作类型
+	 * @return
+	 */
+	@RequestMapping("getJobTypeById")
+	@ResponseBody
+	public AjaxJson getJobTypeById(String id){
+		AjaxJson ajaxJson = new AjaxJson();
+		try {
+			List<MainDictDetail> getJobTypeById = workClientInfoService.getJobTypeById(id);
+			List<Map<String, Object>> mapList = new ArrayList<>();
+			for (int i = 0; i < getJobTypeById.size(); i++) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("value", getJobTypeById.get(i).getTypeId());
+				mapList.add(map);
+			}
+			ajaxJson.getBody().put("list", mapList);
+			ajaxJson.setMsg("获取数据成功");
+		} catch (Exception e) {
+			logger.error("获取数据异常!", e);
+			ajaxJson.setSuccess(false);
+			ajaxJson.setMsg("获取数据异常");
+		}
+		return ajaxJson;
+	}
+	/**
+	 * 查询是否拥有统一社会信用代码checkClientUscCode
+	 */
+
+	@RequestMapping("checkClientUscCode")
+	@ResponseBody
+	public Map checkClientUscCode(WorkClientInfo workClientInfo,Model model){
+		WorkClientInfo getWorkClientInfo=workClientInfoService.findUscCode(workClientInfo);
+		Map<String,Object> maps=new HashMap<>();
+		if(null != getWorkClientInfo){
+			maps.put("workClientInfo",getWorkClientInfo);
+			maps.put("code","false");
+			return maps;
+		}else{
+			maps.put("code","true");
+			return maps;
+		}
+	}
+}

+ 962 - 0
src/main/webapp/webpage/modules/workclientinfo/all/workClientInfoForm.jsp

@@ -0,0 +1,962 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String param = request.getParameter("param");
+
+%>
+<html>
+<head>
+	<title>客户信息管理</title>
+	<meta name="decorator" content="default"/>
+    <script type="text/javascript" src="${ctxStatic}/layui/layui.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/layui/css/layui.css"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <style>
+        #companyType-error{
+            left:0;
+            top:40px;
+        }
+        #clientType-error{
+            left:0;
+            top:40px;
+        }
+        #companyIndustry-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<script type="text/javascript">
+		var validateForm;
+		var exitName = true;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              var jobTypeStr = $("#jobTypeStr").val();
+              if (jobTypeStr == null || "" == jobTypeStr) {
+                  parent.layer.msg("请选择联系人类型!", {icon: 5});
+                  return false;
+              }
+              var telephone = $("#telephone").val();
+              if(!/(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/.test(telephone) && !/^([0-9]{3,4}-)?[0-9]{7,8}$/.test(telephone)){
+                  parent.layer.msg("公司电话有误,请重新填写!", {icon: 5});
+                  return false;
+              }
+
+              var tableObj = document.getElementById('contentTable').rows[1];
+              var  contentTableLength = $("table#contentTable tr:visible").length;
+              if (tableObj == null || contentTableLength == 1) {
+                  parent.layer.msg("请填写联系人信息!", {icon: 5});
+                  return false;
+              }
+
+
+              if(!exitName){
+                  return false;
+              }
+			  $("#inputForm").submit();
+			  return true;
+		  }else {
+              parent.layer.msg("信息未填写完整!", {icon: 5});
+          }
+
+		  return false;
+		}
+		$(document).ready(function() {
+            layui.use(['form', 'layer'], function () {
+                var form = layui.form;
+                //单选监听器
+                layui.form.on('radio(hasUscc)', function(data){
+                    var span=data.value;
+                    if("2"==span){
+                        $(".companyType_uscCode").hide();
+                        $('input[name="uscCode"]').val("");
+                    }else {
+                        $(".companyType_uscCode").show();
+                    }
+                });
+
+            });
+            contentDetailTypeShow();
+            checkContentKeyUp('unitIntroduction',500);
+            $.validator.messages["orUnicode"] = true;
+            $.validator.methods["orUnicode"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z\-]*$/.test( value );
+            }
+            $.validator.messages["fax"] = true;
+            $.validator.methods["fax"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["telephone"] = true;
+            $.validator.methods["telephone"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["ourBank"] = true;
+            $.validator.methods["ourBank"] = function( value, element ) {
+                return this.optional( element ) || /^[\u4e00-\u9fa5]*$/.test( value );
+            }
+            $.validator.messages["taxId"] = true;
+            $.validator.methods["taxId"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z]*$/.test( value );
+            }
+
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的统一社会信用代码");
+
+			validateForm = $("#inputForm").validate({
+                rules:{
+                    orUnicode:{
+                        orUnicode:true
+                    },
+                    zipCode:{
+                        digits:true
+                    },
+                    email:{
+                        email:true
+                    },
+                    fax:{
+                        fax:true
+                    },
+                    telephone:{
+                        telephone:true
+                    },
+                    taxId:{
+                        taxId:true
+                    }
+				},
+                messages:{
+                    orUnicode:{
+                        orUnicode:"仅允许输入数字、大写拉丁字母、符号“-”"
+                    },
+                    zipCode:{
+                        required:"必须输入数字"
+                    },
+                    email:{
+                        email:"请输入合法的邮箱地址"
+                    },
+                    fax:{
+                        fax:"仅允许输入数字、符号“-”"
+                    },
+                    telephone:{
+                        telephone:"仅允许输入数字、符号“-”"
+                    },
+                    taxId:{
+                        taxId:"仅允许输入数字、大写拉丁字母"
+                    }
+                },
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $('input[name="hasUscc"]').on('ifChecked', function(event){
+                disUscc(event.target.defaultValue);
+            });
+            disUscc($('input[name="hasUscc"]:checked').val());
+            if($("#uscCode").val()!=null&&$("#uscCode").val()!='') {
+                $("#inputForm").validate().element($("#uscCode"));
+            }
+            $("#name").on("change",function(){
+                var id = $("#id").val();
+                var name = $("#name").val();
+                var uscCode = $("#uscCode").val();
+                $.ajax({
+                    url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                    type:"post",
+                    data:{"id":id,
+                        "name":name,
+                        "uscCode":uscCode},
+                    success:function(data){
+                        if(data==="false"){
+                            exitName=false
+                            $("#ph").html("该客户已存在");
+                        }else {
+                            exitName=true
+                            $("#ph").html('');
+                        }
+                    }
+                });
+                }
+            )
+
+            /*新增代码传送统一社会信用代码*/
+            $("#uscCode").on("change",function(){
+                    var id = $("#id").val();
+                    var name = $("#name").val();
+                    var uscCode= $("#uscCode").val();
+
+                $.ajax({
+                    url:"${ctx}/workclientinfo/workClientInfo/checkClientUscCode",
+                    type:"post",
+                    data:{"id":id,
+                        "name":name,
+                        "uscCode":uscCode},
+                    success:function(data){
+                        if(data.code==="false"){
+                            exitName=false
+                             $("#uscPh").html("该客户已存在");
+                            console.log(data);
+
+                            layer.confirm('该客户信息已存在是否进行信息修改?', {
+                                btn: ['确定', '取消'] //可以无限个按钮
+
+                            }, function(index, layero){
+                                /*var linkType=${linkType};
+                                console.log("---------"+linkType);*/
+                                var typeId=data.workClientInfo.id;
+                                window.location.href="${ctx}/workclientinfo/workClientInfo/formTwo?id="+typeId+"&param=1";
+
+                            }, function(index){
+                                return "false";
+                            });
+
+                        }else {
+                            exitName=true
+                            $("#uscPh").html('');
+                        }
+                    }
+                });
+                }
+            )
+
+        });
+
+		function testOurBank(value){
+		    if(!/^[\u4e00-\u9fa5]*$/.test( value )){
+                parent.layer.msg("开户银行必须输入汉字",{icon:6});
+            }
+        }
+
+        /**
+         * 只允许输入数字
+         * @param value
+         */
+        function testBankNumber(value){
+            if(!/^\d*$/.test( value )){
+                parent.layer.msg("开户帐号必须输入数字",{icon:6});
+            }
+        }
+		function addRow(list, idx, tpl, row){
+            var idx1 = $("#workClientBankList tr").length;
+		    if(list == '#workClientBankList'){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#workClientLinkmanList tr").length;
+            if(list == '#workClientLinkmanList'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+		}
+		function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+
+		}
+        function urlRedict(file,attach){
+		    parent.layer.confirm('确定删除吗?', {
+                btn: ['确认', '取消'] //可以无限个按钮
+            }, function(index, layero){
+                var index1 = parent.layer.load(0, {shade: false});
+                $.post("${ctx}/workfullmanage/workFullManage/deleteFile",
+                    {"file":file,"attach":attach},
+                    function(result){
+                        var d = JSON.parse(result);
+                        if(d.str){
+                            location.reload();
+                            parent.layer.msg("删除成功!!!",{icon:6});
+                            parent.layer.close(index1);
+                            parent.layer.close(index);
+                        }
+                    });
+            }, function(index){
+                parent.layer.close(index)
+            });
+
+        }
+
+        function checkName() {
+            var id = $("#id").val();
+            var name = $("#name").val();
+            var uscCode = $("#uscCode").val();
+            $.ajax({
+                url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                type:"post",
+                data:{"id":id,
+                    "name":name,
+                    "uscCode":uscCode},
+                success:function(data){
+
+                    if(data=="false"){
+                        exitName=false
+                        $("#ph").html("该客户已存在");
+                    }else {
+                        exitName=true
+                        $("#ph").html('');
+                    }
+                }
+            });
+        }
+
+        function insertTitle(tValue){
+            var list = "${workClientInfo.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "5";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "workClientInfo";
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile" + divId).show();
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, size);
+            }
+        }
+
+        function disUscc(hasUscc) {
+            if("2"==hasUscc){
+                $(".companyType_uscCode").hide();
+                $('input[name="uscCode"]').val("");
+            }else {
+                $(".companyType_uscCode").show();
+            }
+        }
+
+        // 模糊查询下拉框
+        var code=null;
+        function fuzzyQuery(){
+            var keyword = $("#name").val();
+            if (keyword == null || keyword === "") {
+                return;
+            }
+            $.post(
+                "${ctx}/workclientinfo/workClientInfo/enterpriseSearchByName",
+                {"keyword": keyword},
+                function (result) {
+                    if (result == null) {
+                        return;
+                    }
+                    var json = eval(result.data.items);
+                    //如果精准查询,只有一条数据,则不显示模糊查询div,直接赋值
+                    if (json.length == 1) {
+                        var id = json[0].id;
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER).change();
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+                        return;
+                    }
+                    var html = "<ul>";
+                    for (var i = 0; i < json.length; i++) {
+                        html += "<li value=" + json[i].id + ">" + json[i].entname + "</li>";
+                    }
+                    html += "</ul>";
+                    $("#fuzzyQuerySelect").show().html(html);
+
+                    //鼠标移动到某行上改变颜色
+                    $("li").bind("mouseover", function () {
+                        $(this).css("background-color", "grey");
+                    });
+                    $("li").bind("mouseout", function () {
+                        $(this).css("background-color", "white");
+                    });
+                    //单击某行
+                    $("li").bind("click", function () {
+                        $("#fuzzyQuerySelect").hide();
+                        var id = $(this).val();
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER).change();
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+
+                    });
+                }, "json");
+        }
+
+
+	</script>
+
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <input type="hidden" value="${param.param}" id="param">
+        <form:form id="inputForm" modelAttribute="workClientInfo" enctype="multipart/form-data"
+                   onkeydown="if(event.keyCode==13)return false;" action="${ctx}/workclientinfo/workClientInfoAll/save"
+                   method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="jobTypeShow"/>
+            <input type="hidden" id="jobTypeStr" name="jobTypeStr" value="">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7" id="search">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户名称:&nbsp;&nbsp;</label>
+                    <div class="layui-input-block">
+                        <form:input path="name" placeholder="请输入客户名称" htmlEscape="false" id="name" class="form-control required layui-input"/>
+                        <a onclick="fuzzyQuery()"  class="nav-btn nav-btn-add" style="margin-right: 0px;top:0px;right:1px;position: absolute;height:40px;line-height: 40px;">查询</a>
+                        <span id="ph" style="color:#cc5965"></span>
+                    </div>
+                    <div id="fuzzyQuerySelect"
+                         style="z-index:1;display:none;background-color:white; position: absolute; width:333px;left:120px; border: 1px solid gray;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>拥有统一社会信用代码:</label>
+                    <div class="layui-input-block">&nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" class="usccClass" name="usccClass" path="hasUscc" lay-filter="hasUscc" value="1" label="是" checked="true" />
+                        &nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" class="usccClass" name="usccClass" path="hasUscc" lay-filter="hasUscc" value="2" label="否" />
+                        </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7 companyType_uscCode">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="uscCode" placeholder="请输入统一社会信用代码" htmlEscape="false" id="uscCode"   class="form-control required isUscCode layui-input"/>
+                        <input type="hidden" id="oldUscCode" value="${workClientInfo.uscCode}"/>
+                        <span id="uscPh" style="color:#cc5965"></span>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户性质:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyType" class="form-control simple-select required" id="companyType">
+                            <form:option value="" label="--请选择客户性质--"/>
+                            <form:options items="${fns:getMainDictList('company_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在行业:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyIndustry" id="companyIndustry" class="form-control simple-select required">
+                            <form:option value="" label="--请选择行业--"/>
+                            <form:options items="${fns:getMainDictList('company_industry')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="clientType" id="clientType" class="form-control simple-select required">
+                            <form:option value="" label="--请选择客户类型--"/>
+                            <form:options items="${fns:getMainDictList('client_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>代表方:</label>
+                    <div class="layui-input-block">
+                        <div id="jobType" class="xm-select-demo" tabindex="0" contenteditable="true"></div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">法人代表:</label>
+                    <div class="layui-input-block">
+                        <form:input placeholder="请输入法人代表" path="lawerPresint" id="lawerPresint" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">邮政编码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zipCode" id="zipCode" htmlEscape="false" minlength="6" maxlength="6"
+                                    placeholder="请输入邮政编码" class="form-control digits layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">传真:</label>
+                    <div class="layui-input-block">
+                        <form:input path="fax" placeholder="请输入传真"  id="fax" htmlEscape="false" class="form-control isTel layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>公司电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="telephone" id="telephone" htmlEscape="false" maxlength="20"
+                                    placeholder="请输入公司电话" class="form-control isTel layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">公司网址:</label>
+                    <div class="layui-input-block">
+                        <form:input placeholder="请输入公司网址" path="companyUrl" id="companyUrl" htmlEscape="false" class="form-control isUrl layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在地区:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:treeselect id="area" name="area.id" value="${workClientInfo.area.id}" labelName="area.name"
+                                        labelValue="${workClientInfo.area.name}"
+                                        cssStyle="background-color:#fff"
+                                        title="区域" url="/sys/area/treeData" cssClass="form-control required layui-input"
+                                        allowClear="true" notAllowSelectParent="false"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">注册地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="registerAddress" placeholder="请输入注册地址" id="registerAddress" htmlEscape="false"
+                                    class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">详细地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" placeholder="请输入详细地址" id="address" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label"><%--<span class="require-item">*</span>--%>开户行信息:</label>
+                    <div class="layui-input-block">
+                        <div class="layui-item nav-btns" style="padding-left:0px;">
+                            <a class="nav-btn nav-btn-add"
+                               onclick="addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+                               title="新增"><i class="fa fa-plus"></i> 新增</a>
+                        </div>
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th class="sort-column companyType"><%--<font color="red">*</font>--%>开户银行</th>
+                                <th width="400px;"><%--<font color="red">*</font>--%>开户账号</th>
+                                <th width="100px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="workClientBankList">
+
+                            </tbody>
+                        </table>
+                        <script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="workClientBankList{{idx}}">
+                                    <td class="hide">
+                                        <input id="workClientBankList{{idx}}_id" name="workClientBankList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="workClientBankList{{idx}}_delFlag" name="workClientBankList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                    </td>
+
+                                    <td>
+                                        <input placeholder="请输入开户银行" id="workClientBankList{{idx}}_ourBank" onblur="testOurBank(this.value)" name="workClientBankList[{{idx}}].ourBank" type="text" value="{{row.ourBank}}"    class="form-control required"/>
+                                    </td>
+
+                                    <td>
+                                        <input placeholder="请输入开户账号 " id="workClientBankList{{idx}}_bankNumber" onblur="testBankNumber(this.value)" name="workClientBankList[{{idx}}].bankNumber" type="text" value="{{row.bankNumber}}"  minlength="12" maxlength="19"  class="form-control required digits "/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientBankList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+                        </script>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">单位简介:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="unitIntroduction" htmlEscape="false" rows="4" maxlength="500"
+                                       placeholder="请输入单位简介" onkeyup="checkContentKeyUp('unitIntroduction',500);" class="form-control "/>
+                    </div>
+                    <span id="contentMsg" style="float: right"></span>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>联系人信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a class="nav-btn nav-btn-add"
+                       onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;"
+                       title="新增"><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="100px"><font color="red">*</font>联系人姓名</th>
+                            <th width="100px">部门</th>
+                            <th width="100px">职务</th>
+                            <th width="100px">QQ</th>
+                            <th width="100px">联系方式1</th>
+                            <th width="100px">联系方式2</th>
+                            <th width="150px">E-mail</th>
+                            <th width="100px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <%--<c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                            <tr>
+                                   <td class="hide">
+                                       <input id="workClientLinkmanList${status.index + 1}_id"
+                                              name="workClientLinkmanList[${status.index + 1}].id" type="hidden"
+                                              value="${workClientLinkman.id}"/>
+                                       <input id="workClientLinkmanList${status.index + 1}_delFlag"
+                                              name="workClientLinkmanList[${status.index + 1}].delFlag" type="hidden"
+                                              value="0" readonly/>
+                                   </td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_name"
+                                              name="workClientLinkmanList[${status.index + 1}].name" type="text"
+                                              value="${workClientLinkman.name}" readonly class="form-control required"/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_office"
+                                              name="workClientLinkmanList[${status.index + 1}].office" type="text"
+                                              value="${workClientLinkman.office}" readonly class="form-control "/></td>
+                                   <td><input  id="workClientLinkmanList${status.index + 1}_position"
+                                              name="workClientLinkmanList[${status.index + 1}].position" type="text"
+                                              value="${workClientLinkman.position}" readonly class="form-control "/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_qq"
+                                              name="workClientLinkmanList[${status.index + 1}].qq"
+                                              type="text" value="${workClientLinkman.qq}" readonly class="form-control digits"/>
+                                   </td>
+                                   <td><input  id="workClientLinkmanList${status.index + 1}_linkMobile"
+                                              name="workClientLinkmanList[${status.index + 1}].linkMobile" type="text"
+                                              value="${workClientLinkman.linkMobile}" readonly class="form-control isPhone"/></td>
+                                   <td><input placeholder="请输入联系方式2" id="workClientLinkmanList${status.index + 1}_linkPhone"
+                                              name="workClientLinkmanList[${status.index + 1}].linkPhone" type="text"
+                                              value="${workClientLinkman.linkPhone}" readonly class="form-control isTel"/></td>
+                                   <td><input  id="workClientLinkmanList{{idx}}_email"
+                                              name="workClientLinkmanList[${status.index + 1}].email" type="text"
+                                              value="${workClientLinkman.email}"
+                                              class="form-control email" readonly/></td>
+                                   <td class="text-center op-td">
+                                    <span class="op-btn op-btn-delete"
+                                          onclick="delRow(this, '#workClientLinkmanList${status.index + 1}')"
+                                          title="删除"><i
+                                            class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+                                   </td>
+                            </tr>
+                        </c:forEach>--%>
+                        </tbody>
+                    </table>
+                    <script type="text/template" id="workClientLinkmanTpl">//<!--
+            <tr id="workClientLinkmanList{{idx}}">
+                <td class="hide">
+                    <input id="workClientLinkmanList{{idx}}_id" name="workClientLinkmanList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                    <input id="workClientLinkmanList{{idx}}_delFlag" name="workClientLinkmanList[{{idx}}].delFlag" type="hidden" value="0"/>
+                </td>
+
+                <td>
+                    <input  placeholder="请输入联系人姓名" id="workClientLinkmanList{{idx}}_name" name="workClientLinkmanList[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control required"/>
+                </td>
+                <td>
+                    <input placeholder="请输入部门" id="workClientLinkmanList{{idx}}_office" name="workClientLinkmanList[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control "/>
+                </td>
+                <td>
+                    <input placeholder="请输入职务" id="workClientLinkmanList{{idx}}_position" name="workClientLinkmanList[{{idx}}].position" type="text" value="{{row.position}}"    class="form-control "/>
+                </td>
+
+
+                <td>
+                    <input placeholder="请输入QQ" id="workClientLinkmanList{{idx}}_qq" name="workClientLinkmanList[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control digits"/>
+                </td>
+
+
+                <td>
+                    <input placeholder="请输入联系方式1" id="workClientLinkmanList{{idx}}_linkPhone" name="workClientLinkmanList[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control isTel"/>
+                </td>
+
+
+                <td>
+                    <input placeholder="请输入联系方式2" id="workClientLinkmanList{{idx}}_linkMobile" name="workClientLinkmanList[{{idx}}].linkMobile" type="text" value="{{row.linkMobile}}"    class="form-control isPhone"/>
+                </td>
+
+
+                <td>
+                    <input placeholder="请输入E-mail" id="workClientLinkmanList{{idx}}_email" name="workClientLinkmanList[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control email"/>
+                </td>
+
+                <td class="text-center op-td" >
+                    {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                </td>
+            </tr>//-->
+                    </script>
+                    <script type="text/javascript">
+                        var workClientLinkmanRowIdx = 0,
+                            workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        var workClientBankRowIdx = 0,
+                            workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        $(document).ready(function () {
+                            var data = ${fns:toJson(workClientInfo.workClientLinkmanList)};
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+                            }
+                            var dataBank = ${fns:toJson(workClientInfo.workClientBankList)};
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+                                workClientBankRowIdx = workClientBankRowIdx + 1;
+                            }
+                        });
+
+                    </script>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment"></span>
+                    <b><span id="baifenbi_attachment"></span></b>
+                    <div class="progress">
+                            <%--进度条--%>
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple"
+                       style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workClientInfo.workAttachments}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                <c:choose>
+                                    <c:when test="${workClientInfo.uploadMode == 2}">
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <c:choose>
+                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                        <td><a class="attention-info" href="javascript:void(0)"
+                                                               onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                        </td>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <td><a class="attention-info" href="javascript:void(0)"
+                                                               onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                        </td>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                    </c:otherwise>
+                                </c:choose>
+
+
+
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box">
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');"
+                                           class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)"
+                                               onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+                                               class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    function contentDetailTypeShow() {
+        $.ajax({
+            type:'post',
+            url:'${ctx}/workclientinfo/workClientInfo/getJobType',
+            data:{
+                "type":2
+            },
+            success:function(data){
+                if(data.success) {
+                var data = data.body.list;
+                var newDataList = data;
+                var showList = [];
+                    $.ajax({
+                        type:'post',
+                        url:'${ctx}/workclientinfo/workClientInfo/getJobTypeById',
+                        data:{
+                            "id":$("#id").val()
+                        },
+                        success:function(dataListById){
+
+                            if(dataListById.success) {
+                                var showDataList = dataListById.body.list;
+                                var lists = [];
+                                for (i in newDataList) {
+                                    for (j in showDataList) {
+                                        if (newDataList[i].value == showDataList[j].value) {
+                                            var newData = {
+                                                "name": newDataList[i].name,
+                                                "value": newDataList[i].value,
+                                                "selected": true
+
+                                            }
+                                            lists.push(newDataList[i].value);
+                                            showList.push(newData);
+                                            data.splice(i,1,newData);
+                                        }
+                                    }
+                                }
+                                if(0 == showDataList.length){
+                                    var jobTypeShow = $("#jobTypeShow").val();
+                                    if(undefined != jobTypeShow && null != jobTypeShow && '' != jobTypeShow){
+                                        for (i in newDataList) {
+                                            if (newDataList[i].value == jobTypeShow) {
+                                                var newData = {
+                                                    "name": newDataList[i].name,
+                                                    "value": newDataList[i].value,
+                                                    "selected": true
+
+                                                }
+                                                lists.push(newDataList[i].value);
+                                                showList.push(newData);
+                                                data.splice(i,1,newData);
+                                            }
+                                        }
+                                    }else{
+
+                                        var newData = {
+                                            "name": newDataList[0].name,
+                                            "value": newDataList[0].value,
+                                            "selected": true
+
+                                        }
+                                        lists.push(newDataList[0].value);
+                                        showList.push(newData);
+                                        data.splice(0,1,newData);
+                                    }
+                                }
+
+                                $("#jobTypeStr").val(lists);
+                                xmSelect.render({
+                                    el: '#jobType',
+                                    language: 'zn',
+                                    data:data
+                                })
+                            }
+                        }
+                    })
+                }
+            }
+        })
+    }
+
+    var jobType = xmSelect.render({
+        el: '#jobType',
+        language: 'zn',
+        data: [
+        ]
+    })
+
+
+    document.getElementById('jobType').onblur=function(){
+        var list = [];
+        //获取当前多选选中的值
+        var selectArr = jobType.getValue();
+        for (var i in selectArr){
+            list.push(selectArr[i].value);
+        }
+        $("#jobTypeStr").val(list);
+        console.log(list);
+    }
+</script>
+</body>
+</html>

+ 903 - 0
src/main/webapp/webpage/modules/workclientinfo/all/workClientInfoFormTwo.jsp

@@ -0,0 +1,903 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String param = request.getParameter("param");
+
+%>
+<html>
+<head>
+	<title>客户信息管理</title>
+	<meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <%--<style type="text/css">--%>
+        <%--.btn-file{--%>
+            <%--margin-top:8px;--%>
+        <%--}--%>
+        <%--.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {--%>
+            <%--background-color:#fff;--%>
+            <%--color: #110F0F;--%>
+        <%--}--%>
+        <%--.btn-default{--%>
+            <%--background-color:#fff;--%>
+            <%--color: #110F0F;--%>
+        <%--}--%>
+    <%--</style>--%>
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <style>
+        #companyType-error{
+            left:0;
+            top:40px;
+        }
+        #clientType-error{
+            left:0;
+            top:40px;
+        }
+        #companyIndustry-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+	<script type="text/javascript">
+		var validateForm;
+		var exitName = true;
+		function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+		  if(validateForm.form()){
+              var jobTypeStr = $("#jobTypeStr").val();
+              if (jobTypeStr == null || "" == jobTypeStr) {
+                  parent.layer.msg("请选择联系人类型!", {icon: 5});
+                  return false;
+              }
+              var tableObj = document.getElementById('contentTable').rows[1];
+              if (tableObj == null) {
+                  parent.layer.msg("请填写联系人信息!", {icon: 5});
+                  return false;
+              }
+              if(!exitName){
+                  return false;
+              }
+			  $("#inputForm").submit();
+			  return true;
+		  }else {
+              parent.layer.msg("信息未填写完整!", {icon: 5});
+          }
+
+		  return false;
+		}
+		$(document).ready(function() {
+            contentDetailTypeShow();
+            checkContentKeyUp('unitIntroduction',500);
+            $.validator.messages["orUnicode"] = true;
+            $.validator.methods["orUnicode"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z\-]*$/.test( value );
+            }
+            $.validator.messages["fax"] = true;
+            $.validator.methods["fax"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["telephone"] = true;
+            $.validator.methods["telephone"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["ourBank"] = true;
+            $.validator.methods["ourBank"] = function( value, element ) {
+                return this.optional( element ) || /^[\u4e00-\u9fa5]*$/.test( value );
+            }
+            $.validator.messages["taxId"] = true;
+            $.validator.methods["taxId"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z]*$/.test( value );
+            }
+
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的统一社会信用代码");
+
+			validateForm = $("#inputForm").validate({
+                rules:{
+                    orUnicode:{
+                        orUnicode:true
+                    },
+                    zipCode:{
+                        digits:true
+                    },
+                    email:{
+                        email:true
+                    },
+                    fax:{
+                        fax:true
+                    },
+                    telephone:{
+                        telephone:true
+                    },
+                    taxId:{
+                        taxId:true
+                    }
+				},
+                messages:{
+                    orUnicode:{
+                        orUnicode:"仅允许输入数字、大写拉丁字母、符号“-”"
+                    },
+                    zipCode:{
+                        required:"必须输入数字"
+                    },
+                    email:{
+                        email:"请输入合法的邮箱地址"
+                    },
+                    fax:{
+                        fax:"仅允许输入数字、符号“-”"
+                    },
+                    telephone:{
+                        telephone:"仅允许输入数字、符号“-”"
+                    },
+                    taxId:{
+                        taxId:"仅允许输入数字、大写拉丁字母"
+                    }
+                    // uscCode:{remote:"重复的统一社会信用代码"}
+                },
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+				errorContainer: "#messageBox",
+				errorPlacement: function(error, element) {
+					$("#messageBox").text("输入有误,请先更正。");
+					if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+						error.appendTo(element.parent().parent());
+					} else {
+						error.insertAfter(element);
+					}
+				}
+			});
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $('input[name="hasUscc"]').on('ifChecked', function(event){
+                disUscc(event.target.defaultValue);
+            });
+            disUscc($('input[name="hasUscc"]:checked').val());
+            if($("#uscCode").val()!=null&&$("#uscCode").val()!='') {
+                $("#inputForm").validate().element($("#uscCode"));
+            }
+            $("#name").on("change",function(){
+                var id = $("#id").val();
+                var name = $("#name").val();
+                var uscCode = $("#uscCode").val();
+                $.ajax({
+                    url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                    type:"post",
+                    data:{"id":id,
+                        "name":name,
+                        "uscCode":uscCode},
+                    success:function(data){
+                        if(data==="false"){
+                            exitName=false
+                            $("#ph").html("该客户已存在");
+                        }else {
+                            exitName=true
+                            $("#ph").html('');
+                        }
+                    }
+                });
+                }
+            )
+
+            /*新增代码传送统一社会信用代码*/
+            $("#uscCode").on("change",function(){
+                    var id = $("#id").val();
+                    var name = $("#name").val();
+                    var uscCode = $("#uscCode").val();
+                $.ajax({
+                    url:"${ctx}/workclientinfo/workClientInfo/checkClientUscCode",
+                    type:"post",
+                    data:{"id":id,
+                        "name":name,
+                        "uscCode":uscCode},
+                    success:function(data){
+
+                        if(data.code==="false"){
+                            exitName=false
+                             $("#uscPh").html("该客户已存在");
+                            console.log(data);
+                            alert("ssss");
+
+                        }else {
+                            exitName=true
+                            $("#uscPh").html('');
+                        }
+                    }
+                });
+                }
+            )
+           dismissDiv();
+
+        });
+
+		function testOurBank(value){
+		    if(!/^[\u4e00-\u9fa5]*$/.test( value )){
+                parent.layer.msg("开户银行必须输入汉字",{icon:6});
+            }
+        }
+
+        /**
+         * 只允许输入数字
+         * @param value
+         */
+        function testBankNumber(value){
+            if(!/^\d*$/.test( value )){
+                parent.layer.msg("开户帐号必须输入数字",{icon:6});
+            }
+        }
+		function addRow(list, idx, tpl, row){
+            var idx1 = $("#workClientBankList tr").length;
+		    if(list == '#workClientBankList'){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#workClientLinkmanList tr").length;
+            if(list == '#workClientLinkmanList'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+		}
+		function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+		function delRow(obj, prefix){
+			var id = $(prefix+"_id");
+			var delFlag = $(prefix+"_delFlag");
+			if (id.val() == ""){
+				$(obj).parent().parent().remove();
+			}else if(delFlag.val() == "0"){
+				delFlag.val("1");
+				$(obj).html("&divide;").attr("title", "撤回删除");
+				$(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+			}else if(delFlag.val() == "1"){
+				delFlag.val("0");
+				$(obj).html("&times;").attr("title", "删除");
+				$(obj).parent().parent().removeClass("error");
+			}
+
+		}
+        function urlRedict(file,attach){
+		    parent.layer.confirm('确定删除吗?', {
+                btn: ['确认', '取消'] //可以无限个按钮
+            }, function(index, layero){
+                var index1 = parent.layer.load(0, {shade: false});
+                $.post("${ctx}/workfullmanage/workFullManage/deleteFile",
+                    {"file":file,"attach":attach},
+                    function(result){
+                        var d = JSON.parse(result);
+                        if(d.str){
+                            location.reload();
+                            parent.layer.msg("删除成功!!!",{icon:6});
+                            parent.layer.close(index1);
+                            parent.layer.close(index);
+                        }
+                    });
+            }, function(index){
+                parent.layer.close(index)
+            });
+
+        }
+
+        function checkName() {
+            var id = $("#id").val();
+            var name = $("#name").val();
+            var uscCode = $("#uscCode").val();
+            $.ajax({
+                url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                type:"post",
+                data:{"id":id,
+                    "name":name,
+                    "uscCode":uscCode},
+                success:function(data){
+                    if(data=="false"){
+                        exitName=false
+                        $("#ph").html("该客户已存在");
+                    }else {
+                        exitName=true
+                        $("#ph").html('');
+                    }
+                }
+            });
+        }
+
+        function insertTitle(tValue){
+            var list = "${workClientInfo.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "5";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "workClientInfo";
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile" + divId).show();
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, size);
+            }
+        }
+
+        function disUscc(hasUscc) {
+            if("2"==hasUscc){
+                $(".companyType_uscCode").hide();
+                $('input[name="uscCode"]').val("");
+            }else {
+                $(".companyType_uscCode").show();
+            }
+        }
+
+        // 模糊查询下拉框
+        function fuzzyQuery(){
+            var keyword = $("#name").val();
+            if (keyword == null || keyword === "") {
+                return;
+            }
+            $.post(
+                "${ctx}/workclientinfo/workClientInfo/enterpriseSearchByName",
+                {"keyword": keyword},
+                function (result) {
+                    if (result == null) {
+                        return;
+                    }
+                    var json = eval(result.data.items);
+                    //如果精准查询,只有一条数据,则不显示模糊查询div,直接赋值
+                    if (json.length == 1) {
+                        var id = json[0].id;
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+                        return;
+                    }
+                    var html = "<ul>";
+                    for (var i = 0; i < json.length; i++) {
+                        html += "<li value=" + json[i].id + ">" + json[i].entname + "</li>";
+                    }
+                    html += "</ul>";
+                    $("#fuzzyQuerySelect").show().html(html);
+
+                    //鼠标移动到某行上改变颜色
+                    $("li").bind("mouseover", function () {
+                        $(this).css("background-color", "grey");
+                    });
+                    $("li").bind("mouseout", function () {
+                        $(this).css("background-color", "white");
+                    });
+                    //单击某行
+                    $("li").bind("click", function () {
+                        $("#fuzzyQuerySelect").hide();
+                        var id = $(this).val();
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+
+                    });
+                }, "json");
+        }
+
+
+	</script>
+
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <input type="hidden" value="${param.param}" id="param">
+        <form:form id="inputForm" modelAttribute="workClientInfo" enctype="multipart/form-data"
+                   onkeydown="if(event.keyCode==13)return false;" action="${ctx}/workclientinfo/workClientInfoAll/save"
+                   method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <input type="hidden" id="jobTypeStr" name="jobTypeStr" value="">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7" id="search">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户名称:&nbsp;&nbsp;</label>
+                    <div class="layui-input-block">
+                        <form:input path="name" htmlEscape="false" id="name" class="form-control required layui-input"/>
+                        <a onclick="fuzzyQuery()"  class="nav-btn nav-btn-add" style="margin-right: 0px;top:0px;right:1px;position: absolute;height:40px;line-height: 40px;">查询</a>
+                        <span id="ph" style="color:#cc5965"></span>
+                    </div>
+                    <div id="fuzzyQuerySelect"
+                         style="z-index:1;display:none;background-color:white; position: absolute; width:333px;left:120px; border: 1px solid gray;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>拥有统一社会信用代码:</label>
+                    <div class="layui-input-block">&nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" class="usccClass i-checks" path="hasUscc" value="1" label="是" checked="true" />
+                        &nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" class="usccClass i-checks" path="hasUscc" value="2" label="否" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7 companyType_uscCode">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="uscCode" htmlEscape="false" id="uscCode"   class="form-control required isUscCode layui-input"/>
+                        <input type="hidden" id="oldUscCode" value="${workClientInfo.uscCode}"/>
+                        <span id="uscPh" style="color:#cc5965"></span>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户性质:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyType" class="form-control simple-select required" id="companyType">
+                            <form:option value="" label="--请选择客户性质--"/>
+                            <form:options items="${fns:getMainDictList('company_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在行业:</label>
+                    <div class="layui-input-block">
+                        <form:select path="companyIndustry" id="companyIndustry" class="form-control simple-select required">
+                            <form:option value="" label="--请选择行业--"/>
+                            <form:options items="${fns:getMainDictList('company_industry')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="clientType" id="clientType" class="form-control simple-select required">
+                            <form:option value="" label="--请选择客户类型--"/>
+                            <form:options items="${fns:getMainDictList('client_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>代表方:</label>
+                    <div class="layui-input-block">
+                        <div id="jobType" class="xm-select-demo" tabindex="0" contenteditable="true"></div>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">法人代表:</label>
+                    <div class="layui-input-block">
+                        <form:input path="lawerPresint" id="lawerPresint" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">邮政编码:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zipCode" id="zipCode" htmlEscape="false" minlength="6" maxlength="6"
+                                    class="form-control digits layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">传真:</label>
+                    <div class="layui-input-block">
+                        <form:input path="fax"  id="fax" htmlEscape="false" class="form-control isTel layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>公司电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="telephone" id="telephone" htmlEscape="false" maxlength="20"
+                                    class="form-control isTel layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">公司网址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="companyUrl" id="companyUrl" htmlEscape="false" class="form-control isUrl layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在地区:</label>
+                    <div class="layui-input-block with-icon">
+                        <sys:treeselect id="area" name="area.id" value="${workClientInfo.area.id}" labelName="area.name"
+                                        labelValue="${workClientInfo.area.name}"
+                                        title="区域" url="/sys/area/treeData" cssClass="form-control required layui-input"
+                                        allowClear="true" notAllowSelectParent="false"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">注册地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="registerAddress" id="registerAddress" htmlEscape="false"
+                                    class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">详细地址:</label>
+                    <div class="layui-input-block">
+                        <form:input path="address" id="address" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label"><%--<span class="require-item">*</span>--%>开户行信息:</label>
+                    <div class="layui-input-block">
+                        <div class="layui-item nav-btns" style="padding-left:0px;">
+                            <a class="nav-btn nav-btn-add"
+                               onclick="addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+                               title="新增"><i class="fa fa-plus"></i> 新增</a>
+                        </div>
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th class="sort-column companyType"><%--<font color="red">*</font>--%>开户银行</th>
+                                <th width="400px;"><%--<font color="red">*</font>--%>开户账号</th>
+                                <th width="100px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="workClientBankList">
+
+                            </tbody>
+                        </table>
+                        <script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="workClientBankList{{idx}}">
+                                    <td class="hide">
+                                        <input id="workClientBankList{{idx}}_id" name="workClientBankList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="workClientBankList{{idx}}_delFlag" name="workClientBankList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="workClientBankList{{idx}}_ourBank" onblur="testOurBank(this.value)" name="workClientBankList[{{idx}}].ourBank" type="text" value="{{row.ourBank}}"    class="form-control required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="workClientBankList{{idx}}_bankNumber" onblur="testBankNumber(this.value)" name="workClientBankList[{{idx}}].bankNumber" type="text" value="{{row.bankNumber}}"  minlength="16" maxlength="19"  class="form-control required digits "/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientBankList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+                        </script>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">单位简介:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="unitIntroduction" htmlEscape="false" rows="4" maxlength="500"
+                                       onkeyup="checkContentKeyUp('unitIntroduction',500);" class="form-control "/>
+                    </div>
+                    <span id="contentMsg" style="float: right"></span>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>联系人信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a class="nav-btn nav-btn-add"
+                       onclick="addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl);workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;"
+                       title="新增"><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed can-edit">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="100px"><font color="red">*</font>联系人姓名</th>
+                            <th width="100px">部门</th>
+                            <th width="100px">职务</th>
+                            <th width="100px">QQ</th>
+                            <th width="100px">联系方式1</th>
+                            <th width="100px">联系方式2</th>
+                            <th width="150px">E-mail</th>
+                            <th width="100px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                            <tr>
+                                   <td class="hide">
+                                       <input id="workClientLinkmanList${status.index + 1}_id"
+                                              name="workClientLinkmanList[${status.index + 1}].id" type="hidden"
+                                              value="${workClientLinkman.id}"/>
+                                       <input id="workClientLinkmanList${status.index + 1}_delFlag"
+                                              name="workClientLinkmanList[${status.index + 1}].delFlag" type="hidden"
+                                              value="0" readonly/>
+                                   </td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_name"
+                                              name="workClientLinkmanList[${status.index + 1}].name" type="text"
+                                              value="${workClientLinkman.name}" class="form-control required"/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_office"
+                                              name="workClientLinkmanList[${status.index + 1}].office" type="text"
+                                              value="${workClientLinkman.office}" class="form-control "/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_position"
+                                              name="workClientLinkmanList[${status.index + 1}].position" type="text"
+                                              value="${workClientLinkman.position}" class="form-control "/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_qq"
+                                              name="workClientLinkmanList[${status.index + 1}].qq"
+                                              type="text" value="${workClientLinkman.qq}" class="form-control digits"/>
+                                   </td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_linkMobile"
+                                              name="workClientLinkmanList[${status.index + 1}].linkMobile" type="text"
+                                              value="${workClientLinkman.linkMobile}" class="form-control isPhone"/></td>
+                                   <td><input id="workClientLinkmanList${status.index + 1}_linkPhone"
+                                              name="workClientLinkmanList[${status.index + 1}].linkPhone" type="text"
+                                              value="${workClientLinkman.linkPhone}" class="form-control isTel"/></td>
+                                   <td><input id="workClientLinkmanList{{idx}}_email"
+                                              name="workClientLinkmanList[${status.index + 1}].email" type="text"
+                                              value="${workClientLinkman.email}"
+                                              class="form-control email"/></td>
+                                   <td class="text-center op-td">
+                                    <span class="op-btn op-btn-delete"
+                                          onclick="delRow(this, '#workClientLinkmanList${status.index + 1}')"
+                                          title="删除"><i
+                                            class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>
+                                   </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                    <script type="text/template" id="workClientLinkmanTpl">//<!--
+            <tr id="workClientLinkmanList{{idx}}">
+                <td class="hide">
+                    <input id="workClientLinkmanList{{idx}}_id" name="workClientLinkmanList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                    <input id="workClientLinkmanList{{idx}}_delFlag" name="workClientLinkmanList[{{idx}}].delFlag" type="hidden" value="0"/>
+                </td>
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_name" name="workClientLinkmanList[{{idx}}].name" type="text" value="{{row.name}}"    class="form-control required"/>
+                </td>
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_office" name="workClientLinkmanList[{{idx}}].office" type="text" value="{{row.office}}"    class="form-control "/>
+                </td>
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_position" name="workClientLinkmanList[{{idx}}].position" type="text" value="{{row.position}}"    class="form-control "/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_qq" name="workClientLinkmanList[{{idx}}].qq" type="text" value="{{row.qq}}"    class="form-control digits"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_linkPhone" name="workClientLinkmanList[{{idx}}].linkPhone" type="text" value="{{row.linkPhone}}"    class="form-control isTel"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_linkMobile" name="workClientLinkmanList[{{idx}}].linkMobile" type="text" value="{{row.linkMobile}}"    class="form-control isPhone"/>
+                </td>
+
+
+                <td>
+                    <input id="workClientLinkmanList{{idx}}_email" name="workClientLinkmanList[{{idx}}].email" type="text" value="{{row.email}}"    class="form-control email"/>
+                </td>
+
+                <td class="text-center op-td" >
+                    {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#workClientLinkmanList{{idx}}')" title="删除"><i class="glyphicon glyphicon-remove"></i>&nbsp;删除</span>{{/delBtn}}
+                </td>
+            </tr>//-->
+                    </script>
+                    <script type="text/javascript">
+                        var workClientLinkmanRowIdx = 0,
+                            workClientLinkmanTpl = $("#workClientLinkmanTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        var workClientBankRowIdx = 0,
+                            workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+                        $(document).ready(function () {
+                            var data = ${fns:toJson(workClientInfo.workClientLinkmanList)};
+                            for (var i = 0; i < data.length; i++) {
+                                addRow('#workClientLinkmanList', workClientLinkmanRowIdx, workClientLinkmanTpl, data[i]);
+                                workClientLinkmanRowIdx = workClientLinkmanRowIdx + 1;
+                            }
+                            var dataBank = ${fns:toJson(workClientInfo.workClientBankList)};
+                            for (var i = 0; i < dataBank.length; i++) {
+                                addRow('#workClientBankList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+                                workClientBankRowIdx = workClientBankRowIdx + 1;
+                            }
+                        });
+
+                    </script>
+                </div>
+            </div>
+
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment"></span>
+                    <b><span id="baifenbi_attachment"></span></b>
+                    <div class="progress">
+                            <%--进度条--%>
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple"
+                       style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workClientInfo.workAttachments}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                        <c:choose>
+                                            <c:when test="${workClientInfo.uploadMode == 2}">
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                        <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                                </td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                                </td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box">
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');"
+                                           class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)"
+                                               onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+                                               class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    function contentDetailTypeShow() {
+        $.ajax({
+            type:'post',
+            url:'${ctx}/workclientinfo/workClientInfo/getJobType',
+            data:{
+                "type":2
+            },
+            success:function(data){
+                if(data.success) {
+                var data = data.body.list;
+                var newDataList = data;
+                var showList = [];
+                    $.ajax({
+                        type:'post',
+                        url:'${ctx}/workclientinfo/workClientInfo/getJobTypeById',
+                        data:{
+                            "id":$("#id").val()
+                        },
+                        success:function(dataListById){
+                            if(dataListById.success) {
+
+                                var showDataList = dataListById.body.list;
+                                var lists=[];
+                                for (i in newDataList) {
+                                    for (j in showDataList) {
+                                        if (newDataList[i].value == showDataList[j].value) {
+                                            var newData = {
+                                                "name": newDataList[i].name,
+                                                "value": newDataList[i].value,
+                                                "selected": true
+                                            }
+                                            lists.push(newDataList[i].value);
+                                            showList.push(newData);
+                                            data.splice(i,1,newData);
+                                        }
+                                    }
+                                }
+                                $("#jobTypeStr").val(lists);
+                                xmSelect.render({
+                                    el: '#jobType',
+                                    language: 'zn',
+                                    data:data
+                                })
+                            }
+                        }
+                    })
+                }
+            }
+        })
+    }
+
+    var jobType = xmSelect.render({
+        el: '#jobType',
+        language: 'zn',
+        data: [
+        ]
+    })
+
+
+    document.getElementById('jobType').onblur=function(){
+        var list = [];
+        //获取当前多选选中的值
+        var selectArr = jobType.getValue();
+        for (var i in selectArr){
+            list.push(selectArr[i].value);
+        }
+        $("#jobTypeStr").val(list);
+        console.log(list);
+    }
+</script>
+</body>
+</html>

+ 774 - 0
src/main/webapp/webpage/modules/workclientinfo/all/workClientInfoFormType.jsp

@@ -0,0 +1,774 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<%
+    String param = request.getParameter("param");
+
+%>
+<html>
+<head>
+    <title>客户信息管理</title>
+    <meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+
+    <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+    <style>
+        #companyType-error{
+            left:0;
+            top:40px;
+        }
+        #clientType-error{
+            left:0;
+            top:40px;
+        }
+        #companyIndustry-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+    <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+    <script type="text/javascript">
+        var validateForm;
+        var exitName = true;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                var jobTypeStr = $("#jobTypeStr").val();
+                if (jobTypeStr == null || "" == jobTypeStr) {
+                    parent.layer.msg("请选择联系人类型!", {icon: 5});
+                    return false;
+                }
+                var tableObj = document.getElementById('contentTable').rows[1];
+                if (tableObj == null) {
+                    parent.layer.msg("请填写联系人信息!", {icon: 5});
+                    return false;
+                }
+                if(!exitName){
+                    return false;
+                }
+                $("#inputForm").submit();
+                return true;
+            }else {
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            contentDetailTypeShow();
+            checkContentKeyUp('unitIntroduction',500);
+            $.validator.messages["orUnicode"] = true;
+            $.validator.methods["orUnicode"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z\-]*$/.test( value );
+            }
+            $.validator.messages["fax"] = true;
+            $.validator.methods["fax"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["telephone"] = true;
+            $.validator.methods["telephone"] = function( value, element ) {
+                return this.optional( element ) || /^[0-9\-]*$/.test( value );
+            }
+            $.validator.messages["ourBank"] = true;
+            $.validator.methods["ourBank"] = function( value, element ) {
+                return this.optional( element ) || /^[\u4e00-\u9fa5]*$/.test( value );
+            }
+            $.validator.messages["taxId"] = true;
+            $.validator.methods["taxId"] = function( value, element ) {
+                return this.optional( element ) || /^[a-z0-9A-Z]*$/.test( value );
+            }
+
+            jQuery.validator.addMethod("isUscCode", function(value, element) {
+                if (this.optional(element)){
+                    return true;
+                }
+                var uscCode = /^((\w{15})|(\w{18})|(\w{20}))$/;
+                return uscCode.test(value);
+            }, "请填写正确的统一社会信用代码");
+
+            validateForm = $("#inputForm").validate({
+                rules:{
+                    orUnicode:{
+                        orUnicode:true
+                    },
+                    zipCode:{
+                        digits:true
+                    },
+                    email:{
+                        email:true
+                    },
+                    fax:{
+                        fax:true
+                    },
+                    telephone:{
+                        telephone:true
+                    },
+                    taxId:{
+                        taxId:true
+                    }
+                    <%--uscCode:{remote: "${ctx}/workclientinfo/workClientInfo/checkUscCode?oldUscCode=" + encodeURIComponent($("#oldUscCode").val())}--%>
+                },
+                messages:{
+                    orUnicode:{
+                        orUnicode:"仅允许输入数字、大写拉丁字母、符号“-”"
+                    },
+                    zipCode:{
+                        required:"必须输入数字"
+                    },
+                    email:{
+                        email:"请输入合法的邮箱地址"
+                    },
+                    fax:{
+                        fax:"仅允许输入数字、符号“-”"
+                    },
+                    telephone:{
+                        telephone:"仅允许输入数字、符号“-”"
+                    },
+                    taxId:{
+                        taxId:"仅允许输入数字、大写拉丁字母"
+                    }
+                    // uscCode:{remote:"重复的统一社会信用代码"}
+                },
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $('input[name="hasUscc"]').on('ifChecked', function(event){
+                disUscc(event.target.defaultValue);
+            });
+            disUscc($('input[name="hasUscc"]:checked').val());
+            if($("#uscCode").val()!=null&&$("#uscCode").val()!='') {
+                $("#inputForm").validate().element($("#uscCode"));
+            }
+            // $("#name").blur(function(){
+            //     checkName();
+            // })
+            $("#name").on("change",function(){
+                    var id = $("#id").val();
+                    var name = $("#name").val();
+                    var uscCode = $("#uscCode").val();
+                    $.ajax({
+                        url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                        type:"post",
+                        data:{"id":id,
+                            "name":name,
+                            "uscCode":uscCode},
+                        success:function(data){
+                            if(data==="false"){
+                                exitName=false
+                                $("#ph").html("该客户已存在");
+                            }else {
+                                exitName=true
+                                $("#ph").html('');
+                            }
+                        }
+                    });
+                }
+            )
+            <%--var arr="${workClientInfo.clientType}".split(',');--%>
+            // $('#clientType').selectpicker('val',arr);
+
+            /*新增代码传送统一社会信用代码*/
+            /*$("#uscCode").on("change",function(){
+                    var id = $("#id").val();
+                    var name = $("#name").val();
+                    var uscCode = $("#uscCode").val();
+                    $.ajax({
+                        url:"${ctx}/workclientinfo/workClientInfo/checkClientUscCode",
+                        type:"post",
+                        data:{"id":id,
+                            "name":name,
+                            "uscCode":uscCode},
+                        success:function(data){
+                            console.log(data);
+                            if(data.code=="false"){
+                                exitName=false
+                                $("#uscPh").html("该客户已存在");
+                            }else {
+                                exitName=true
+                                $("#uscPh").html('');
+                            }
+                        }
+                    });
+                }
+            )*/
+            dismissDiv();
+
+        });
+
+        function testOurBank(value){
+            if(!/^[\u4e00-\u9fa5]*$/.test( value )){
+                parent.layer.msg("开户银行必须输入汉字",{icon:6});
+            }
+        }
+
+        /**
+         * 只允许输入数字
+         * @param value
+         */
+        function testBankNumber(value){
+            if(!/^\d*$/.test( value )){
+                parent.layer.msg("开户帐号必须输入数字",{icon:6});
+            }
+        }
+        function addRow(list, idx, tpl, row){
+            var idx1 = $("#workClientBankList tr").length;
+            if(list == '#workClientBankList'){
+                bornTemplete(list, idx, tpl, row, idx1);
+            }
+            var idx2 = $("#workClientLinkmanList tr").length;
+            if(list == '#workClientLinkmanList'){
+                bornTemplete(list, idx, tpl, row, idx2);
+            }
+        }
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+        function delRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            if (id.val() == ""){
+                $(obj).parent().parent().remove();
+            }else if(delFlag.val() == "0"){
+                delFlag.val("1");
+                $(obj).html("&divide;").attr("title", "撤回删除");
+                $(obj).parent().parent().addClass("error");
+                $(obj).parent().parent().addClass("hide");
+            }else if(delFlag.val() == "1"){
+                delFlag.val("0");
+                $(obj).html("&times;").attr("title", "删除");
+                $(obj).parent().parent().removeClass("error");
+            }
+
+        }
+        function urlRedict(file,attach){
+            parent.layer.confirm('确定删除吗?', {
+                btn: ['确认', '取消'] //可以无限个按钮
+            }, function(index, layero){
+                var index1 = parent.layer.load(0, {shade: false});
+                $.post("${ctx}/workfullmanage/workFullManage/deleteFile",
+                    {"file":file,"attach":attach},
+                    function(result){
+                        var d = JSON.parse(result);
+                        if(d.str){
+                            location.reload();
+                            parent.layer.msg("删除成功!!!",{icon:6});
+                            parent.layer.close(index1);
+                            parent.layer.close(index);
+                        }
+                    });
+            }, function(index){
+                parent.layer.close(index)
+            });
+
+        }
+
+        function checkName() {
+            var id = $("#id").val();
+            var name = $("#name").val();
+            var uscCode = $("#uscCode").val();
+            $.ajax({
+                url:"${ctx}/workclientinfo/workClientInfo/checkClient",
+                type:"post",
+                data:{"id":id,
+                    "name":name,
+                    "uscCode":uscCode},
+                success:function(data){
+
+                    if(data=="false"){
+                        exitName=false
+                        $("#ph").html("该客户已存在");
+                    }else {
+                        exitName=true
+                        $("#ph").html('');
+                    }
+                }
+            });
+        }
+
+        function insertTitle(tValue){
+            var list = "${workClientInfo.workAttachments}";
+            var size = (list.split('url')).length-1;
+            var files = $("#attachment_file")[0].files;
+            for(var i = 0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "5";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "workClientInfo";
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                $("#addFile" + divId).show();
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, size);
+            }
+        }
+
+        function disUscc(hasUscc) {
+            if("2"==hasUscc){
+                $(".companyType_uscCode").hide();
+                /*$('input[name="uscCode"]').attr("class","form-control");*/
+                $('input[name="uscCode"]').val("");
+            }else {
+                $(".companyType_uscCode").show();
+                /*$('input[name="uscCode"]').attr("class","form-control required isUscCode layui-input");*/
+            }
+        }
+
+        // 模糊查询下拉框
+        function fuzzyQuery(){
+            var keyword = $("#name").val();
+            if (keyword == null || keyword === "") {
+                return;
+            }
+            $.post(
+                "${ctx}/workclientinfo/workClientInfo/enterpriseSearchByName",
+                {"keyword": keyword},
+                function (result) {
+                    if (result == null) {
+                        return;
+                    }
+                    var json = eval(result.data.items);
+                    //如果精准查询,只有一条数据,则不显示模糊查询div,直接赋值
+                    if (json.length == 1) {
+                        var id = json[0].id;
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+                        return;
+                    }
+                    var html = "<ul>";
+                    for (var i = 0; i < json.length; i++) {
+                        html += "<li value=" + json[i].id + ">" + json[i].entname + "</li>";
+                    }
+                    html += "</ul>";
+                    $("#fuzzyQuerySelect").show().html(html);
+
+                    //鼠标移动到某行上改变颜色
+                    $("li").bind("mouseover", function () {
+                        $(this).css("background-color", "grey");
+                    });
+                    $("li").bind("mouseout", function () {
+                        $(this).css("background-color", "white");
+                    });
+                    //单击某行
+                    $("li").bind("click", function () {
+                        $("#fuzzyQuerySelect").hide();
+                        var id = $(this).val();
+                        $.getJSON(
+                            "${ctx}/workclientinfo/workClientInfo/enterpriseTicketInfo",
+                            {"id": id},
+                            function (data) {
+                                $("#name").val(data.ENTNAME).change();
+                                $("#uscCode").val(data.TAXNUMBER);
+                                $("#registerAddress").val(data.OPLOC);
+                            }
+                        );
+
+                    });
+                }, "json");
+        }
+
+
+    </script>
+
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <input type="hidden" value="${param.param}" id="param">
+        <form:form id="inputForm" modelAttribute="workClientInfo" enctype="multipart/form-data"
+                   onkeydown="if(event.keyCode==13)return false;" action="${ctx}/workclientinfo/workClientInfoAll/save"
+                   method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <input type="hidden" id="jobTypeStr" name="jobTypeStr" value="">
+            <input type="hidden" id="linkType" name="jobTypeStr" value="${linkType}">
+            <div class="form-group layui-row first">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>拥有统一社会信用代码:</label>
+                    <div class="layui-input-block">&nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" disabled="true" class="usccClass i-checks" path="hasUscc" value="1" label="是" checked="true" />
+                        &nbsp;&nbsp;
+                        <form:radiobutton id="hasUscc" disabled="true" class="usccClass i-checks" path="hasUscc" value="2" label="否" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>客户名称:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>客户编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="number"  id="number" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>统一社会信用代码:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.uscCode}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在行业:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>所在地区:</label>
+                    <div class="layui-input-block with-icon">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.area.name}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">法人代表:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.lawerPresint}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">邮政编码:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.zipCode}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">传真:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.fax}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">客户类型:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<c:set value="${fn:split(workClientInfo.clientType, ',') }" var="clientTypes" /><c:forEach items="${clientTypes}" var="cType" varStatus="status">${fns:getMainDictLabel(cType, 'client_type', '')}<c:if test="${!status.last}">, </c:if></c:forEach>"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>公司电话:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${workClientInfo.telephone}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label">公司网址:</label>
+                    <div class="layui-input-block">
+                        <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${workClientInfo.companyUrl}"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw7">
+                    <label class="layui-form-label"><span class="require-item">*</span>代表方:</label>
+                    <div class="layui-input-block">
+                        <div id="jobType" class="xm-select-demo" tabindex="0" contenteditable="true"></div>
+                    </div>
+                </div>
+
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">注册地址:</label>
+                    <div class="layui-input-block">
+                        <form:input readonly="true" path="registerAddress" id="registerAddress" htmlEscape="false"
+                                    class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label">详细地址:</label>
+                    <div class="layui-input-block">
+                        <form:input readonly="true" path="address" id="address" htmlEscape="false" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw7">
+                    <label class="layui-form-label"><%--<span class="require-item">*</span>--%>开户行信息:</label>
+                    <div class="layui-input-block">
+
+                        <table id="bankinfo" class="table table-bordered table-condensed details">
+                            <thead>
+                            <tr>
+                                <th width="80px">序号</th>
+                                <th ><%--<font color="red">*</font>--%>开户银行</th>
+                                <th width="400px;"><%--<font color="red">*</font>--%>开户账号</th>
+
+                            </tr>
+                            </thead>
+                            <tbody id="workClientBankList">
+                            <c:forEach items="${workClientInfo.workClientBankList}" var="workClientBank" varStatus="status">
+                                <tr>
+                                    <td>${status.index + 1}</td>
+                                    <td>${workClientBank.ourBank}</td>
+                                    <td>${workClientBank.bankNumber}</td>
+                                </tr>
+                            </c:forEach>
+                            <c:if test="${bankSize == 0}">
+                                <tr>
+                                    <td colspan="3">暂无数据</td>
+                                </tr>
+                            </c:if>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 with-textarea lw7">
+                    <label class="layui-form-label">单位简介:</label>
+                    <div class="layui-input-block">
+                        <textarea htmlEscape="false" rows="4" readonly="true" maxlength="1000" class="form-control" >${workClientInfo.unitIntroduction}</textarea>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>联系人信息</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container" >
+                    <table id="contentTable" class="table table-bordered table-condensed no-bottom-margin details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th width="150px"><font color="red">*</font>联系人姓名</th>
+                            <th >部门</th>
+                            <th width="150px">职务</th>
+                            <th width="150px">QQ</th>
+                            <th width="150px">联系方式1</th>
+                            <th width="150px">联系方式2</th>
+                            <th width="150px">E-mail</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workClientLinkmanList">
+                        <c:forEach items="${workClientInfo.workClientLinkmanList}" var="workClientLinkman" varStatus="status">
+                            <tr>
+                                <td class="hide">${status.index + 1}</td>
+                                <td >${workClientLinkman.name}</td>
+                                <td >${workClientLinkman.office}</td>
+                                <td >${workClientLinkman.position}</td>
+                                <td >${workClientLinkman.qq}</td>
+                                <td >${workClientLinkman.linkPhone}</td>
+                                <td >${workClientLinkman.linkMobile}</td>
+                                <td >${workClientLinkman.email}</td>
+                            </tr>
+                        </c:forEach>
+                        <c:if test="${linkManSize == 0}">
+                            <tr>
+                                <td colspan="8">暂无数据</td>
+                            </tr>
+                        </c:if>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment"></span>
+                    <b><span id="baifenbi_attachment"></span></b>
+                    <div class="progress">
+                            <%--进度条--%>
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple"
+                       style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                                <%-- <th>序号</th>--%>
+                            <th>文件</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${workClientInfo.workAttachments}" var="workClientAttachment"
+                                   varStatus="status">
+                            <tr>
+                                    <%-- <td>${status.index + 1}</td>--%>
+                                        <c:choose>
+                                            <c:when test="${workClientInfo.uploadMode == 2}">
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                                   or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                        <td><img src="${workClientAttachment.temporaryUrl}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.temporaryUrl}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.temporaryUrl}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:when>
+                                            <c:otherwise>
+                                                <c:choose>
+                                                    <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+                                             or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+                                                        <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <c:choose>
+                                                            <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+                                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+                                                                </td>
+                                                            </c:when>
+                                                            <c:otherwise>
+                                                                <td><a class="attention-info" href="javascript:void(0)"
+                                                                       onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+                                                                </td>
+                                                            </c:otherwise>
+                                                        </c:choose>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </c:otherwise>
+                                        </c:choose>
+                                <td>${workClientAttachment.createBy.name}</td>
+                                <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+                                <td class="op-td">
+                                    <div class="op-btn-box">
+                                        <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workClientAttachment.url}');"
+                                           class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+                                            <a href="javascript:void(0)"
+                                               onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')"
+                                               class="op-btn op-btn-delete"><i class="fa fa-trash"></i>&nbsp;删除</a>
+                                        </c:if>
+                                    </div>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    function contentDetailTypeShow() {
+        $.ajax({
+            type:'post',
+            url:'${ctx}/workclientinfo/workClientInfo/getJobType',
+            data:{
+                "type":2
+            },
+            success:function(data){
+                if(data.success) {
+                    var data = data.body.list;
+                    var newDataList = data;
+                    var showList = [];
+                    $.ajax({
+                        type:'post',
+                        url:'${ctx}/workclientinfo/workClientInfo/getJobTypeById',
+                        data:{
+                            "id":$("#id").val()
+                        },
+                        success:function(dataListById){
+                            if(dataListById.success) {
+                                var showDataList = dataListById.body.list;
+                                var linkType = $("#linkType").val();
+                                var li=[];
+                                for (i in newDataList) {
+                                    for (j in showDataList) {
+                                        if (newDataList[i].value == showDataList[j].value || newDataList[i].value == linkType) {
+                                            var newData = {
+                                                "name": newDataList[i].name,
+                                                "value": newDataList[i].value,
+                                                "selected": true
+                                            }
+                                            li.push(newDataList[i].value);
+
+                                            showList.push(newData);
+                                            data.splice(i,1,newData);
+                                        }
+                                    }
+                                }
+                                $("#jobTypeStr").val(li);
+                                for (i in data) {
+                                    data[i].disabled="disabled";
+                                }
+                                xmSelect.render({
+                                    el: '#jobType',
+                                    language: 'zn',
+                                    data:data
+                                })
+                            }
+                        }
+                    })
+                }
+            }
+        })
+    }
+
+    var jobType = xmSelect.render({
+        el: '#jobType',
+        language: 'zn',
+        data: [
+        ]
+    })
+
+
+    document.getElementById('jobType').onblur=function(){
+        var list = [];
+        //获取当前多选选中的值
+        var selectArr = jobType.getValue();
+        for (var i in selectArr){
+            list.push(selectArr[i].value);
+        }
+        $("#jobTypeStr").val(list);
+        console.log(list);
+    }
+</script>
+</body>
+</html>

+ 345 - 0
src/main/webapp/webpage/modules/workclientinfo/all/workClientInfoList.jsp

@@ -0,0 +1,345 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ page isELIgnored="false"%>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>客户管理管理</title>
+	<meta name="decorator" content="default"/>
+	<style>
+		.layui-layer-btn1:hover{
+			color: #c2c2c2;
+		}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function() {
+            $("#cus_name").show();
+            $("#cus_name").siblings().hide();
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow1);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+, trigger: 'click'
+            });
+		});
+        function switchInput(obj){
+            $("#"+obj).show();
+            $("#"+obj).siblings().hide();
+        }
+        //打开对话框(查看)
+        function openDialogNow(title,url,width,height){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['关闭'],
+                cancel: function(index){
+                }
+            });
+        }
+
+
+        //打开对话框(查看)
+        function deleteFun(url){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+			layer.confirm('确定要删除该客户信息吗?', {
+				title: "删除",
+				btn: ['确定','关闭'] //可以无限个按钮
+			},function(index, layero){
+				$.ajax({
+					type: 'post',
+					url:url,
+					dataType: "json",
+					cache: false,
+					processData: false,
+					contentType: false,
+				}).success(function (result) {
+					if(result.result == "1"){
+						layer.close(index);
+						top.layer.msg(result.msg, {icon: 1});
+						window.location.reload();
+					}else{
+						layer.close(index);
+						top.layer.msg(result.msg, {icon: 2});
+					}
+				});
+			}, function(index){
+				layer.close(index);
+			});
+		}
+
+		function cBlur(obj) {
+			var id = $("#createId").val();
+			if(undefined != obj.value && null != obj.value && '' != obj.value){
+				$.ajax({
+					url:'${ctx}/sys/user/getUserByName?name='+obj.value,
+					type:"post",
+					success:function(data){
+						var user = data.body.data;
+						if(undefined == user || null == user || '' == user){
+							$("#createId").val("");
+						}else{
+							if(data.body.data.id != id){
+								if(undefined != id && null != id && '' != id){
+									$("#createId").val("");
+								}
+							}
+						}
+					}
+				});
+			}else{
+				$("#createId").val("");
+			}
+
+		}
+	</script>
+</head>
+<body class="gray-bg">
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="workClientInfo" action="${ctx}/workclientinfo/workClientInfoAll/list" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<div class="commonQuery lw7">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">客户名称:</label>
+							<div class="layui-input-block">
+								<form:input path="name" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+                        <div class="layui-item query athird">
+                            <label class="layui-form-label">地区:</label>
+                            <div class="layui-input-block with-icon">
+                                <sys:treeselect id="area" name="area.id" value="${workClientInfo.area.id}" labelName="area.name" labelValue="${workClientInfo.area.name}"
+                                                title="区域" url="/sys/area/treeData" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="false"/>
+                            </div>
+                        </div>
+
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<div class="layui-btn-group search-spacing">
+									<button id="searchQuery" class="layui-btn layui-btn-sm layui-bg-blue" onclick="search()">查询</button>
+									<button id="searchReset" class="layui-btn layui-btn-sm " onclick="resetSearch()">重置</button>
+								</div>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw7">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">创建时间:</label>
+							<div class="layui-input-block">
+								<input id="beginDate" placeholder="开始时间" name="beginDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workClientInfo.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${workClientInfo.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
+
+						<div class="layui-item query athird">
+							<label class="layui-form-label">客户性质:</label>
+							<div class="layui-input-block">
+								<form:select path="companyType"  class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getMainDictList('company_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">客户行业:</label>
+							<div class="layui-input-block">
+                                <form:select path="companyIndustry" class="form-control layui-input">
+                                    <form:option value="" label=""/>
+                                    <form:options items="${fns:getMainDictList('company_industry')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                </form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">客户类型:</label>
+							<div class="layui-input-block">
+                                <form:select path="clientType" class="form-control layui-input">
+                                    <form:option value="" label=""/>
+                               		<form:options items="${fns:getMainDictList('client_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                                </form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">统一社会信用代码:</label>
+							<div class="layui-input-block">
+                                <form:input path="uscCode" htmlEscape="false"  class="form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">创建人:</label>
+							<div class="layui-input-block  with-icon">
+								<sys:inquireselectUserNotReadolny id="create" name="createId" value="${createId}" labelName="createNameStr" labelValue="${createName}"
+													  title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+							</div>
+						</div>
+						<div class="layui-item query athird">
+							<label class="layui-form-label">代表方:</label>
+							<div class="layui-input-block">
+								<form:select path="jobTypeShow" class="form-control layui-input">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getMainDictList('job_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+
+		<div class="full-width fl">
+			<div class="contentShadow layui-form contentDetails">
+				<div class="nav-btns">
+					<div class="layui-btn-group">
+						<shiro:hasPermission name="workclientinfo:workClientInfoAll:add">
+							<table:addRow url="${ctx}/workclientinfo/workClientInfoAll/form" title="客户管理"></table:addRow><!-- 增加按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="workclientinfo:workClientInfoAll:import">
+							<table:importExcel url="${ctx}/workclientinfo/workClientInfoAll/import"></table:importExcel><!-- 导入按钮 -->
+						</shiro:hasPermission>
+
+						<shiro:hasPermission name="workclientinfo:workClientInfoAll:export">
+							<table:exportExcel url="${ctx}/workclientinfo/workClientInfoAll/export"></table:exportExcel><!-- 导出按钮 -->
+						</shiro:hasPermission>
+						<shiro:hasPermission name="workclientinfo:workClientInfoAll:import">
+							<table:importInfoErr url="${ctx}/workclientinfo/workClientInfoAll/importInfoErr" title="导入日志"></table:importInfoErr><!-- 导出按钮 -->
+						</shiro:hasPermission>
+						<button class="layui-btn layui-btn-sm" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"> 刷新</button>
+					</div>
+					<div style="clear: both;"></div>
+				</div>
+				<table class="oa-table layui-table" id="contentTable"></table>
+
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+    layui.use('table', function(){
+        layui.table.render({
+            limit:${ page.pageSize }
+            ,elem: '#contentTable'
+            ,page: false
+            ,cols: [[
+				{field:'index',align:'center', title: '序号',width:40}
+				,{field:'clientName',align:'center', title: '客户名称',minWidth:200,templet:function(d){
+                        var xml = "<a class=\"attention-info\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看客户信息', '${ctx}/workclientinfo/workClientInfo/detail?id=" + d.id + "&wlId=" + d.linkman + "','95%','95%')\">" +
+                            "<span title=" + d.clientName + ">" + d.clientName.substr(0,40) + "</span></a>";
+                        return xml;
+                    }}
+                ,{field:'jobTypeStr',align:'center', title: '代表方',width:100,templet:function(d){
+						return "<span title='"+ d.jobTypeStr +"'>" + d.jobTypeStr + "</span>";
+					}}
+                ,{field:'clientProperty',align:'center', title: '客户性质',width:100}
+                ,{field:'trade',align:'center', title: '客户行业', width:80}
+                ,{field:'area', align:'center',title: '所在地区',width:80}
+                ,{field:'clientType', align:'center',title: '客户类型',width:100,templet:function(d){
+                        return "<span title='"+ d.clientType +"'>" + d.clientType + "</span>";
+                    }}
+                ,{field:'code', align:'center',title: '统一社会信用代码',width:160,templet:function(d){
+                        return "<span title='"+ d.code +"'>" + d.code + "</span>";
+                    }}
+                ,{field:'userName',align:'center', title: '创建人', width:80}
+                ,{field:'createDate',align:'center', title: '创建时间', width:80}
+                ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+                        ////对操作进行初始化
+                        var xml = "<div class=\"layui-btn-group\">";
+
+                        if(d.canedit != undefined && d.canedit == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"openDialog('修改客户信息', '${ctx}/workclientinfo/workClientInfoAll/form?id=" + d.id + "&param=1','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-green\" > 修改</a>"
+
+                        if(d.candelete != undefined && d.candelete == "1")
+                            xml +="<a href=\"javascript:void(0)\" onclick=\"deleteFun('${ctx}/workclientinfo/workClientInfoAll/delete?id=" + d.id + "')\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
+                       	xml+="</div>"
+                        return xml;
+                    }}
+            ]]
+            ,data: [
+                <c:if test="${ not empty page.list}">
+                <c:forEach items="${page.list}" var="workClientInfo" varStatus="index">
+                <c:if test="${index.index != 0}">,</c:if>
+                {
+                    "index":"${index.index+1}"
+                    ,"id":"${workClientInfo.id}"
+                    ,"number":"${workClientInfo.number}"
+					,"linkman":"${workClientInfo.workClientLinkman.id}"
+                    ,"clientName":"${workClientInfo.name}"
+                    ,"userName":"${workClientInfo.userName}"
+                    ,"clientProperty":"${fns:getMainDictLabel(workClientInfo.companyType, 'company_type', '')}"
+					,"trade":"${fns:getMainDictLabel(workClientInfo.companyIndustry, 'company_industry', '')}"
+                    ,"area":"${workClientInfo.area.name}"
+                    ,"clientType":"${fns:getMainDictLabels(workClientInfo.clientType,',','client_type', '')}"
+                    ,"code":"${workClientInfo.uscCode}"
+                    ,"jobTypeStr":"${workClientInfo.jobTypeStr}"
+                    ,"createDate":"<fmt:formatDate value="${workClientInfo.createDate}" pattern="yyyy-MM-dd"/>"
+                    <c:if test="${flag == '1' or fns:getUser().id == workClientInfo.createBy.id}">
+                    <shiro:hasPermission name="workclientinfo:workClientInfoAll:edit">,"canedit":"1"</shiro:hasPermission>
+					<shiro:hasPermission name="workclientinfo:workClientInfoAll:del">,"candelete":"1"</shiro:hasPermission>
+                	</c:if>
+                }
+                </c:forEach>
+                </c:if>
+            ]
+        });
+
+    })
+
+    resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
+    $("a").on("click",addLinkVisied);
+</script>
+
+<script type="text/javascript">
+    resizeListWindow1();
+    $(window).resize(function(){
+        resizeListWindow1();
+    });
+</script>
+</body>
+
+</html>
+

+ 1 - 1
src/main/webapp/webpage/modules/workclientinfo/workClientInfoList.jsp

@@ -170,7 +170,7 @@
 						</div>
 						<div style="    clear:both;"></div>
 					</div>
-					<div id="moresees" style="clear:both;display:none;" class="lw14">
+					<div id="moresees" style="clear:both;display:none;" class="lw7">
 						<div class="layui-item query athird">
 							<label class="layui-form-label">创建时间:</label>
 							<div class="layui-input-block">