Browse Source

Merge branch 'fearure-inuiry-message-hyy-20180502' into dev-mysql

# Conflicts:
#	src/main/java/com/uas/platform/b2c/common/message/model/MessageModel.java
#	src/main/resources/dev/message.properties
#	src/main/resources/prod/message.properties
#	src/main/resources/test/message.properties
hubert 7 years ago
parent
commit
04800f61bb
30 changed files with 902 additions and 129 deletions
  1. 52 2
      src/main/java/com/uas/platform/b2c/common/message/controller/InternalMessageController.java
  2. 78 18
      src/main/java/com/uas/platform/b2c/common/message/model/MessageModel.java
  3. 35 0
      src/main/java/com/uas/platform/b2c/common/message/service/InternalMessageService.java
  4. 177 0
      src/main/java/com/uas/platform/b2c/common/message/service/impl/InternalMessageServiceImpl.java
  5. 15 0
      src/main/java/com/uas/platform/b2c/core/config/MessageConf.java
  6. 1 1
      src/main/java/com/uas/platform/b2c/external/erp/product/service/impl/KindServiceImpl.java
  7. 2 0
      src/main/resources/dev/message.properties
  8. 1 1
      src/main/resources/dev/sys.properties
  9. 3 1
      src/main/resources/prod/message.properties
  10. 3 1
      src/main/resources/test/message.properties
  11. BIN
      src/main/webapp/resources/img/seekPurchase/refuse.png
  12. BIN
      src/main/webapp/resources/img/seekPurchase/refused.png
  13. 5 0
      src/main/webapp/resources/js/common/query/internalMessage.js
  14. 14 6
      src/main/webapp/resources/js/common/query/seekPurchase.js
  15. 0 0
      src/main/webapp/resources/js/test/propertyvalue.json
  16. 18 6
      src/main/webapp/resources/js/usercenter/app.js
  17. 144 7
      src/main/webapp/resources/js/usercenter/controllers/forstore/messagePersonalCtrl.js
  18. 33 1
      src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js
  19. 6 6
      src/main/webapp/resources/js/vendor/app.js
  20. 8 0
      src/main/webapp/resources/js/vendor/controllers/forstore/messageCtrl.js
  21. 62 8
      src/main/webapp/resources/js/vendor/controllers/forstore/messagePersonalCtrl.js
  22. 1 1
      src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js
  23. 95 24
      src/main/webapp/resources/view/usercenter/forstore/messagePersonal.html
  24. 1 1
      src/main/webapp/resources/view/usercenter/forstore/messagePublic.html
  25. 48 14
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  26. 2 1
      src/main/webapp/resources/view/usercenter/header.html
  27. 89 22
      src/main/webapp/resources/view/vendor/forstore/messagePersonal.html
  28. 1 1
      src/main/webapp/resources/view/vendor/forstore/messagePublic.html
  29. 3 2
      src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html
  30. 5 5
      src/main/webapp/resources/view/vendor/header.html

+ 52 - 2
src/main/java/com/uas/platform/b2c/common/message/controller/InternalMessageController.java

@@ -1,13 +1,22 @@
 package com.uas.platform.b2c.common.message.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
 import com.uas.platform.b2c.common.message.service.InternalMessageService;
+import com.uas.platform.b2c.core.config.MessageConf;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Status;
+import com.uas.platform.core.util.HttpUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
+import com.uas.platform.b2c.common.message.model.MessageModel;
+import java.util.HashMap;
+import com.uas.platform.b2c.core.utils.ContextUtils;
 
 /**
  * 站内信接口
@@ -17,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping("/internalmessage-service")
 public class InternalMessageController {
+    private static final String MESSAGE_PUBLIC_SERVICE_URL = ContextUtils.getBean(MessageConf.class).getMessagePublicServiceDevUrl();
 
     private final InternalMessageService internalMessageService;
 
@@ -38,19 +48,59 @@ public class InternalMessageController {
     }
 
 
-    /**
+/*    *//**
      * 分页获取消息 (用户)
      * @param recRole 接收角色
      * @param timeSorting 时间排序
      * @param classes 消息分类
      * @param page 分页参数
      * @return
-     */
+     *//*
     @RequestMapping(value = "/private", method = RequestMethod.GET)
     public ModelMap getMessagePagePrivate(@RequestParam(value = "recRole", defaultValue = "BUYER") String recRole, @RequestParam("timeSorting") String timeSorting, @RequestParam("classes") String classes, PageParams page) {
         ModelMap map = new ModelMap();
         map.put("messages", internalMessageService.getMessagePage(SystemSession.getUser().getUserUU(), (SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu(): null), recRole, timeSorting, classes, page));
         return map;
+    }*/
+
+    /**
+     * 获取消息的方法
+     *
+     * @author dongbw
+     * @param pageParams 分页参数
+     * @param isRead 阅读状态 1已读 0 未读
+
+     * @return
+     * @throws Exception
+     */
+
+    @RequestMapping(value = "/private", method = RequestMethod.GET)
+    public JSONObject getMessagesPagePrivate(PageParams pageParams, Short isRead, String keyword) throws Exception {
+        JSONObject messagePage = internalMessageService.getMessagesPagePrivate(pageParams, isRead, keyword);
+        //设置已读
+        internalMessageService.setRead(messagePage.getJSONArray("content"));
+
+        return messagePage;
+
+    }
+
+
+    /**
+     * 统计未读消息
+     *
+     * @return
+     */
+    @RequestMapping(value = "/count", method = RequestMethod.GET, headers = "Accept=application/json")
+    @ResponseBody
+    @ResponseStatus(value = HttpStatus.OK)
+    public ModelMap getMessages(Short isRead) {
+        try {
+            return new ModelMap("toRead", internalMessageService.getMessageNum(SystemSession.getUser().getEnterprise().getUu(), SystemSession.getUser().getUserUU(),isRead));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+//		return new ModelMap("toRead", pagingReleaseService.getToReadCount());
     }
 
     /**

+ 78 - 18
src/main/java/com/uas/platform/b2c/common/message/model/MessageModel.java

@@ -1,9 +1,34 @@
 package com.uas.platform.b2c.common.message.model;
 
+import java.util.Date;
+
 /**
- * 消息公共服务 - 消息实体
+ * 消息公共服务接收实体
  */
-public class MessageModel {
+public class MessageModel{
+
+    /**
+     * 消息id
+     */
+    private Long id;
+
+    /**
+     * 阅读状态
+     * 1 已阅
+     * 0 未读
+     */
+    private Short isRead;
+
+    /**
+     * 生成时间
+     */
+    private Date createTime;
+
+    /**
+     * 在b2b中拿到消息之后,拼接url(公共服务中无此字段)
+     */
+    private String url;
+
     /**
      * 消息类型
      */
@@ -24,26 +49,32 @@ public class MessageModel {
      * 消息接收者uu
      */
     private Long receiverUu;
+
     /**
      * 消息接收者企业uu
      */
     private Long receiverEnuu;
+
     /**
      * 消息发送者
      */
     private Long senderUu;
+
     /**
      * 消息发送者企业uu
      */
     private Long senderEnuu;
+
     /**
      * 来源应用
      */
     private String producerApp;
+
     /**
      * 消费类型(所有应用共享:"PUBLIC",单个应用独享:"SINGLE",多个应用共享:"MULTI")
      */
-    private String consumerType;
+    private String consumeType;
+
     /**
      * 推送方式类型
      * 邮件、短信、IM:"MAIL_AND_SM_AND_IM"
@@ -56,35 +87,53 @@ public class MessageModel {
      * 不发送:"DONT_SEND"
      */
     private String smsType;
+
     /**
      * 邮件模板id
      */
     private String mailTemplate;
+
     /**
      * 短息模板id
      */
     private String smTemplate;
+
     /**
      * 接收应用(以","拼接应用名称)
      */
     private String consumerApp;
 
-    public String getType() {
-        return type;
+    public Long getId() {
+        return id;
     }
 
-    public void setType(String type) {
-        this.type = type;
+    public void setId(Long id) {
+        this.id = id;
     }
 
-    public String getContent() {
-        return content;
+    public Short getIsRead() {
+        return isRead;
     }
 
-    public void setContent(String content) {
-        this.content = content;
+    public void setIsRead(Short isRead) {
+        this.isRead = isRead;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUrl() {
+        return url;
     }
 
+    public void setUrl(String url) {
+        this.url = url;
+    }
     public String getRemark() {
         return remark;
     }
@@ -93,6 +142,22 @@ public class MessageModel {
         this.remark = remark;
     }
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
     public Long getReceiverUu() {
         return receiverUu;
     }
@@ -133,14 +198,9 @@ public class MessageModel {
         this.producerApp = producerApp;
     }
 
-    public String getConsumerType() {
-        return consumerType;
+    public String getConsumeType() {
+        return consumeType;
     }
-
-    public void setConsumerType(String consumerType) {
-        this.consumerType = consumerType;
-    }
-
     public String getSmsType() {
         return smsType;
     }

+ 35 - 0
src/main/java/com/uas/platform/b2c/common/message/service/InternalMessageService.java

@@ -1,10 +1,14 @@
 package com.uas.platform.b2c.common.message.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.common.message.model.MessageModel;
 import com.uas.platform.b2c.trade.deprecated.model.BasicMessage;
 import com.uas.platform.core.model.PageParams;
+import org.springframework.data.domain.Page;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * 站内信service
@@ -112,4 +116,35 @@ public interface InternalMessageService {
      * @return
      */
     JSONObject getMessageLogsCount(String textid);
+
+    /***
+     * 设置已读
+     * @param content
+     * @throws Exception
+     */
+    void setRead(JSONArray content)throws Exception;
+
+    /**
+     * 获取当前企业当前用户未读消息数量
+     *
+     * @author dongbw
+     * @param enUU 企业UU
+     * @param userUU 用户UU
+     * @return
+     * @throws Exception
+     */
+    Integer getMessageNum(Long enUU, Long userUU,Short isRead) throws Exception;
+
+    /**
+     * 获取消息的方法
+     *
+     * @author dongbw
+     * @param pageParams 分页参数
+     * @param isRead 阅读状态 1已读 0 未读
+     * @return
+     * @throws Exception
+     */
+    JSONObject getMessagesPagePrivate(PageParams pageParams, Short isRead, String keyword) throws Exception;
+
+
 }

+ 177 - 0
src/main/java/com/uas/platform/b2c/common/message/service/impl/InternalMessageServiceImpl.java

@@ -1,16 +1,36 @@
 package com.uas.platform.b2c.common.message.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
+import com.uas.platform.b2c.advertise.ad.model.Message;
+import com.uas.platform.b2c.common.message.model.MessageModel;
 import com.uas.platform.b2c.common.message.service.InternalMessageService;
+import com.uas.platform.b2c.core.config.MessageConf;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.core.utils.ContextUtils;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.trade.deprecated.model.BasicMessage;
+import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.Type;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.ps.core.util.ObjectUtils;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
+import org.apache.commons.collections.map.ListOrderedMap;
+import org.apache.commons.lang.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.apache.velocity.app.VelocityEngine;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.velocity.VelocityEngineUtils;
 import org.springframework.web.client.RestTemplate;
@@ -18,6 +38,7 @@ import org.springframework.web.client.RestTemplate;
 import java.lang.reflect.Field;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -34,6 +55,34 @@ public class InternalMessageServiceImpl implements InternalMessageService {
 
     private final SysConf sysConf;
 
+    private static final String MESSAGE_PUBLIC_SERVICE_URL = ContextUtils.getBean(MessageConf.class).getMessagePublicServiceDevUrl();
+
+    /**
+     * 消息类型,公共询价的采纳结果
+     */
+    private final String INQUIRY_DECIDE_TYPE = "公共询价采纳结果";
+
+    /**
+     * 消息类型 (在MALL消息中拼接跳转单据详情url请求时需要)
+     */
+    private final String INQUIRY_TYPE = "公共询价";
+
+    /**
+     * 消息类型,公共询价的采纳结果
+     */
+    private final String INQUIRY_DECIDE_TYPE_MALL = "商城公共询价采纳结果";
+
+    /**
+     * 消息类型 (在MALL消息中拼接求购询价待报价)
+     */
+    private final String INQUIRY_TYPE_SELLER_MALL = "MALL跳转卖家待报价页面";
+
+    /**
+     * 消息类型 (在B2B消息中拼接跳转单据详情url请求时需要)
+     */
+    private final String INQUIRY_TYPE_MALL = "MALL公共询价";
+
+
     @Autowired
     public InternalMessageServiceImpl(MicroServicesConf conf, RestTemplate restTemplate,VelocityEngine velocityEngine, SysConf sysConf) {
         this.conf = conf;
@@ -203,5 +252,133 @@ public class InternalMessageServiceImpl implements InternalMessageService {
         JSONObject result = restTemplate.getForObject(url, JSONObject.class);
         return result;
     }
+
+
+    /**
+     * 设置已读
+     * @param content 传入信息内容
+     * @throws Exception
+     */
+    @Override
+    public void setRead(JSONArray content)throws Exception {
+        if (!ObjectUtils.isEmpty(content)) {
+            HashMap<String, Object> params = new HashMap<>();
+            StringBuilder idString = new StringBuilder();
+            List<MessageModel> models = FastjsonUtils.fromJsonArray( content.toString(), MessageModel.class);
+            for(MessageModel m :models) {
+               if (!StringUtils.isEmpty(idString.toString())) {
+                   idString.append(",");
+               }
+               idString.append(m.getId());
+
+            }
+            params.put("messageId", idString.toString());
+            params.put("receiverUu", SystemSession.getUser().getUserUU());
+            params.put("receiverEnuu", SystemSession.getUser().getEnterprise().getUu());
+            params.put("consumerApp", "MALL");
+
+            String res = HttpUtil.doPost(MESSAGE_PUBLIC_SERVICE_URL + "/messages/read", FlexJsonUtils.toJsonDeep(params));
+        }
+
+    }
+
+    /**
+     * 获取当前企业当前用户未读消息数量
+     *
+     * @author dongbw
+     * @param enUU 企业UU
+     * @param userUU 用户UU
+     * @return isRead 0为未读 1为已读 不传即为所有信息
+     * @throws Exception
+     */
+    @Override
+    public Integer getMessageNum(Long enUU, Long userUU, Short isRead) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("receiverUu", userUU);
+        params.put("receiverEnuu", enUU);
+        params.put("consumerApp", "MALL");
+        params.put("isRead", isRead == null ? "" : isRead);
+        HttpUtil.Response res = HttpUtil.sendGetRequest(MESSAGE_PUBLIC_SERVICE_URL + "/messages/count", params);
+        if (res.getStatusCode() == HttpStatus.OK.value() && null != res.getResponseText()) {
+            JSONObject jsonObject = JSON.parseObject(res.getResponseText());
+            return (Integer) jsonObject.get("count");
+        } else {
+            throw new RuntimeException("获取消息失败");
+        }
+    }
+
+    /**
+     * 获取消息的方法
+     *
+     * @author dongbw
+     * @param pageParams 分页参数
+     * @param isRead 阅读状态 1已读 0 未读
+     * @return
+     * @throws Exception
+     */
+    @SuppressWarnings("unchecked")
+    @Override
+    public JSONObject getMessagesPagePrivate(PageParams pageParams, Short isRead, String keyword) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("receiverUu", SystemSession.getUser().getUserUU());
+        params.put("receiverEnuu", SystemSession.getUser().getEnterprise().getUu());
+        params.put("consumerApp", "MALL");
+//        params.put("pageParams", FlexJsonUtils.toJsonDeep(pageParams));
+        params.put("page", pageParams.getPage());
+        params.put("sorting", pageParams.getSorting() == null ? "{\"createTime\":\"DESC\"}" : pageParams.getSorting());
+        params.put("count", pageParams.getCount());
+        params.put("isRead", isRead == null ? "" : isRead);
+        if (null != keyword && !"".equals(keyword)) {
+            params.put("keyword", keyword);
+        }
+        HttpUtil.Response res = HttpUtil.sendGetRequest(MESSAGE_PUBLIC_SERVICE_URL + "/messages", params);
+
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            if (null != res.getResponseText()) {
+                System.out.println(res.getResponseText());
+                JSONObject jsonObject = FastjsonUtils.fromJson(res.getResponseText(), JSONObject.class);
+                String content = jsonObject.getString("content");
+                if (!StringUtils.isEmpty(content)) {
+                    List<MessageModel> models = FastjsonUtils.fromJsonArray(content, MessageModel.class);
+                    if (CollectionUtils.isNotEmpty(models)) {
+                        for (MessageModel messageModel : models) {
+                            // 拼接公共询价链接
+                            if (INQUIRY_TYPE_MALL.equals(messageModel.getType()) ) {
+                                messageModel.setUrl("/user#/seekPurchase" );
+                            } else if (INQUIRY_DECIDE_TYPE_MALL.equals(messageModel.getType())||INQUIRY_DECIDE_TYPE.equals(messageModel.getType())) {
+                                messageModel.setUrl("/vendor#/vendorPurchaseOffer" );
+                            } else if (INQUIRY_TYPE_SELLER_MALL.equals(messageModel.getType())||INQUIRY_TYPE.equals(messageModel.getType())) {
+                                messageModel.setUrl("/vendor#/seekPurchase" );
+                            }
+                        }
+                       jsonObject.remove("content");
+                        jsonObject.put("content", models);
+                    }
+                }
+
+               return jsonObject;
+
+            }
+        } else {
+            throw new RuntimeException("获取消息失败");
+        }
+        return null;
+    }
+
+//    public Page<MessageModel> getMessageUrl(String keyword, PageParams params, Short isRead) throws Exception {
+//        Page<MessageModel> page = getMessagesPagePrivate(params,isRead,keyword);
+//        if (page != null) {
+//            for (MessageModel messageModel : page.getContent()) {
+//                // 拼接公共询价链接
+//                if (INQUIRY_TYPE.equals(messageModel.getType())) {
+//                    messageModel.setUrl("#/DECIDE" );
+//                } else if (INQUIRY_DECIDE_TYPE_MALL.equals(messageModel.getType())) {
+//                    messageModel.setUrl("#/vendorPurchaseOffer" );
+//                }
+//            }
+//        }
+//        return page;
+//    }
+
 }
 

+ 15 - 0
src/main/java/com/uas/platform/b2c/core/config/MessageConf.java

@@ -71,6 +71,21 @@ public class MessageConf {
 	@Value("#{message.plaformB2cSupplyChainTemplateId}")
 	private String supplyChain;
 
+	/**
+	 * 消息公共服务地址
+	 * @return
+	 */
+	@Value("#{message.messagePublicServiceDevUrl}")
+	private String messagePublicServiceDevUrl;
+
+	public String getMessagePublicServiceDevUrl() {
+		return messagePublicServiceDevUrl;
+	}
+
+	public void setMessagePublicServiceDevUrl(String messagePublicServiceDevUrl) {
+		this.messagePublicServiceDevUrl = messagePublicServiceDevUrl;
+	}
+
 	public String getTplNotifySupplierAfterCommit() {
 		return tplNotifySupplierAfterCommit;
 	}

+ 1 - 1
src/main/java/com/uas/platform/b2c/external/erp/product/service/impl/KindServiceImpl.java

@@ -109,7 +109,7 @@ public class KindServiceImpl implements KindService {
         return kindPropertyUas;
     }
 
-     @Override
+    @Override
     public Map<String, List<KindUas>> getParentsByKindCode(String kindCode) {
         Map<Long, Kind> maps = new HashMap<>();
         // 第一步是模糊查询所有的叶子节点

+ 2 - 0
src/main/resources/dev/message.properties

@@ -6,4 +6,6 @@ tplAfterBeAddedtoB2C=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 plaformB2cComponentApprovedTemplateId=36812a85-d0f9-4d2a-a7aa-62319f092b6f
 plaformB2cComponentUnproveTemplateId=6228240a-93ba-405f-851c-f874a6c99864
 plaformB2cSupplyChainTemplateId=b28337ba-f115-4f11-b457-15d558443160
+
+messagePublicServiceDevUrl=http://218.17.158.219:24000/message
 inviteVendorMailTemplateId=9028790a-9fc0-4759-a2df-8c26a7f3aa9a

+ 1 - 1
src/main/resources/dev/sys.properties

@@ -46,7 +46,7 @@ productServiceIp=http://192.168.253.12:24000
 kafka-bootstrap-servers=10.10.100.11:9292,10.10.100.12:9292,10.10.100.13:9292,10.10.100.14:9292,10.10.100.15:9292,10.10.100.16:9292
 
 #inquiry service url
-inquiryServiceUrl=http://218.17.158.219:24000
+inquiryServiceUrl=http://10.1.51.96:8080/
 inquiryServiceInnerUrl=http://218.17.158.219:24000
 
 #public message  service url

+ 3 - 1
src/main/resources/prod/message.properties

@@ -6,4 +6,6 @@ tplAfterBeAddedtoB2C=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 plaformB2cComponentApprovedTemplateId=36812a85-d0f9-4d2a-a7aa-62319f092b6f
 plaformB2cComponentUnproveTemplateId=6228240a-93ba-405f-851c-f874a6c99864
 plaformB2cSupplyChainTemplateId=b28337ba-f115-4f11-b457-15d558443160
-inviteVendorMailTemplateId=9028790a-9fc0-4759-a2df-8c26a7f3aa9a
+inviteVendorMailTemplateId=9028790a-9fc0-4759-a2df-8c26a7f3aa9a
+
+messagePublicServiceDevUrl=http://api-message.ubtob.com/message

+ 3 - 1
src/main/resources/test/message.properties

@@ -6,4 +6,6 @@ tplAfterBeAddedtoB2C=b9dee589-9fd8-45d3-9b2a-64b56d65e7e2
 plaformB2cComponentApprovedTemplateId=36812a85-d0f9-4d2a-a7aa-62319f092b6f
 plaformB2cComponentUnproveTemplateId=6228240a-93ba-405f-851c-f874a6c99864
 plaformB2cSupplyChainTemplateId=b28337ba-f115-4f11-b457-15d558443160
-inviteVendorMailTemplateId=9028790a-9fc0-4759-a2df-8c26a7f3aa9a
+inviteVendorMailTemplateId=9028790a-9fc0-4759-a2df-8c26a7f3aa9a
+
+messagePublicServiceDevUrl=http://218.17.158.219:24000/message

BIN
src/main/webapp/resources/img/seekPurchase/refuse.png


BIN
src/main/webapp/resources/img/seekPurchase/refused.png


+ 5 - 0
src/main/webapp/resources/js/common/query/internalMessage.js

@@ -46,6 +46,11 @@ define([ 'ngResource' ], function() {
             getLogsByText: {
                 url: 'internalmessage-service/byText',
                 method: 'GET'
+            },
+            // 获取信息数量
+            getUnread: {
+                url: 'internalmessage-service/count',
+                method: 'GET'
             }
         });
     }])

+ 14 - 6
src/main/webapp/resources/js/common/query/seekPurchase.js

@@ -14,18 +14,26 @@ define([ 'ngResource' ], function() {
         url: 'http://218.17.158.219:24000/inquiry/public',
         method: 'GET',
       },
-      saveOneSeekPurchase: {
+      /*saveOneSeekPurchase: {
         url: 'http://218.17.158.219:24000/inquiry/buyer/save',
         method: 'POST'
-      },
+      },*/
+      saveOneSeekPurchase: {
+                url: 'http://10.1.51.96:8080/inquiry/buyer/save',
+                method: 'POST'
+            },
       saveOneSeekPurchaseProd: {
         url: 'https://api-inquiry.usoftmall.com/inquiry/buyer/save',
         method: 'POST'
       },
-      saveOffer: {
+     /* saveOffer: {
         url: 'http://218.17.158.219:24000/inquiry/sale/item/save',
         method: 'POST'
-      },
+      },*/
+       saveOffer: {
+                url: 'http://10.1.51.96:8080/inquiry/sale/item/save',
+                method: 'POST'
+            },
       saveOfferProd: {
         url: 'https://api-inquiry.usoftmall.com/inquiry/sale/item/save',
         method: 'POST'
@@ -52,8 +60,8 @@ define([ 'ngResource' ], function() {
         method: 'GET'
       },
       updateSeekPurchaseStatus: {
-        url: 'http://218.17.158.219:24000/inquiry/buyer/decide',
-        method: 'POST'
+              url: 'http://218.17.158.219:24000/inquiry/buyer/decide',
+              method: 'POST'
       },
       getSeekPurchaseBomListPage: {
         url: 'http://218.17.158.219:24000/inquiry/buyer/inquiryList',

File diff suppressed because it is too large
+ 0 - 0
src/main/webapp/resources/js/test/propertyvalue.json


+ 18 - 6
src/main/webapp/resources/js/usercenter/app.js

@@ -1,7 +1,7 @@
 
-define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor','common/query/seekPurchase', 'common/query/search'], function(angularAMD) {
+define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor','common/query/seekPurchase', 'common/query/search', 'angular-sanitize'], function(angularAMD) {
 	'use strict';
-	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices','seekPurchaseServices', 'searchService']);
+	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices','seekPurchaseServices', 'searchService', 'ngSanitize']);
 	app.init = function() {
 		angularAMD.bootstrap(app);
 	};
@@ -586,15 +586,15 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 
 	}]);
 
-	app.controller('UserCenterHeaderCtrl', ['$scope', /*'$rootScope', 'InternalMessage', '$q',*/ function ($scope/*, $rootScope, InternalMessage, $q*/) {
+	app.controller('UserCenterHeaderCtrl', ['$scope',  'InternalMessage', /*'$rootScope',, '$q',*/ function ($scope, InternalMessage/*, $rootScope, , $q*/) {
 		$scope.homeUrl = window.location.pathname.replace('/user', '');
 		// 获取未读消息数量
 		//根据用户的信息
-		/*InternalMessage.getUnReadCount({recRole: 'BUYER'}, function (data) {
-			$scope.unReadMessage = data.count;
+		InternalMessage.getUnReadCount({recRole: 'BUYER'}, function (data) {
+			$scope.unReadMessage = data.count || 0;
 		}, function (responge) {
 
-		})*/
+		})
 	}]);
 
 	app.controller('CollectCtrl', ['$scope', 'collectionService', 'toaster', '$rootScope', '$modal', function ($scope, collectionService, toaster, $rootScope, $modal) {
@@ -709,6 +709,18 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 		}
 	});
 
+
+    /**
+     * 卖家中心头部
+     */
+    app.controller('UserCenterHeaderCtrl', ['$scope', '$rootScope', 'BaseService', 'InternalMessage', function ($scope, $rootScope, BaseService, InternalMessage) {
+        $scope.homeUrl = BaseService.getRootPath();
+        InternalMessage.getUnread({isRead: 0}, function (data) {
+            $rootScope.unReadMessCount = data.toRead;
+        }, function (err) {
+            toaster.pop('error', err || '获取未读消息数量失败');
+        })
+    }]);
 	/**
 	 * 采购单状态
 	 */

+ 144 - 7
src/main/webapp/resources/js/usercenter/controllers/forstore/messagePersonalCtrl.js

@@ -15,6 +15,7 @@ define(['app/app'], function(app) {
         $scope.deleteIds = [];
         $scope.isChoosedAll = false;
         $scope.isDelete = false;
+        $scope.getUnread = 0; // 未读消息
 
         //初始化页数信息
         $scope.initPages = function (totalElementPages) {
@@ -189,17 +190,22 @@ define(['app/app'], function(app) {
                 $scope.middleSegment(currentPage);
             }
         };
-
         // 筛选消息分类
         $scope.chooseClasses = function () {
             $scope.params.classes = $scope.classes;
             getData();
         };
 
-        // 时间排序
+       /* // 时间排序
         $scope.orderTime = function () {
             $scope.params.timeSorting = $scope.params.timeSorting == 'DESC' ? 'ASC' : 'DESC';
             getData();
+        };*/
+        // 时间排序
+        $scope.orderTime = function () {
+            $scope.params.timeSorting = $scope.params.timeSorting == 'DESC' ? 'ASC' : 'DESC'
+            $scope.params.sorting = {createTime: $scope.params.timeSorting};
+            getData();
         };
 
         // 全选
@@ -220,16 +226,134 @@ define(['app/app'], function(app) {
             });
         };
 
+        // $scope.messageCurrent = [{
+        //   messageText: {
+        //     classes: '物流信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is:"
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '售后信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '系统通知',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '卖家留言',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '物流信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is:"
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '售后信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '系统通知',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '卖家留言',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '物流信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is:"
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '售后信息',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '系统通知',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+        // },{
+        //   messageText: {
+        //     classes: '卖家留言',
+        //     sendTime: '1525228751',
+        //     content: "My name is: "
+        //   }
+     /*   // }]
+        InternalMessage.getUnread(function(data) {
+            $scope.getUnread = data;
+        })
+        var getData = function () {
+            InternalMessage.getMessagesPagePrivate($scope.params, function(data) {
+                if (data) {
+                    $scope.messageAllData = data;
+                    $scope.messageCurrent = data.content;
+                    angular.forEach($scope.messageCurrent, function(message) {
+                       message.content = $sce.trustAsHtml(message.content);
+                    });
+                    $scope.params.currentPage = data.number;
+                    $scope.acculatePages(data.number, data.totalPages);
+                }
+            }, function(response) {
+                toaster.pop('error', '获取消息失败,请重新刷新界面,');
+            });
+        };*/
+        $scope.unReadMessCount = $rootScope.unReadMessCount;
+        $scope.allReadMessCount = 0;
         var getData = function () {
+            InternalMessage.getUnread({}, function (data) {
+                $scope.allReadMessCount = data.toRead;
+            }, function (err) {
+                toaster.pop('error', err || '获取未读消息数量失败');
+            })
             InternalMessage.getMessagesPagePrivate($scope.params, function(data) {
                 if (data) {
-                    $scope.messageAllData = data.messages;
-                    $scope.messageCurrent = data.messages.content;
+                    console.log(data);
+                    $scope.messageAllData = data;
+                    $scope.messageCurrent = data.content;
                     angular.forEach($scope.messageCurrent, function(message) {
-                       message.messageText.content = $sce.trustAsHtml(message.messageText.content);
+                        message.content = $sce.trustAsHtml(message.content);
                     });
-                    $scope.params.currentPage = data.messages.number;
-                    $scope.acculatePages(data.messages.number, data.messages.totalPages);
+                    $scope.params.currentPage = data.number;
+                    $scope.acculatePages(data.number, data.totalPages);
+
+                    if ($scope.tab == 'no') {
+                        // $rootScope.unReadMessCount = data.totalElements;
+                    } else {
+                        var params = {
+                            page: 1,
+                            count: 10,
+                            timeSorting: 'DESC',
+                            classes: '',
+                            recRole: 'SELLER',
+                            isRead: 0
+                        };
+                        InternalMessage.getMessagesPagePrivate(params, function(data) {
+                            InternalMessage.getUnread({isRead: 0}, function (data) {
+                                $rootScope.unReadMessCount = data.toRead;
+                                $scope.unReadMessCount = data.toRead
+                            })
+                        })
+                    }
                 }
             }, function(response) {
                 toaster.pop('error', '获取消息失败,请重新刷新界面,');
@@ -283,7 +407,20 @@ define(['app/app'], function(app) {
             });
         };
 
+        //tab切换
+        $scope.tab = 'all';
+        $scope.checkTab = function(str) {
+            $scope.tab = str;
+            if (str == 'all') {
+                $scope.params.isRead = null;
+            } else if (str == 'no') {
+                $scope.params.isRead = 0;
+            }
+            getData();
+        }
+
 
         getData();
+
     }]);
 });

+ 33 - 1
src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js

@@ -492,7 +492,7 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
             $http({
               method: 'POST',
               dataType: 'json',
-              url: seekUrl + '/inquiry/buyer/decide',
+              url: seekUrl + '/inquiry/buyer/adopt',
               params: {id: id, status: 1}
             }).success(function (data) {
               toaster.pop('success', '采纳报价成功');
@@ -502,6 +502,38 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
             });
           }
 
+
+
+              //  点击拒绝,选择理由
+              $scope.currentRefuseOffer = {};
+              $scope.showCurrentRefuseOffer = false;
+              $scope.setActiveRefuse = function (of) {
+                  $scope.currentRefuseOffer = of;
+                  $scope.setShowCurrentRefuseOffer(true);
+              }
+
+              $scope.setShowCurrentRefuseOffer = function (flag) {
+                  $scope.showCurrentRefuseOffer = flag;
+              }
+
+              $scope.choice = '采购需求变更';
+
+              // 选择理由
+              $scope.refuse = function (choice) {
+                  $http({
+                      method: 'POST',
+                      dataType: 'json',
+                      url: seekUrl + '/inquiry/buyer/refuse',
+                      params: {id:  $scope.currentRefuseOffer.id, status: 0, refusereason: choice}
+                  }).success(function (data) {
+                      toaster.pop('refuse', '已拒绝报价');
+                      $scope.setShowCurrentRefuseOffer(false);
+                      $scope.seekPurchaseTableParams.reload();
+                  }).error(function (response) {
+                      toaster.pop('error', response);
+                  });
+              }
+
           $scope.offerCount = 0;
           $scope.goodsCount = 0;
           $scope.currentSeek = {};

+ 6 - 6
src/main/webapp/resources/js/vendor/app.js

@@ -954,13 +954,13 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 	/**
 	 * 卖家中心头部
 	 */
-	app.controller('VendorCenterHeaderCtrl', ['$scope', 'BaseService'/*, 'InternalMessage'*/, function ($scope, BaseService/*, InternalMessage*/) {
+	app.controller('VendorCenterHeaderCtrl', ['$scope', '$rootScope', 'BaseService', 'InternalMessage', function ($scope, $rootScope, BaseService, InternalMessage) {
 		$scope.homeUrl = BaseService.getRootPath();
-		// InternalMessage.getUnReadCount({recRole: 'SELLER'}, function (data) {
-		// 	$scope.unReadMessage = data.count;
-		// }, function (responge) {
-        //
-		// })
+        InternalMessage.getUnread({isRead: 0}, function (data) {
+            $rootScope.unReadMessCount = data.toRead;
+        }, function (err) {
+            toaster.pop('error', err || '获取未读消息数量失败');
+        })
 	}]);
 
 	/**

+ 8 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/messageCtrl.js

@@ -5,5 +5,13 @@ define(['app/app'], function(app) {
     app.register.controller('MessageCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
         $rootScope.active = 'message';
         $scope.message = {};
+
+      //  $scope.messageCurrent = [{
+      //   messageText: {
+      //     classes: '新闻公告',
+      //     sendTime: '1525228751',
+      //     content: "My name is: <h1>John Doe</h1>"
+      //   }
+      // },{},{}]
     }]);
 });

+ 62 - 8
src/main/webapp/resources/js/vendor/controllers/forstore/messagePersonalCtrl.js

@@ -43,7 +43,6 @@ define(['app/app'], function(app) {
                 $scope.pages.push(page);
             });
         };
-
         //当前页在后端计算方式
         $scope.endSegment = function (currentPage, totalElementPages) {
             if (totalElementPages > 8) {
@@ -198,7 +197,8 @@ define(['app/app'], function(app) {
 
         // 时间排序
         $scope.orderTime = function () {
-            $scope.params.timeSorting = $scope.params.timeSorting == 'DESC' ? 'ASC' : 'DESC';
+            $scope.params.timeSorting = $scope.params.timeSorting == 'DESC' ? 'ASC' : 'DESC'
+            $scope.params.sorting = {createTime: $scope.params.timeSorting};
             getData();
         };
 
@@ -220,22 +220,65 @@ define(['app/app'], function(app) {
             });
         };
 
+        $scope.unReadMessCount = $rootScope.unReadMessCount;
+        $scope.isReadMessCount = 0;
         var getData = function () {
+            /*InternalMessage.getUnread({isRead: 0}, function (data) {
+                $scope.unReadMessCount = data.toRead;*/
+            InternalMessage.getUnread({}, function (data) {
+                $scope.allReadMessCount = data.toRead;
+            }, function (err) {
+                toaster.pop('error', err || '获取未读消息数量失败');
+            })
             InternalMessage.getMessagesPagePrivate($scope.params, function(data) {
                 if (data) {
-                    $scope.messageAllData = data.messages;
-                    $scope.messageCurrent = data.messages.content;
+                    console.log(data);
+                    $scope.messageAllData = data;
+                    $scope.messageCurrent = data.content;
                     angular.forEach($scope.messageCurrent, function(message) {
-                        message.messageText.content = $sce.trustAsHtml(message.messageText.content);
+                        message.content = $sce.trustAsHtml(message.content);
                     });
-                    $scope.params.currentPage = data.messages.number;
-                    $scope.acculatePages(data.messages.number, data.messages.totalPages);
+                    $scope.params.currentPage = data.number;
+                    $scope.acculatePages(data.number, data.totalPages);
+                   /* if ($scope.tab == 'all') {
+                        $scope.isReadMessCount = data.totalElements;
+                    }*/
+                    var params = {
+                        page: 1,
+                        count: 10,
+                        timeSorting: 'DESC',
+                        classes: '',
+                        recRole: 'SELLER',
+                        isRead: 0
+                    };
+
+                    if ($scope.tab == 'no') {
+                        // $scope.unReadMessCount = data.totalElements;
+                        InternalMessage.getUnread({isRead: 0}, function (data) {
+                            $rootScope.unReadMessCount = data.toRead;
+                            $scope.unReadMessCount = data.toRead
+                        })
+                    } else {
+                        var params = {
+                            page: 1,
+                            count: 10,
+                            timeSorting: 'DESC',
+                            classes: '',
+                            recRole: 'SELLER',
+                            isRead: 0
+                        };
+                        InternalMessage.getMessagesPagePrivate(params, function(data) {
+                            InternalMessage.getUnread({isRead: 0}, function (data) {
+                                $rootScope.unReadMessCount = data.toRead;
+                                $scope.unReadMessCount = data.toRead
+                            })
+                        })
+                    }
                 }
             }, function(response) {
                 toaster.pop('error', '获取消息失败,请重新刷新界面,');
             });
         };
-
         // 批量删除
         $scope.deleteBatch = function () {
             var hasDelete = false;
@@ -274,5 +317,16 @@ define(['app/app'], function(app) {
         };
 
         getData();
+        /*$scope.tab = 'all';*/
+        $scope.tab = 'all';
+        $scope.checkTab = function(str) {
+            $scope.tab = str;
+            if (str == 'all') {
+                $scope.params.isRead = null;
+            } else if (str == 'no') {
+                $scope.params.isRead = 0;
+            }
+            getData();
+        }
     }]);
 });

+ 1 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js

@@ -213,7 +213,7 @@ define(['app/app'], function (app) {
                   $scope.isShowSayPriceBox = false;
                   $scope.seekPurchaseTableParams.reload();
                 }, function (response) {
-                  toaster.pop('error', '请勿重复报价或报价自己的求购');
+                  toaster.pop('error', '请勿重复报价或报价自己的求购2');
                 });
               }
             } else {

+ 95 - 24
src/main/webapp/resources/view/usercenter/forstore/messagePersonal.html

@@ -1,6 +1,6 @@
 <style>
     #massage .ng-table-pagination a {
-        border: none;
+        /*border: none;*/
         font-size: 12px;
         cursor: pointer;
     }
@@ -10,6 +10,8 @@
     }
     #massage div.ng-table-pager {
         margin-right: 0 !important;
+        padding-bottom: 20px;
+        padding-right: 20px;
     }
     #massage div.ng-table-pager .pagination {
         margin: 0;
@@ -38,7 +40,7 @@
         cursor: pointer;
         background-color: #4574E8;
         border-color: #4574E8;
-        padding: 5.55px 6px;
+        /*padding: 5.55px 6px;*/
         font-size: 12px;
         border-top-right-radius: 4px;
         border-bottom-right-radius: 4px;
@@ -52,13 +54,14 @@
         height: 31px;
         margin-top: 20px;
         line-height: 31px;
+        margin-left: 24px
     }
     #massage .ng-table-pager .ng-table-pagination{
         text-align: center;
         max-width: 460px;
     }
     #massage .ng-table-pager .ng-table-pagination a{
-        color: #4574E8 !important;
+        /*color: #4574E8 !important;*/
         height: 31px;
         line-height: 13px;
     }
@@ -66,6 +69,64 @@
         font-size: 14px;
         text-align: center;
         line-height: 50px;
+        margin: 20px 0;
+        height: auto;
+        padding: 20px 0px;
+    }
+
+    .oder01:nth-of-type(1) ul li{
+        margin-left: 0px;
+        position: relative;
+    }
+    .oder01:nth-of-type(1) ul li.active a{
+        border-bottom: #fff;
+        background: #5078cb;
+        color: #fff !important;
+    }
+    .oder01:nth-of-type(1) ul li::after{
+        background: url('/static/img/vendor/images/downicon.png');
+        width: 11px;
+        height: 6px;
+        position: absolute;
+        bottom: 0px;
+        left: 50%;
+        content: ' ';
+        margin-left: -5px;
+        display: none;
+    }
+    .oder01 ul li.active::after{
+        display: block;
+    }
+    .oder01:nth-of-type(1) ul li.active:hover a{
+        color: #fff !important;
+    }
+    .com-massage ul li a{
+        position: relative;
+    }
+    .com-massage ul li a .infoRed {
+        position: absolute;
+        border-radius: 50%;
+        width: 8px;
+        height: 8px;
+        top: -4px;
+        left: -4px;
+        background: red
+    }
+    .com-massage ul li a.info{
+        margin: 5px 0 0;
+        width: 840px;
+        font-size: 14px;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        overflow: hidden;
+    }
+    .com-massage ul li a.link:hover{
+        color: #5078cb;
+        text-decoration: underline;
+    }
+    .com-massage ul li a.noLink:hover{
+        color: #333;
+        cursor: default ;
     }
 </style>
 <div class="user_right fr" id="massage">
@@ -73,9 +134,12 @@
     <div class="oder">
         <div class="oder01">
             <ul>
-                <li class="active"><a href="javascript:void(0)"> 全部(<span ng-bind="messageAllData.totalElements || 0"></span>)</a></li>
+               <!-- <li class="active" ng-class="{'active' : tab == 'all'}" ng-click="checkTab('all')"><a href="javascript:void(0)"> 全部(<span ng-bind="messageAllData.totalElements || 0"></span>)</a></li>
+                <li class="" ng-class="{'active' : tab == 'no'}" ng-click="checkTab('no')"><a href="javascript:void(0)"> 未读(<span ng-bind="getUnread.toRead || 0"></span>)</a></li>-->
+                <li ng-class="{'active' : tab == 'all'}" ng-click="checkTab('all')"><a href="javascript:void(0)"> 全部(<span ng-bind="allReadMessCount || 0"></span>)</a></li>
+                <li ng-class="{'active' : tab == 'no'}" ng-click="checkTab('no')"><a href="javascript:void(0)"> 未读(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
             </ul>
-            <div class="select">
+           <!-- <div class="select">
                 <select name="" class="select-adder form-control" ng-change="chooseClasses()" ng-model="classes">
                     <option value="">全部</option>
                     <option value="售后信息">售后信息</option>
@@ -87,30 +151,37 @@
                     <option value="提醒发货">提醒发货</option>
                     <option value="缺货预警">缺货预警</option>
                 </select>
-            </div>
+            </div>-->
             <div class="filter-list">
                 <a ng-click="orderTime()">时间<i class="fa fa-long-arrow-up" aria-hidden="true" ng-show="params.timeSorting == 'ASC'"></i><i class="fa fa-long-arrow-down" aria-hidden="true" ng-show="params.timeSorting == 'DESC'"></i></a>
-                <a ng-click="deleteBatch()">删除</a>
-                <label class="check-active">
+            <!--  <a ng-click="deleteBatch()">删除</a>-->
+               <!-- <label class="check-active">
                     <input type="checkbox" id="isChooseAll" ng-click="chooseAll()" ng-model="isChoosedAll">
                     <label for="isChooseAll"></label>
                     <span style="margin-left: 0;">全选</span>
-                </label>
+                </label>-->
             </div>
         </div>
     </div>
     <div class="com-massage">
         <ul>
             <li ng-repeat="message in messageCurrent">
-                <div ng-if="message.messageText.classes=='新闻公告'" ng-click="readMessage(message)">
-                    <a href="#"><div class="icon icon-log"></div></a>
+                <!--<div ng-if="message.messageText.classes=='物流信息'" ng-click="readMessage(message)">-->
+                    <a href="#">
+                        <div class="icon icon-log"></div>
+                        <div class="infoRed" ng-if="message.isRead < 1"></div>
+                    </a>
                     <div class="content">
-                        <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
-                        <p ng-bind-html="message.messageText.content"></p>
+                       <!-- <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>-->
+                        <p class="content-info">
+                                <p><span>{{message.createTime| date:'yyyy-MM-dd HH:mm'}}</span></p>
+                                <a href="{{message.url}}" ng-bind="message.content" ng-if="message.url" title="{{message.content}}" class="link info" target="_blank"></a>
+                                <a ng-bind="message.content" ng-if="!message.url" title="{{message.content}}" class="noLink info" ></a>
+                        </p>
+                   <!-- </div>
+                    <div class="check"><input type="checkbox" id="check01" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check01"></label></div>-->
                     </div>
-                    <div class="check"><input type="checkbox" id="check01" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check01"></label></div>
-                </div>
-                <div ng-if="message.messageText.classes=='重要公告'" ng-click="readMessage(message)">
+                <div ng-if="message.messageText.classes=='售后信息'" ng-click="readMessage(message)">
                     <a href="#"><div class="icon icon-service"></div></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
@@ -118,7 +189,7 @@
                     </div>
                     <div class="check"><input type="checkbox" id="check02" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check02"></label></div>
                 </div>
-                <div ng-if="message.messageText.classes=='订单信息'" ng-click="readMessage(message)">
+                <div ng-if="message.messageText.classes=='系统通知'" ng-click="readMessage(message)">
                     <a href="#"><div class="icon icon-system"></div></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
@@ -136,7 +207,7 @@
                 </div>
             </li>
             <li ng-if="messageCurrent.length == 0" class="text-center no-message">
-                <div>暂无消息记录</div>
+                <img src="static/img/all/empty-cart.png"><span class="f14">暂无消息记录</span>
             </li>
         </ul>
     </div>
@@ -156,12 +227,12 @@
             <a class="page-a" ng-click="setPage('page', params.currentPage)">GO</a>
         </div>
     </div>
-    <div><a ng-click="sendPublicMessage()">发送消息</a></div>
-    <!--<div class="oder_list" style="margin-top: 0;">
-        <div ng-repeat="me in pageMessages.content">
-            <span ng-bind="me.messageText.content"></span>
-        </div>
-    </div>-->
+    <!--<div><a ng-click="sendPublicMessage()">发送消息</a></div>-->
+    <!--<div class="oder_list" style="margin-top: 0;">-->
+        <!--<div ng-repeat="me in pageMessages.content">-->
+            <!--<span ng-bind="me.messageText.content"></span>-->
+        <!--</div>-->
+    <!--</div>-->
 </div>
 <style>
     .com-del-box{

+ 1 - 1
src/main/webapp/resources/view/usercenter/forstore/messagePublic.html

@@ -105,7 +105,7 @@
                     </div>
                     <!--<div class="check"><input type="checkbox" id="check03"><label for="check03"></label></div>-->
                 </div>
-                <div  ng-if="message.messageText.classes=='卖家留言'" ng-click="readMessage(message)">
+                <div  ng-if="message.messageText.classes=='卖家留言1'" ng-click="readMessage(message)">
                     <a href="#"><div class="icon icon-massage"></div><em ng-if="message.status=='UNREAD'" class="dot"></em></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>

+ 48 - 14
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -353,7 +353,7 @@
     }
     .seek-purchase .seek-purchase-content >table >tbody tr.expand-row table tbody tr td.operate > span {
         display: inline-block;
-        width: 64px;
+        width: 39px;
         height: 24px;
         line-height: 24px;
         text-align: center;
@@ -364,6 +364,9 @@
         font-size: 12px;
         border-radius: 2px;
     }
+    td.operate .seek-btn {
+        margin-left: 13px;
+    }
     .seek-purchase .seek-purchase-content >table >tbody tr.expand-row .all-buy {
         height: 39px;
         line-height: 39px;
@@ -690,6 +693,15 @@
         background: #4290f7;
         margin: 18px 0 13px 0;
         border-radius: 2px;
+        color: #fff;
+    }
+    .seek-purchase .link-saler-box .select-adder {
+        display: inline-block;
+        width: 127px;
+        height: 22px;
+        border-radius: 2px;
+        border: 1px solid #a7a8a8;
+        padding: 0 20px 0 6px;
     }
    /* .seek-purchase .seek-purchase-content >table >tbody >tr.default-row td .row-wrap.il-content .il-box.il-box-large .fl {
         margin-right: 37px;
@@ -1194,7 +1206,9 @@
                                             </div>
 
                                             <img ng-if="of.agreed == 1" src="static/img/seekPurchase/recieved.png" alt="" class="ng-scope">
-                                            <span ng-if="seek.agreed != 1" ng-click="adopt(of.id)">采纳报价</span>
+                                            <img ng-if="of.agreed == 0" src="static/img/seekPurchase/refused.png" alt="" class="ng-scope">
+                                            <span class="seek-btn" ng-if="!seek.agreed && !of.agreed && of.agreed != 0" ng-click="adopt(of.id)">采纳</span>
+                                            <a class="seek-btn" ng-if="!of.agreed && of.agreed != 0" ng-click="setActiveRefuse(of)">拒绝</a>
                                         </td>
                                     </tr>
                                     </tbody>
@@ -1310,16 +1324,36 @@
             </div>
         </div>
     </div>
-    <!--<div class="com-mall-del-box link-saler-box" ng-if="linkBoxIndex > -1">-->
-        <!--<div class="title">-->
-            <!--<i ng-click="setLinkBoxIndex(-1)"></i>-->
-        <!--</div>-->
-        <!--<div class="content">-->
-            <!--<p><i class="fa fa-exclamation-circle"></i>抱歉,暂时无法与卖家在线沟通!</p>-->
-            <!--<p>卖家联系电话:<span ng-bind="currentSeek.qutations[linkBoxIndex].userTel || '-'"></span></p>-->
-            <!--<div>-->
-                <!--<a ng-click="setLinkBoxIndex(-1)">我知道了</a>-->
-            <!--</div>-->
-        <!--</div>-->
-    <!--</div>-->
+    <!--<div class="com-mall-del-box link-saler-box" ng-if="linkBoxIndex > -1">
+        <div class="title">
+            <i ng-click="setLinkBoxIndex(-1)"></i>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>抱歉,暂时无法与卖家在线沟通!</p>
+            <p>卖家联系电话:<span ng-bind="currentSeek.qutations[linkBoxIndex].userTel"></span></p>
+            <div>
+                <a ng-click="setLinkBoxIndex(-1)">我知道了</a>
+            </div>
+        </div>
+    </div>-->
+    <div class="com-mall-del-box link-saler-box" ng-if="showCurrentRefuseOffer">
+        <div class="title">
+            <i  ng-click="setShowCurrentRefuseOffer(false)"></i>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>拒绝报价原因:
+                <select class="select-adder" ng-model="choice">
+                    <option value="采购需求变更">采购需求变更</option>
+                    <option value="价格过高">价格过高</option>
+                    <option value="需进一步了解原因">需进一步了解原因</option>
+                    <option value="已选定合适供应商">已选定合适供应商</option>
+                    <option value="交期过长">交期过长</option>
+                </select>
+            </p>
+            <div>
+                <a ng-click="refuse(choice)">确定</a>
+                <a ng-click="setShowCurrentRefuseOffer(false)">关闭</a>
+            </div>
+        </div>
+    </div>
 </div>

+ 2 - 1
src/main/webapp/resources/view/usercenter/header.html

@@ -213,7 +213,8 @@
         <div class="nav">
             <ul>
                 <!--<li ng-class="{'active' : active == 'home'}"><a href="#home" class="active">首页</a></li>-->
-                <!--<li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessage"></span>)</a></li>-->
+                <!--<li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessage">0</span>)</a></li>-->
+                <li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
                 <!--<li ng-class="{'active' : active == 'browsing-history'}" s><a href="#browsing-history">浏览历史</a></li>-->
             </ul>
         </div>

+ 89 - 22
src/main/webapp/resources/view/vendor/forstore/messagePersonal.html

@@ -1,6 +1,6 @@
 <style>
     #massage .ng-table-pagination a {
-        border: none;
+        /*border: none;*/
         font-size: 12px;
         cursor: pointer;
     }
@@ -10,6 +10,8 @@
     }
     #massage div.ng-table-pager {
         margin-right: 0 !important;
+        padding-bottom: 20px;
+        padding-right: 20px;
     }
     #massage div.ng-table-pager .pagination {
         margin: 0;
@@ -38,7 +40,7 @@
         cursor: pointer;
         background-color: #4574E8;
         border-color: #4574E8;
-        padding: 5.55px 6px;
+        /*padding: 5.55px 6px;*/
         font-size: 12px;
         border-top-right-radius: 4px;
         border-bottom-right-radius: 4px;
@@ -52,13 +54,14 @@
         height: 31px;
         margin-top: 20px;
         line-height: 31px;
+        margin-left: 24px
     }
     #massage .ng-table-pager .ng-table-pagination{
         text-align: center;
         max-width: 460px;
     }
     #massage .ng-table-pager .ng-table-pagination a{
-        color: #4574E8 !important;
+        /*color: #4574E8 !important;*/
         height: 31px;
         line-height: 13px;
     }
@@ -66,16 +69,74 @@
         font-size: 14px;
         text-align: center;
         line-height: 50px;
+        margin: 20px 0;
+        height: auto;
+        padding: 20px 0px;
+    }
+    #massage .no-message span{
+        margin-left: 10px
+    }
+    .com-massage ul li a .infoRed {
+        position: absolute;
+        border-radius: 50%;
+        width: 8px;
+        height: 8px;
+        top: -4px;
+        left: -4px;
+        background: red
+    }
+    .oder01:nth-of-type(1) ul li{
+        margin-left: 0px;
+        position: relative;
+    }
+    .oder01:nth-of-type(1) ul li.active a{
+        border-bottom: #fff;
+        background: #5078cb;
+        color: #fff !important;
+    }
+    .oder01:nth-of-type(1) ul li::after{
+        background: url('/static/img/vendor/images/downicon.png');
+        width: 11px;
+        height: 6px;
+        position: absolute;
+        bottom: 0px;
+        left: 50%;
+        content: ' ';
+        margin-left: -5px;
+        display: none;
+    }
+    .oder01 ul li.active::after{
+        display: block;
+    }
+    .oder01:nth-of-type(1) ul li.active:hover a{
+        color: #fff !important;
+    }
+    .com-massage ul li a.info{
+        margin: 5px 0 0;
+        width: 840px;
+        font-size: 14px;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+        overflow: hidden;
+    }
+    .com-massage ul li a.info:hover{
+        color: #5078cb;
+        text-decoration: underline !important;
+    }
+    .com-massage ul li a.noLink:hover{
+        color: #333;
+        cursor: default ;
     }
 </style>
 <div class="user_right fr" id="massage">
     <!--订单中心-->
     <div class="oder">
-        <div class="oder01">
+        <div class="oder01" style="margin-bottom: 0px;">
             <ul>
-                <li class="active"><a href="javascript:void(0)"> 全部(<span ng-bind="messageAllData.totalElements || 0"></span>)</a></li>
+                <li ng-class="{'active' : tab == 'all'}" ng-click="checkTab('all')"><a href="javascript:void(0)"> 全部(<span ng-bind="allReadMessCount || 0"></span>)</a></li>
+                <li ng-class="{'active' : tab == 'no'}" ng-click="checkTab('no')"><a href="javascript:void(0)"> 未读(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
             </ul>
-            <div class="select">
+           <!-- <div class="select">
                 <select name="" class="select-adder form-control" ng-change="chooseClasses()" ng-model="classes">
                     <option value="">全部</option>
                     <option value="售后信息">售后信息</option>
@@ -87,39 +148,45 @@
                     <option value="提醒发货">提醒发货</option>
                     <option value="缺货预警">缺货预警</option>
                 </select>
-            </div>
+            </div>-->
             <div class="filter-list">
                 <a ng-click="orderTime()">时间<i class="fa fa-long-arrow-up" aria-hidden="true" ng-show="params.timeSorting == 'ASC'"></i><i class="fa fa-long-arrow-down" aria-hidden="true" ng-show="params.timeSorting == 'DESC'"></i></a>
-                <a ng-click="deleteBatch()">删除</a>
-                <label class="check-active">
+              <!--<a ng-click="deleteBatch()">删除</a>-->
+               <!-- <label class="check-active">
                     <input type="checkbox" id="isChooseAll" ng-click="chooseAll()" ng-model="isChoosedAll">
                     <label for="isChooseAll"></label>
                     <span style="margin-left: 0;">全选</span>
-                </label>
+                </label>-->
             </div>
         </div>
     </div>
     <div class="com-massage">
         <ul>
             <li ng-repeat="message in messageCurrent">
-                <div ng-if="message.messageText.classes=='新闻公告'" ng-click="readMessage(message)">
-                    <a href="#"><div class="icon icon-log"></div></a>
+                <!--<div ng-if="message.classes=='物流信息'" ng-click="readMessage(message)">-->
+                    <a href="#"><div class="icon icon-log"></div><div class="infoRed" ng-if="message.isRead < 1"></div></a>
                     <div class="content">
-                        <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
-                        <p ng-bind-html="message.messageText.content"></p>
-                    </div>
-                    <div class="check"><input type="checkbox" id="check01" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check01"></label></div>
+                      <!--  <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>-->
+
+                            <!-- <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>-->
+                        <p class="content-info">
+                            <p><span>{{message.createTime| date:'yyyy-MM-dd HH:mm'}}</span></p>
+                            <a href="{{message.url}}" ng-bind="message.content" ng-if="message.url" title="{{message.content}}" class="link info" target="_blank"></a>
+                            <a ng-bind="message.content" ng-if="!message.url" title="{{message.content}}" class="noLink info"></a>
+                        </p>
+                    <!--</div>
+                    <div class="check"><input type="checkbox" id="check01" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check01"></label></div>-->
                 </div>
-                <div ng-if="message.messageText.classes=='重要公告'" ng-click="readMessage(message)">
-                    <a href="#"><div class="icon icon-service"></div></a>
+                <div ng-if="message.messageText.classes=='售后信息'" ng-click="readMessage(message)">
+                    <a href="#"><div class="icon icon-service"></div><div class="infoRed" ng-if="message.isRead < 1"></div></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
                         <p ng-bind-html="message.messageText.content"></p>
                     </div>
                     <div class="check"><input type="checkbox" id="check02" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check02"></label></div>
                 </div>
-                <div ng-if="message.messageText.classes=='订单信息'" ng-click="readMessage(message)">
-                    <a href="#"><div class="icon icon-system"></div></a>
+                <div ng-if="message.messageText.classes=='系统通知'" ng-click="readMessage(message)">
+                    <a href="#"><div class="icon icon-system"></div><div class="infoRed" ng-if="message.isRead < 1"></div></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
                         <div ng-bind-html="message.messageText.content"></div>
@@ -127,7 +194,7 @@
                     <div class="check"><input type="checkbox" id="check03" ng-model="message.isChoosed" ng-click="chooseOne(message)"><label for="check03"></label></div>
                 </div>
                 <div  ng-if="message.messageText.classes=='卖家留言'" ng-click="readMessage(message)">
-                    <a href="#"><div class="icon icon-massage"></div></a>
+                    <a href="#"><div class="icon icon-massage"></div><div class="infoRed" ng-if="message.isRead < 1"></div></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>
                         <p ng-bind-html="message.messageText.content"></p>
@@ -136,7 +203,7 @@
                 </div>
             </li>
             <li ng-if="messageCurrent.length == 0" class="text-center no-message">
-                <div>暂无消息记录</div>
+                <img src="static/img/all/empty-cart.png"><span class="f14">暂无消息记录</span>
             </li>
         </ul>
     </div>

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/messagePublic.html

@@ -105,7 +105,7 @@
                     </div>
                     <!--<div class="check"><input type="checkbox" id="check03"><label for="check03"></label></div>-->
                 </div>
-                <div  ng-if="message.messageText.classes=='卖家留言'" ng-click="readMessage(message)">
+                <div  ng-if="message.messageText.classes=='卖家留言1'" ng-click="readMessage(message)">
                     <a href="#"><div class="icon icon-massage"></div><em ng-if="message.status=='UNREAD'" class="dot"></em></a>
                     <div class="content">
                         <p><span ng-bind="message.messageText.classes"></span><time ng-bind="message.messageText.sendTime | date:'yyyy-MM-dd HH:mm'"></time></p>

+ 3 - 2
src/main/webapp/resources/view/vendor/forstore/purchaseOffer.html

@@ -711,8 +711,8 @@
                 <td class="left-time" ng-if="seek.remainingTime <= 0"><span>已截止</span></td>
                 <td class="left-time" ng-if="seek.remainingTime == null"><span style="color: red;">-</span></td>
                 <td class="operate" ng-switch="seek.agreed">
-                    <a ng-click="setLinkBoxIndex($index)">联系买家 <img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
-                    <div class="is-say-price" ng-if="seek.agreed != 1">已报价 <img src="static/img/seekPurchase/check.png" alt="">
+                    <a ng-click="setLinkBoxIndex($index)">联系买家<img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
+                    <div class="is-say-price" ng-if="seek.agreed != 1 &&seek.agreed != 0">已报价 <img src="static/img/seekPurchase/check.png" alt="">
                         <div class="say-price-history">
                             <p class="price-title">历史报价</p>
                             <div>
@@ -736,6 +736,7 @@
                         </div>
                     </div>
                     <img ng-if="seek.agreed == 1" src="static/img/seekPurchase/recieved.png" alt="">
+                    <img ng-if="seek.agreed == 0" src="static/img/seekPurchase/refused.png" alt="">
                 </td>
             </tr>
             <!--

+ 5 - 5
src/main/webapp/resources/view/vendor/header.html

@@ -208,13 +208,13 @@
             <a ng-href="{{homeUrl}}"><img src="static/img/vendor/images/logo.png"/> </a>
             <!--<span>我的商城<a ng-href="{{homeUrl}}">返回商城首页</a> </span>-->
         </div>
-        <!--<div class="nav">
+        <div class="nav">
             <ul>
-                &lt;!&ndash;<li ng-class="{'active' : active == 'index'}"><a href="#index" class="active">首页</a></li>&ndash;&gt;
-                <li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessage"></span>)</a></li>
-                &lt;!&ndash;<li ng-class="{'active' : active == 'browsing-history'}"><a href="#browsing-history">浏览历史</a></li>&ndash;&gt;
+                <!--&lt;!&ndash;<li ng-class="{'active' : active == 'index'}"><a href="#index" class="active">首页</a></li>&ndash;&gt;-->
+                <li ng-class="{'active' : active == 'message'}" ><a ui-sref="messagePersonal">消息(<span ng-bind="unReadMessCount || 0"></span>)</a></li>
+                <!--&lt;!&ndash;<li ng-class="{'active' : active == 'browsing-history'}"><a href="#browsing-history">浏览历史</a></li>&ndash;&gt;-->
             </ul>
-        </div>-->
+        </div>
         <div id="mall-search" class="search-right fr" ng-controller="SearchCtrl">
             <input type="text" ng-model="keyword" ng-change="onChange()" ng-search="search()" ng-focus="onFocus()" ng-blur="onBlur()" ng-keyup="onKeyup()"placeholder="型号/类目/品牌" />
             <a class="seek" ng-click="search()">搜索</a>

Some files were not shown because too many files changed in this diff