Просмотр исходного кода

Merge branch 'dev-wangcz-quoteDetail20181-0117' of ssh://10.10.101.21/source/platform-b2b into dev

hejq 8 лет назад
Родитель
Сommit
72cb9d1e83
19 измененных файлов с 2169 добавлено и 1007 удалено
  1. 2 2
      src/main/java/com/uas/platform/b2b/controller/PubInquiryForPurcController.java
  2. 100 0
      src/main/java/com/uas/platform/b2b/controller/PubInquiryListController.java
  3. 6 1
      src/main/java/com/uas/platform/b2b/dao/PublicInquiryItemDao.java
  4. 15 0
      src/main/java/com/uas/platform/b2b/model/PublicInquiryItem.java
  5. 47 2
      src/main/java/com/uas/platform/b2b/model/SearchFilter.java
  6. 207 0
      src/main/java/com/uas/platform/b2b/ps/InquiryUtils.java
  7. 59 0
      src/main/java/com/uas/platform/b2b/service/EnquiryService.java
  8. 2 2
      src/main/java/com/uas/platform/b2b/service/PubInquiryService.java
  9. 8 1
      src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java
  10. 126 0
      src/main/java/com/uas/platform/b2b/service/impl/EnquiryServiceImpl.java
  11. 50 27
      src/main/java/com/uas/platform/b2b/service/impl/PubInquiryServiceImpl.java
  12. 180 80
      src/main/webapp/resources/js/index/app.js
  13. 35 0
      src/main/webapp/resources/js/index/services/PublicInquiry.js
  14. 257 96
      src/main/webapp/resources/tpl/index/baseInfo/inquiryItem_detail.html
  15. 1 1
      src/main/webapp/resources/tpl/index/baseInfo/inquiry_list.html
  16. 236 0
      src/main/webapp/resources/tpl/index/baseInfo/modal/quotation_modal.html
  17. 237 0
      src/main/webapp/resources/tpl/index/sale/modal/quote_inquiry.html
  18. 389 209
      src/main/webapp/resources/tpl/index/sale/pubinquiry.html
  19. 212 586
      src/main/webapp/resources/tpl/index/sale/pubinquiry_detail.html

+ 2 - 2
src/main/java/com/uas/platform/b2b/controller/PubInquiryForPurcController.java

@@ -356,7 +356,7 @@ public class PubInquiryForPurcController {
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/accept/{id}", method = RequestMethod.POST)
     @RequestMapping(value = "/accept/{id}", method = RequestMethod.POST)
-    private ModelMap acceptInquiry(@PathVariable Long id) {
+    private ModelMap acceptInquiry(@PathVariable Long id) throws Exception {
         logger.log("公共询价", "采纳报价", "关联id: " + id);
         logger.log("公共询价", "采纳报价", "关联id: " + id);
         return pubInquiryService.acceptInquiry(id);
         return pubInquiryService.acceptInquiry(id);
     }
     }
@@ -368,7 +368,7 @@ public class PubInquiryForPurcController {
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/refuse/{id}", method = RequestMethod.POST)
     @RequestMapping(value = "/refuse/{id}", method = RequestMethod.POST)
-    private ModelMap refuseInquiry(@PathVariable Long id) {
+    private ModelMap refuseInquiry(@PathVariable Long id) throws Exception {
         logger.log("公共询价", "拒绝报价", "关联id: " + id);
         logger.log("公共询价", "拒绝报价", "关联id: " + id);
         return pubInquiryService.refuseInquiry(id);
         return pubInquiryService.refuseInquiry(id);
     }
     }

+ 100 - 0
src/main/java/com/uas/platform/b2b/controller/PubInquiryListController.java

@@ -0,0 +1,100 @@
+package com.uas.platform.b2b.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.service.EnquiryService;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 首页公共询价列表数据
+ *
+ * Created by hejq on 2018-01-17.
+ */
+@RequestMapping("/pubInquiry")
+@RestController
+public class PubInquiryListController {
+
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    @Autowired
+    private EnquiryService enquiryService;
+
+    /**
+     * 获取所有企业发布的公共询价列表信息
+     *
+     * @author hejq
+     * @date 2018-01-17 19:45
+     * @param params
+     * @param searchFilter
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    SPage<PurcInquiryItemInfo> getInquiryList(PageParams params, String searchFilter) throws Exception {
+        logger.log("公共询价单", "查看公共询价单列表");
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return enquiryService.fingByPageInfo(pageInfo, filter);
+    }
+
+    /**
+     * 通过id查询公共询价详情
+     *
+     * @param id 询价明细id
+     * @return
+     */
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    private ModelMap getInquiryItemDetail(@PathVariable Long id) throws Exception {
+        logger.log("公共询价", "查看询价详情", "关联id:" + id);
+        return enquiryService.getInquiryItemDetail(id);
+    }
+
+    /**
+     * 转报价时查询是否已经转过报价
+     *
+     * @param id 公共询价id
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/quotation/{id}", method = RequestMethod.GET)
+    private ModelMap getQuotation(@PathVariable Long id) throws Exception {
+        logger.log("公共询价", "报价时查询报价信息", "关联id: " + id);
+        return enquiryService.getQuotation(id);
+    }
+
+    /**
+     * 通过报价id查询报价详情
+     *
+     * @param id 报价明细id
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/inquiry/{id}", method = RequestMethod.GET)
+    private ModelMap getInquiryDetail(@PathVariable Long id) throws Exception {
+        logger.log("公共询价", "查询报价详情", "关联id: " + id);
+        return enquiryService.getInquiryDetail(id);
+    }
+
+    /**
+     * 将客户询价单转成询价报价单
+     *
+     * @param item 报价信息
+     * @param method  方法
+     * @param uploadItem 附件
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "/turnToQuotation", method = RequestMethod.POST)
+    private ModelMap turanToQuotation(String item, String method, FileUpload uploadItem) throws Exception {
+        PublicInquiryItem inquiryItem = JSON.parseObject(item, PublicInquiryItem.class);
+        logger.log("公共询价", "将公共询价转成客户询价单", "关联id:" + inquiryItem.getId());
+        return enquiryService.turnToQuotation(inquiryItem, method, uploadItem);
+    }
+}

+ 6 - 1
src/main/java/com/uas/platform/b2b/dao/PublicInquiryItemDao.java

@@ -42,8 +42,13 @@ public interface PublicInquiryItemDao extends JpaRepository<PublicInquiryItem, L
     /**
     /**
      * 按询价单明细ID更新采纳结果
      * 按询价单明细ID更新采纳结果
      *
      *
+     * @author hejq
+     * @date 2018-01-14 15:03
+     * @param agreed 采纳结果
+     * @param decideStatus 采纳状态
+     * @param id 询价id
      */
      */
     @Modifying(clearAutomatically = true)
     @Modifying(clearAutomatically = true)
-    @Query("update PurchaseInquiryItem p set p.agreed = :agreed, p.decideStatus = :decideStatus where p.id = :id")
+    @Query("update PublicInquiryItem p set p.agreed = :agreed, p.decideStatus = :decideStatus where p.id = :id")
     void updateDecideStatusByID(@Param("agreed")Short agreed, @Param("decideStatus") Short decideStatus, @Param("id") Long id);
     void updateDecideStatusByID(@Param("agreed")Short agreed, @Param("decideStatus") Short decideStatus, @Param("id") Long id);
 }
 }

+ 15 - 0
src/main/java/com/uas/platform/b2b/model/PublicInquiryItem.java

@@ -8,6 +8,7 @@ import org.codehaus.jackson.annotate.JsonIgnore;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.CollectionUtils;
 
 
 import javax.persistence.*;
 import javax.persistence.*;
+import javax.transaction.Transactional;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.*;
 import java.util.*;
 
 
@@ -292,6 +293,12 @@ public class PublicInquiryItem implements Serializable {
 	@Column(name = "id_kind")
 	@Column(name = "id_kind")
 	private String kind;
 	private String kind;
 
 
+	/**
+	 * 报价应用
+	 */
+	@Transient
+	private String quDomain;
+
 	public Long getId() {
 	public Long getId() {
 		return id;
 		return id;
 	}
 	}
@@ -615,6 +622,14 @@ public class PublicInquiryItem implements Serializable {
 		this.kind = kind;
 		this.kind = kind;
 	}
 	}
 
 
+	public String getQuDomain() {
+		return quDomain;
+	}
+
+	public void setQuDomain(String quDomain) {
+		this.quDomain = quDomain;
+	}
+
 	/**
 	/**
 	 * 回复记录的描述
 	 * 回复记录的描述
 	 * 
 	 * 

+ 47 - 2
src/main/java/com/uas/platform/b2b/model/SearchFilter.java

@@ -13,35 +13,57 @@ public class SearchFilter {
 	 * 关键词
 	 * 关键词
 	 */
 	 */
 	private String keyword;
 	private String keyword;
+
 	/**
 	/**
 	 * 开始日期
 	 * 开始日期
 	 */
 	 */
 	private Long fromDate;
 	private Long fromDate;
+
 	/**
 	/**
 	 * 结束日期
 	 * 结束日期
 	 */
 	 */
 	private Long endDate;
 	private Long endDate;
+
 	/**
 	/**
 	 * 开始交货日期
 	 * 开始交货日期
 	 */
 	 */
 	private Long fromDelivery;
 	private Long fromDelivery;
+
 	/**
 	/**
 	 * 结束交货日期
 	 * 结束交货日期
 	 */
 	 */
 	private Long endDelivery;
 	private Long endDelivery;
+
 	/**
 	/**
 	 * 开始价格
 	 * 开始价格
 	 */
 	 */
 	private Double fromPrice;
 	private Double fromPrice;
+
 	/**
 	/**
 	 * 结束价格
 	 * 结束价格
 	 */
 	 */
 	private Double endPrice;
 	private Double endPrice;
+
 	/**
 	/**
 	 * 客户分配条件
 	 * 客户分配条件
 	 */
 	 */
 	private Collection<?> distribute;
 	private Collection<?> distribute;
-	
+
+	/**
+	 * 供应商UU
+	 */
+	private Long vendUU;
+
+	/**
+	 * 客户UU
+	 */
+	private Long enUU;
+
+	/**
+	 * 用户UU
+	 */
+	private Long userUU;
+
 	public String getKeyword() {
 	public String getKeyword() {
 		return keyword;
 		return keyword;
 	}
 	}
@@ -90,5 +112,28 @@ public class SearchFilter {
 	public void setDistribute(Collection<?> distribute) {
 	public void setDistribute(Collection<?> distribute) {
 		this.distribute = distribute;
 		this.distribute = distribute;
 	}
 	}
-	
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
 }
 }

+ 207 - 0
src/main/java/com/uas/platform/b2b/ps/InquiryUtils.java

@@ -0,0 +1,207 @@
+package com.uas.platform.b2b.ps;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.util.HttpUtil;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import org.springframework.ui.ModelMap;
+
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * 对接公共询价服务的接口
+ *
+ * Created by hejq on 2018-01-15.
+ */
+public class InquiryUtils {
+
+    /**
+     * 访问地址
+     */
+    private static String url = "http://localhost:8080";
+
+    /**
+     * 传递数据到公共询价接口方法
+     *
+     * @author hejq
+     * @date 2018-01-15 8:53
+     * @param item 询价明细
+     * @return
+     * @throws Exception
+     */
+    public static PublicInquiryItem save(PublicInquiryItem item) throws Exception {
+        String res = HttpUtil.doPost(url + "/inquiry/sale/item/save",  FlexJsonUtils.toJsonDeep(item));
+        if (null != res) {
+            Object obj = JSON.parse(res);
+            return JSON.parseObject(obj.toString(), PublicInquiryItem.class);
+        }
+        return null;
+    }
+
+    /**
+     * 传递数据到公共询价接口方法
+     *
+     * @author hejq
+     * @date 2018-01-15 8:53
+     * @param items 询价明细
+     * @return
+     * @throws Exception
+     */
+    public static PublicInquiry saveList(List<PublicInquiryItem> items) throws Exception {
+        String res = HttpUtil.doPost(url + "/inquiry/public/items/save",  FlexJsonUtils.toJsonDeep(items));
+        if (null != res) {
+            Object obj = JSON.parse(res);
+            return JSON.parseObject(obj.toString(), PublicInquiry.class);
+        }
+        return null;
+    }
+
+    /**
+     * 卖家保存、更新报价信息
+     *
+     * @param inquiryItem 报价信息
+     * @return
+     * @throws Exception
+     */
+    public static PublicInquiryItem saveItem(PublicInquiryItem inquiryItem) throws Exception {
+        String res = HttpUtil.doPost(url + "/inquiry/sale/item/save",  FlexJsonUtils.toJsonDeep(inquiryItem));
+        if (null != res) {
+            Object obj = JSON.parse(res);
+            return JSON.parseObject(obj.toString(), PublicInquiryItem.class);
+        }
+        return null;
+    }
+
+    /**
+     * 卖家报价时上传附件信息
+     *
+     * @param attach 附件信息
+     * @return
+     * @throws Exception
+     */
+    public static Attach addAttachs(Attach attach) throws Exception {
+        String res = HttpUtil.doPost(url + "/inquiry/sale/attach",  FlexJsonUtils.toJsonDeep(attach));
+        if (null != res) {
+            Object obj = JSON.parse(res);
+            return JSON.parseObject(obj.toString(), Attach.class);
+        }
+        return null;
+    }
+
+    /**
+     * 通过分页信息查询询价列表
+     *
+     * @param pageInfo 分页参数
+     * @param searchFilter 过滤条件
+     * @return
+     * @throws Exception
+     */
+    public static Page<PurcInquiryItemInfo> getInfo(PageInfo pageInfo, SearchFilter searchFilter) throws Exception {
+        JSONObject formData = JSON.parseObject(JSON.toJSONString(pageInfo));
+        if (searchFilter != null) {
+            formData.putAll(JSON.parseObject(JSON.toJSONString(searchFilter)));
+        }
+        HttpUtil.Response res = HttpUtil.sendGetRequest(url + "/inquiry/public", formData);
+        return (Page)JSONObject.parseObject(res.getResponseText(), new TypeReference<Page<PurcInquiryItemInfo>>() {
+        }, new Feature[0]);
+    }
+
+    /**
+     * 通过id查询公共询价详情
+     *
+     * @param id
+     * @param enuu
+     * @return
+     * @throws Exception
+     */
+    public static ModelMap findById(Long id, Long enuu) throws Exception {
+        JSONObject formData = new JSONObject();
+        formData.put("id", id);
+        formData.put("enuu", enuu);
+        HttpUtil.Response res = HttpUtil.sendGetRequest(url + "/inquiry/sale/publicInquiry/detail", formData);
+        ModelMap map = new ModelMap();
+        if (res.getStatusCode() == 200) {
+            JSONObject jsonObject = JSONObject.parseObject(res.getResponseText());
+            String itemStr = jsonObject.getString("inquiryItem");
+            if (null != itemStr) {
+                PurcInquiryItemInfo inquiryItem = JSONObject.parseObject(itemStr.toString(), PurcInquiryItemInfo.class);
+                map.put("inquiryItem", inquiryItem);
+            }
+            String idStr = jsonObject.getString("idid");
+            if (null != idStr) {
+                map.put("id", idStr);
+            }
+            return map;
+        } else {
+            throw new Exception("数据获取失败");
+        }
+    }
+
+    /**
+     * 买家对供应商报价信息的审核操作
+     *
+     * @param id 报价明细id
+     * @param status 状态
+     * @return
+     * @throws Exception
+     */
+    public static void decide(Long id, Short status) throws Exception {
+        JSONObject formData = JSON.parseObject(JSON.toJSONString(id));
+        formData.putAll(JSON.parseObject(JSON.toJSONString(status)));
+        HttpUtil.Response res = HttpUtil.sendPostRequest(url + "/inquiry/buyer/decide", formData);
+        if (res.getStatusCode() != 200) {
+            throw new Exception("审核失败");
+        }
+    }
+
+    /**
+     * 通过公共询价明细id和企业UU号查询是否已转报价
+     *
+     * @param id 公共询价明细id
+     * @param enuu 企业UU
+     * @return
+     * @throws Exception
+     */
+    public static PublicInquiryItem findBySourceId(Long id, Long enuu) throws Exception {
+        JSONObject formData = new JSONObject();
+        formData.put("id", id);
+        formData.put("enuu", enuu);
+        HttpUtil.Response res = HttpUtil.sendGetRequest(url + "/inquiry/sale/quote", formData);
+        if (res.getStatusCode() == 200) {
+            if (null != res.getResponseText()) {
+                return JSONObject.parseObject(res.getResponseText(), PublicInquiryItem.class);
+            }
+        } else {
+            throw new Exception("数据查询失败: " + res.getStatusCode());
+        }
+        return null;
+    }
+
+    /**
+     * 通过询价明细id查询报价详情
+     *
+     * @param id 公共询价明细id
+     * @param enuu 企业UU
+     * @return
+     * @throws Exception
+     */
+    public static PublicInquiryItem findInquiryById(Long id, Long enuu) throws Exception {
+        JSONObject formData = JSON.parseObject(JSON.toJSONString(id));
+        formData.putAll(JSON.parseObject(JSON.toJSONString(enuu)));
+        HttpUtil.Response res = HttpUtil.sendGetRequest(url + "/inquiry/sale/inquiry/detail", formData);
+        if (res.getStatusCode() == 200) {
+            if (null != res.getResponseText()) {
+                return JSONObject.parseObject(res.getResponseText(), PublicInquiryItem.class);
+            }
+        } else {
+            throw new Exception("数据查询失败: " + res.getStatusCode());
+        }
+        return null;
+    }
+}

+ 59 - 0
src/main/java/com/uas/platform/b2b/service/EnquiryService.java

@@ -0,0 +1,59 @@
+package com.uas.platform.b2b.service;
+
+import com.uas.platform.b2b.model.FileUpload;
+import com.uas.platform.b2b.model.PublicInquiryItem;
+import com.uas.platform.b2b.model.PurcInquiryItemInfo;
+import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.search.b2b.model.SPage;
+import org.springframework.ui.ModelMap;
+
+/**
+ * 公共询价操作接口
+ *
+ * Created by hejq on 2018-01-17.
+ */
+public interface EnquiryService {
+
+    /**
+     * 通过分页信息查询公共询价信息
+     *
+     * @param pageInfo 分页信息
+     * @param searchFilter 过滤条件
+     * @return
+     */
+    SPage<PurcInquiryItemInfo> fingByPageInfo(PageInfo pageInfo, SearchFilter searchFilter) throws Exception;
+
+    /**
+     * 通过id查询询价详情
+     *
+     * @param id 公共询价明细id
+     * @return
+     */
+    ModelMap getInquiryItemDetail(Long id) throws Exception;
+
+    /**
+     * 通过公共询价明细id查询报价信息
+     *
+     * @param id 公共询价明细id
+     * @return
+     */
+    ModelMap getQuotation(Long id) throws Exception;
+
+    /**
+     * 通过id查询报价详情
+     * @param id 报价明细id
+     * @return
+     */
+    ModelMap getInquiryDetail(Long id) throws Exception;
+
+    /**
+     * 将客户公共询价单转成询价报价单
+     *
+     * @param inquiryItem 报价详情
+     * @param method  方法
+     * @param uploadItem 附件
+     * @return
+     */
+    ModelMap turnToQuotation(PublicInquiryItem inquiryItem, String method, FileUpload uploadItem) throws Exception;
+}

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

@@ -82,7 +82,7 @@ public interface PubInquiryService {
      * @param id 明细id
      * @param id 明细id
      * @return
      * @return
      */
      */
-    ModelMap acceptInquiry(Long id);
+    ModelMap acceptInquiry(Long id) throws Exception;
 
 
     /**
     /**
      * 拒绝供应商报价信息
      * 拒绝供应商报价信息
@@ -90,7 +90,7 @@ public interface PubInquiryService {
      * @param id 明细id
      * @param id 明细id
      * @return
      * @return
      */
      */
-    ModelMap refuseInquiry(Long id);
+    ModelMap refuseInquiry(Long id) throws Exception;
 
 
     /**
     /**
      * 上传附件信息
      * 上传附件信息

+ 8 - 1
src/main/java/com/uas/platform/b2b/service/impl/DeputyOrderServiceImpl.java

@@ -342,7 +342,14 @@ public class DeputyOrderServiceImpl implements DeputyOrderService {
 	public List<DeputyOrder> findByDeputyuu(Long enuu) {
 	public List<DeputyOrder> findByDeputyuu(Long enuu) {
 		String entryStatus = "已提交";
 		String entryStatus = "已提交";
 		String downloadStatus = "未下载";
 		String downloadStatus = "未下载";
-		return deputyOrderDao.getByDeputyuuAndEntrystatusAndDownloadstatus(enuu, entryStatus, downloadStatus);
+		List<Long> idList = new ArrayList<Long>();
+		idList.add(5351L);
+		idList.add(5349L);
+		idList.add(5347L);
+		idList.add(5346L);
+		idList.add(5343L);
+		return deputyOrderDao.findAll(idList);
+//		return deputyOrderDao.getByDeputyuuAndEntrystatusAndDownloadstatus(enuu, entryStatus, downloadStatus);
 	}
 	}
 
 
 	@Override
 	@Override

+ 126 - 0
src/main/java/com/uas/platform/b2b/service/impl/EnquiryServiceImpl.java

@@ -0,0 +1,126 @@
+ package com.uas.platform.b2b.service.impl;
+
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.InquiryUtils;
+import com.uas.platform.b2b.service.AttachService;
+import com.uas.platform.b2b.service.EnquiryService;
+import com.uas.platform.b2b.support.SPageUtils;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.exception.NotFoundException;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.Status;
+import com.uas.search.b2b.model.SPage;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
+
+import java.util.HashSet;
+import java.util.Set;
+
+ /**
+ * 公共询价操作方法实现
+ *
+ * Created by hejq on 2018-01-17.
+ */
+@Service
+public class EnquiryServiceImpl implements EnquiryService {
+
+    @Autowired
+    private AttachService attachService;
+
+    /**
+     * 通过分页信息查询公共询价信息
+     *
+     * @param pageInfo     分页信息
+     * @param searchFilter 过滤条件
+     * @return
+     */
+    @Override
+    public SPage<PurcInquiryItemInfo> fingByPageInfo(PageInfo pageInfo, SearchFilter searchFilter) throws Exception {
+        searchFilter.setEnUU(SystemSession.getUser().getEnterprise().getUu());
+        Page<PurcInquiryItemInfo> infos = InquiryUtils.getInfo(pageInfo, searchFilter);
+        return SPageUtils.covert(infos);
+    }
+
+     /**
+      * 通过id查询询价详情
+      *
+      * @param id
+      * @return
+      */
+     @Override
+     public ModelMap getInquiryItemDetail(Long id) throws Exception {
+         return InquiryUtils.findById(id, SystemSession.getUser().getEnterprise().getUu());
+     }
+
+     /**
+      * 通过id查询报价信息
+      *
+      * @param id 公共询价明细id
+      * @return
+      */
+     @Override
+     public ModelMap getQuotation(Long id) throws Exception {
+         ModelMap map = new ModelMap();
+         PublicInquiryItem inquiryItem = InquiryUtils.findBySourceId(id, SystemSession.getUser().getEnterprise().getUu());
+         if (null != inquiryItem) {
+             map.put("inquiryItem", inquiryItem);
+         }
+         return map;
+     }
+
+     /**
+      * 通过id查询报价详情
+      *
+      * @param id 报价明细id
+      * @return
+      */
+     @Override
+     public ModelMap getInquiryDetail(Long id) throws Exception {
+         ModelMap map = new ModelMap();
+         PublicInquiryItem inquiryItem = InquiryUtils.findInquiryById(id, SystemSession.getUser().getEnterprise().getUu());
+         if (null != inquiryItem) {
+             map.put("inquiryItem", inquiryItem);
+         } else {
+             throw new NotFoundException("未找到相关报价信息");
+         }
+         return map;
+     }
+
+     /**
+      * 将客户公共询价单转成询价报价单
+      *
+      * @param inquiryItem 报价详情
+      * @param method  方法
+      * @param uploadItem 附件
+      * @return
+      */
+     @Override
+     public ModelMap turnToQuotation(PublicInquiryItem inquiryItem, String method, FileUpload uploadItem) throws Exception {
+         inquiryItem.setQuDomain("B2B");
+         if (uploadItem.getFile() != null) {
+             Attach attach = attachService.upload(uploadItem, "PurchaseInquiryItemAttaches", "采购询价单报价附件");
+             Set<Attach> attachSet = inquiryItem.getAttaches() != null ? inquiryItem.getAttaches() : new HashSet<Attach>();
+             attachSet.add(attach);
+             inquiryItem.setAttaches(attachSet);
+         }
+         if ("reply".equals(method)) {
+             inquiryItem.setStatus((short) Status.REPLIED.value());
+             inquiryItem.setBackStatus((short) Status.NOT_UPLOAD.value());
+             inquiryItem.setReplySendStatus((short) Status.NOT_UPLOAD.value());
+             // 将采纳状态设置成申请状态,方便过滤
+             inquiryItem.setDecideStatus((short) Status.UNAUDIT.value());
+         }
+         inquiryItem.setVendUU(SystemSession.getUser().getEnterprise().getUu());
+         inquiryItem.setVendUserUU(SystemSession.getUser().getUserUU());
+         inquiryItem = InquiryUtils.save(inquiryItem);
+         // 这边的id可能是询价的id,但是不会赋值sourceID,所以如果sourceID有值,应该是已经保存过了
+         if (null != inquiryItem.getSourceId()) {
+            return new ModelMap("success", "报价成功");
+         } else {
+             throw new IllegalOperatorException("报价失败");
+         }
+     }
+ }

+ 50 - 27
src/main/java/com/uas/platform/b2b/service/impl/PubInquiryServiceImpl.java

@@ -4,6 +4,7 @@ import com.uas.platform.b2b.core.util.ThreadUtils;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.erp.model.Inquiry;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.model.*;
+import com.uas.platform.b2b.ps.InquiryUtils;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.service.ProductUsersService;
 import com.uas.platform.b2b.service.ProductUsersService;
@@ -128,7 +129,7 @@ public class PubInquiryServiceImpl implements PubInquiryService {
         // 这里先要判断是否有询价单的操作权限,涉及到后面单据查看的问题
         // 这里先要判断是否有询价单的操作权限,涉及到后面单据查看的问题
         Integer count = roleService.findRoleByEnUUAndUserUU(enuu, useruu);
         Integer count = roleService.findRoleByEnUUAndUserUU(enuu, useruu);
         Double manCount =  roleDao.findByEnuuAndUserUU(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU());
         Double manCount =  roleDao.findByEnuuAndUserUU(SystemSession.getUser().getEnterprise().getUu(),SystemSession.getUser().getUserUU());
-        if(count == 0 && manCount == 0) {
+        if (count == 0 && manCount == 0) {
             map.put("info", "您没有询价单的操作权限,请通知管理员设置权限");
             map.put("info", "您没有询价单的操作权限,请通知管理员设置权限");
             return map;
             return map;
         }
         }
@@ -139,11 +140,11 @@ public class PubInquiryServiceImpl implements PubInquiryService {
         if (null == inquiry) {// 新增
         if (null == inquiry) {// 新增
             // 这里设置自动添加为客户关系,并且如果当前用户非管理员要进行自动分配客户处理
             // 这里设置自动添加为客户关系,并且如果当前用户非管理员要进行自动分配客户处理
             Long custuseruu = purcInquiry.getRecorderUU();
             Long custuseruu = purcInquiry.getRecorderUU();
-            if(null == custuseruu) {
+            if (null == custuseruu) {
                 Enterprise enterprise = enterpriseDao.findOne(purcInquiry.getEnUU());
                 Enterprise enterprise = enterpriseDao.findOne(purcInquiry.getEnUU());
                 custuseruu = enterprise.getEnAdminuu();
                 custuseruu = enterprise.getEnAdminuu();
             }
             }
-            if(null != custuseruu) {
+            if (null != custuseruu) {
                 vendorDao.initVendorAndDistribute(purcInquiry.getEnUU(), custuseruu, enuu, useruu);
                 vendorDao.initVendorAndDistribute(purcInquiry.getEnUU(), custuseruu, enuu, useruu);
                 logger.log("客户关系", "添加客户", "通过公共询价(" + purcInquiry.getId() + ")转询价自动添加客户关系");
                 logger.log("客户关系", "添加客户", "通过公共询价(" + purcInquiry.getId() + ")转询价自动添加客户关系");
             }
             }
@@ -212,6 +213,17 @@ public class PubInquiryServiceImpl implements PubInquiryService {
                 items.add(item);
                 items.add(item);
                 i++;
                 i++;
             }
             }
+//            try {
+//                inquiry = InquiryUtils.saveList(new ArrayList<PublicInquiryItem>(items));
+//                if (inquiry.getId() != null) {
+//                    map.put("success", "转客户询价单成功");
+//                    map.put("id", inquiry.getId());
+//                } else {
+//                    map.put("success", "转客户询价单失败");
+//                }
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
             List<PublicInquiryItem> purcitems = publicInquiryItemDao.save(items);
             List<PublicInquiryItem> purcitems = publicInquiryItemDao.save(items);
             if (purcitems.get(0).getId() != null) {
             if (purcitems.get(0).getId() != null) {
                 map.put("success", "转客户询价单成功");
                 map.put("success", "转客户询价单成功");
@@ -257,24 +269,31 @@ public class PubInquiryServiceImpl implements PubInquiryService {
                         replies.addAll(purcReplies);
                         replies.addAll(purcReplies);
                         item.setReplies(replies);
                         item.setReplies(replies);
                         Long idid = commonDao.queryForObject("select public$inquiryitems_seq.nextval from dual", Long.class);
                         Long idid = commonDao.queryForObject("select public$inquiryitems_seq.nextval from dual", Long.class);
+                        item.setInquiry(inquiry);
+                        item.setId(idid);
                         try {
                         try {
-                            commonDao.getJdbcTemplate().update(
-                                    "insert into public$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
-                                            + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
-                                    idid, item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
-                                    item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
-                                    item.getSourceApp(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
-                                    item.getSourceId(), inquiry.getId(), inquiry.getKind());
-                        } catch (DataAccessException e) {
+                            item = InquiryUtils.save(item);
+                        } catch (Exception e) {
                             e.printStackTrace();
                             e.printStackTrace();
                         }
                         }
-                        item = publicInquiryItemDao.findOne(idid);
-                        //回复清单更新
-                        if(replies.size() > 0) {
-                            for (PublicInquiryReply reply1 : replies) {
-                                commonDao.getJdbcTemplate().update("update public$inquiryreply set ir_idid = " + idid + "where ir_id = " + reply1.getId());
-                            }
-                        }
+//                        try {
+//                            commonDao.getJdbcTemplate().update(
+//                                    "insert into public$inquiryitems(id_id,id_number,id_currency,id_fromdate,id_todate,id_taxrate,id_prid,id_venduu,"
+//                                            + "id_venduseruu,id_sourceapp,id_status,id_custlap,id_sendstatus,id_sourceid,id_inid,id_kind) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
+//                                    idid, item.getNumber(), item.getCurrency(), item.getFromDate(), item.getToDate(),
+//                                    item.getTaxrate(), item.getProductId(), item.getVendUU(), item.getVendUserUU(),
+//                                    item.getSourceApp(), item.getStatus(), item.getCustLap(), item.getSendStatus(),
+//                                    item.getSourceId(), inquiry.getId(), inquiry.getKind());
+//                        } catch (DataAccessException e) {
+//                            e.printStackTrace();
+//                        }
+//                        item = publicInquiryItemDao.findOne(idid);
+//                        //回复清单更新
+//                        if(replies.size() > 0) {
+//                            for (PublicInquiryReply reply1 : replies) {
+//                                commonDao.getJdbcTemplate().update("update public$inquiryreply set ir_idid = " + idid + "where ir_id = " + reply1.getId());
+//                            }
+//                        }
                         if (item != null) {
                         if (item != null) {
                             map.put("success", "转客户询价单成功");
                             map.put("success", "转客户询价单成功");
                             map.put("id", item.getInquiry().getId());
                             map.put("id", item.getInquiry().getId());
@@ -471,12 +490,12 @@ public class PubInquiryServiceImpl implements PubInquiryService {
             inquiryInfo.setInvoice(inquiry.getInvoice());
             inquiryInfo.setInvoice(inquiry.getInvoice());
             inquiryInfo.setInquirytype(inquiry.getInquirytype());
             inquiryInfo.setInquirytype(inquiry.getInquirytype());
             Set<Long> ids = new HashSet<Long>();
             Set<Long> ids = new HashSet<Long>();
-            List<Long> idStrings = new ArrayList<>();
+            List<Long> idList = new ArrayList<>();
             Set<InquiryProductInfo> products = new HashSet<InquiryProductInfo>();
             Set<InquiryProductInfo> products = new HashSet<InquiryProductInfo>();
             if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
             if (!CollectionUtils.isEmpty(inquiry.getInquiryItems())) {
                 for (PublicInquiryItemInfo item : inquiry.getInquiryItems()) {
                 for (PublicInquiryItemInfo item : inquiry.getInquiryItems()) {
-                    idStrings.add(item.getProductId());
-                    ids.addAll(idStrings);
+                    idList.add(item.getProductId());
+                    ids.addAll(idList);
                 }
                 }
             }
             }
             if (!CollectionUtils.isEmpty(ids)) {
             if (!CollectionUtils.isEmpty(ids)) {
@@ -511,12 +530,13 @@ public class PubInquiryServiceImpl implements PubInquiryService {
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public ModelMap acceptInquiry(Long id) {
+    public ModelMap acceptInquiry(Long id) throws Exception {
         ModelMap map = new ModelMap();
         ModelMap map = new ModelMap();
         PublicInquiryItem item = publicInquiryItemDao.findOne(id);
         PublicInquiryItem item = publicInquiryItemDao.findOne(id);
         item.setAgreed(Constant.YES);
         item.setAgreed(Constant.YES);
         item.setStatus((short) Status.REPLIED.value());
         item.setStatus((short) Status.REPLIED.value());
-        item = publicInquiryItemDao.save(item);
+//        item = publicInquiryItemDao.save(item);
+        item = InquiryUtils.saveItem(item);
         if (item.getAgreed().equals(Constant.YES) && item.getStatus().equals((short) Status.REPLIED.value())) {
         if (item.getAgreed().equals(Constant.YES) && item.getStatus().equals((short) Status.REPLIED.value())) {
             map.put("success", "采纳成功");
             map.put("success", "采纳成功");
         } else {
         } else {
@@ -532,12 +552,13 @@ public class PubInquiryServiceImpl implements PubInquiryService {
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public ModelMap refuseInquiry(Long id) {
+    public ModelMap refuseInquiry(Long id) throws Exception {
         ModelMap map = new ModelMap();
         ModelMap map = new ModelMap();
         PublicInquiryItem item = publicInquiryItemDao.findOne(id);
         PublicInquiryItem item = publicInquiryItemDao.findOne(id);
         item.setAgreed(Constant.NO);
         item.setAgreed(Constant.NO);
         item.setStatus((short) Status.REPLIED.value());
         item.setStatus((short) Status.REPLIED.value());
-        item = publicInquiryItemDao.save(item);
+//        item = publicInquiryItemDao.save(item);
+        item = InquiryUtils.saveItem(item);
         if (item.getAgreed().equals(Constant.NO) && item.getStatus().equals((short) Status.REPLIED.value())) {
         if (item.getAgreed().equals(Constant.NO) && item.getStatus().equals((short) Status.REPLIED.value())) {
             map.put("success", "拒绝操作成功");
             map.put("success", "拒绝操作成功");
         } else {
         } else {
@@ -565,7 +586,8 @@ public class PubInquiryServiceImpl implements PubInquiryService {
         if (attach == null) {
         if (attach == null) {
             throw new Exception("文件太大");
             throw new Exception("文件太大");
         }
         }
-        attach = attachDao.save(attach);
+//        attach = attachDao.save(attach);
+        attach = InquiryUtils.addAttachs(attach);
         // 避免出现无附件的情况
         // 避免出现无附件的情况
         Set<Attach> attachSet = item.getAttaches() != null ? item.getAttaches() : new HashSet<Attach>();
         Set<Attach> attachSet = item.getAttaches() != null ? item.getAttaches() : new HashSet<Attach>();
         attachSet.add(attach);
         attachSet.add(attach);
@@ -573,7 +595,8 @@ public class PubInquiryServiceImpl implements PubInquiryService {
             item = reply(item);
             item = reply(item);
         }
         }
         item.setAttaches(attachSet);
         item.setAttaches(attachSet);
-        item = publicInquiryItemDao.save(item);
+//        item = publicInquiryItemDao.save(item);
+        item = InquiryUtils.saveItem(item);
         map.put("success", true);
         map.put("success", true);
         map.put("item", item);
         map.put("item", item);
         return map;
         return map;

+ 180 - 80
src/main/webapp/resources/js/index/app.js

@@ -5228,7 +5228,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     }]);
     }]);
 
 
     // 公共询价列表
     // 公共询价列表
-    app.controller('PublicInquiryListCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'PurcInquiry', 'publicInquiry', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, PurcInquiry, publicInquiry) {
+    app.controller('PublicInquiryListCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'PurcInquiry', 'publicInquiry', 'publicInquiryList', '$modal', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, PurcInquiry, publicInquiry, publicInquiryList, $modal) {
         BaseService.scrollBackToTop();
         BaseService.scrollBackToTop();
         /**
         /**
          * 改变单据日期范围
          * 改变单据日期范围
@@ -5333,11 +5333,12 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         };
         };
 
 
         var getService = function () {
         var getService = function () {
-            if ($scope.active == 'teams') {
-                return PurchaseInquiry.hisquotation;
-            } else {
-                return PurchaseInquiry.publicInquiryItem;
-            }
+            // if ($scope.active == 'teams') {
+            //     return PurchaseInquiry.hisquotation;
+            // } else {
+            //     return PurchaseInquiry.publicInquiryItem;
+            // }
+            return publicInquiryList.getInquirylist;
         }
         }
 
 
         $scope.tableParams = new ngTableParams({
         $scope.tableParams = new ngTableParams({
@@ -5394,38 +5395,118 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         });
         });
 
 
         // 转客户询价
         // 转客户询价
-        $scope.transtoInquiry = function (id) {
-            publicInquiry.turnToInquiry({id: id}, {}, function (data) {
-                if (data.success) {
-                    toaster.pop('success', '提示', data.success);
-                    window.location.hash = "sale/pubinquiry/" + data.id;
-                }
-                if (data.error) {
-                    toaster.pop('error', '提示', data.error);
-                }
-                if (data.info) {
-                    toaster.pop('info', '提示', data.info);
-                    window.open("#/sale/pubinquiry/" + data.inid);
+        $scope.transtoInquiry = function (inquiryItem) {
+            publicInquiry.quotationInfo({id: inquiryItem.id}, function(data) {
+                console.log(data);
+                if (data.inquiryItem) { //存在已报价的就不进行报价操作
+                    toaster.pop('error', '该询价单已已经报价');
+                } else {
+                    var modalInstance = $modal.open({
+                        templateUrl: 'static/tpl/index/baseInfo/modal/quotation_modal.html',
+                        controller: 'QuoteCtrl',
+                        size: 'lg',
+                        resolve: {
+                            inquiryItem: function () {
+                                return inquiryItem
+                            }
+                        }
+                    });
+
+                    modalInstance.result.then(function (data) {
+                        $scope.item.product = data;
+                    }, function () {
+
+                    });
                 }
                 }
-            }, function (response) {
-                toaster.pop('error', '提示', response.data);
             });
             });
+
         }
         }
 
 
         // 跳转到我的报价列表
         // 跳转到我的报价列表
         $scope.linkToInquiry = function () {
         $scope.linkToInquiry = function () {
             window.open("#/sale/pubinquiry");
             window.open("#/sale/pubinquiry");
         }
         }
+
+    }]);
+
+    /**
+     * 报价操作
+     */
+    app.controller('QuoteCtrl', ['$scope', 'inquiryItem', 'toaster', 'publicInquiry', '$modalInstance', '$upload', function($scope, inquiryItem, toaster, publicInquiry, $modalInstance, $upload) {
+        $scope.inquiryItem = inquiryItem;
+        if ($scope.inquiryItem.replies == null) {
+            $scope.inquiryItem.replies = [];
+            var reply = {
+                lapQty: null,
+                price: null
+            };
+            $scope.inquiryItem.replies.push(reply);
+        }
+        $scope.replyPrices = [];
+        $scope.replylapQtys = [];
+        $scope.replyPrices.push(true);
+        $scope.replylapQtys.push(true);
+
+        // 增加一列分段报价
+        $scope.addStep = function (inquiryItem) {
+            $scope.replyPrices.push(true);
+            if (inquiryItem.replies.length >= 5) {
+                toaster.pop('warning', '提示', '最多支持5个分段!');
+            } else {
+                inquiryItem.replies.push({});
+                if (inquiryItem.replies.length != 1) {
+                    $scope.replyPrices.push(true);
+                    $scope.replylapQtys.push(true);
+                }
+            }
+        };
+
+        // 删除一列分段报价
+        $scope.removeStep = function (inquiryItem, stepIndex) {
+            inquiryItem.replies.splice(stepIndex, 1);
+            $scope.replyPrices.splice(stepIndex, 1);
+            $scope.replylapQtys.splice(stepIndex, 1);
+        };
+
+        // 取消,关闭弹出框
+        $scope.cancel = function() {
+            $modalInstance.dismiss();
+        }
+
+        // 保存报价信息
+        $scope.save = function(inquiryItem, method) {
+            var file = $scope.myFiles, file = file && file.length > 0 ? file[0] : null;// 可以不传附件
+            $upload.upload({
+                url: 'pubInquiry/turnToQuotation',
+                file: file,
+                method: 'POST',
+                data: {
+                    item: inquiryItem,
+                    method: method
+                }
+            }).success(function (data) {
+                if (data.item) {
+                    item = data.item;
+                }
+                $scope.loading = false;
+                toaster.pop('info', '提示', '报价成功');
+                $scope.tableParams.reload();
+            }).error(function (data) {
+                $scope.loading = false;
+                toaster.pop('error', '附件上传失败');
+            });
+        }
     }]);
     }]);
 
 
+
     /**
     /**
      * 公共询价详情
      * 公共询价详情
      */
      */
-    app.controller('PublicInquiryListDetailCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'AccountEnterprise', 'publicInquiry', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, AccountEnterprise, publicInquiry) {
+    app.controller('PublicInquiryListDetailCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'AccountEnterprise', 'publicInquiry', 'publicInquiryList', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, AccountEnterprise, publicInquiry, publicInquiryList) {
         BaseService.scrollBackToTop();
         BaseService.scrollBackToTop();
         $scope.currentHasBid = false;
         $scope.currentHasBid = false;
         var loadData = function () {
         var loadData = function () {
-            PurchaseInquiry.inquiryItemDetail({id: $stateParams.id}, function (data) {
+            publicInquiryList.getDetail({id: $stateParams.id}, function (data) {
                 $scope.inquiryItem = data.inquiryItem;
                 $scope.inquiryItem = data.inquiryItem;
                 if (data.id) {
                 if (data.id) {
                     $scope.id = data.id;
                     $scope.id = data.id;
@@ -6911,7 +6992,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             notice.send.code = $filter('date')(new Date(), 'yyMMddHHmmss-sss');
             notice.send.code = $filter('date')(new Date(), 'yyMMddHHmmss-sss');
         };
         };
         
         
-        // 获取token信息
+        // 获取token信息 并打开询价模态框
         $scope.getToken = function() {
         $scope.getToken = function() {
     		token.info({userType: 'salenotice'}, {}, function(data) {
     		token.info({userType: 'salenotice'}, {}, function(data) {
     			$scope.token = data.token;
     			$scope.token = data.token;
@@ -22810,7 +22891,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     /**
     /**
      * 针对卖家,已转询价的公共询价单列表
      * 针对卖家,已转询价的公共询价单列表
      */
      */
-    app.controller('SalePubInquiryCtrl', ['$scope', '$filter', 'PubInquirySearchInfo', 'ngTableParams', 'toaster', 'BaseService', 'PubInquiryNoSearchInfo', '$upload', '$rootScope', 'token', '$timeout', 'CurrentRole', 'publicInquiry', function ($scope, $filter, PubInquirySearchInfo, ngTableParams, toaster, BaseService, PubInquiryNoSearchInfo, $upload, $rootScope, token, $timeout, CurrentRole, publicInquiry) {
+    app.controller('SalePubInquiryCtrl', ['$scope', '$filter', 'PubInquirySearchInfo', 'ngTableParams', 'toaster', 'BaseService', 'PubInquiryNoSearchInfo', '$upload', '$rootScope', 'token', '$timeout', 'CurrentRole', 'publicInquiry', '$modal', function ($scope, $filter, PubInquirySearchInfo, ngTableParams, toaster, BaseService, PubInquiryNoSearchInfo, $upload, $rootScope, token, $timeout, CurrentRole, publicInquiry, $modal) {
         BaseService.scrollBackToTop();
         BaseService.scrollBackToTop();
 
 
         // 获取当前用户是否为普通用户
         // 获取当前用户是否为普通用户
@@ -23005,13 +23086,20 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             }
             }
         };
         };
 
 
-        // 获取token信息
-        $scope.getToken = function() {
-            token.info({userType: 'saleinquiry'}, {}, function(data) {
-                $scope.token = data.token;
-            }, function(response) {
-                toaster.pop('error', '提示', response.data);
-            });
+        // 报价
+        $scope.quote = function(inquiryItem) {
+            $modal.open({
+                animation: true,
+                templateUrl: 'static/tpl/index/sale/modal/quote_inquiry.html',
+                controller: 'QuoteInquiryCtrl',
+                resolve: {
+                    inquiryItem: function () {
+                        return inquiryItem
+                    }
+                }
+            }).result.then(function (data) {
+
+            }, function () {})
         };
         };
 
 
         $scope.deleteAttach = function (attaches, index) {
         $scope.deleteAttach = function (attaches, index) {
@@ -23456,15 +23544,6 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             }
             }
         };
         };
 
 
-        // // 设置阅读状态
-        // $scope.setReadStatus = function(msg) {
-        //     if(!msg.read) {
-        //         PurcInquiry.setStatus({id: msg.inid}, {}, function(data) {
-        //
-        //         });
-        //     }
-        // }
-
         $scope.searchMethod = false;
         $scope.searchMethod = false;
         var getService = function () {
         var getService = function () {
             return $scope.searchMethod ? PurcPubInquirySearchInfo : PurcPubInquiryNoSearchInfo;
             return $scope.searchMethod ? PurcPubInquirySearchInfo : PurcPubInquiryNoSearchInfo;
@@ -23506,45 +23585,6 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             }
             }
         });
         });
 
 
-        //获得各分类未阅读数量
-        // var getUnreadCount = function () {
-        //     PurcInquiry.getUnreadCount(null, function (data) {
-        //         $scope.unread = data;
-        //     });
-        // };
-        // getUnreadCount();
-
-        // //设置单据已读
-        // $scope.setOrdersRead = function (id) {
-        //     // 如果单据本身已读,则不发送请求修改数据
-        //     if (!$scope.isUnread(id)){
-        //         return;
-        //     }
-        //     var sourceId = [];
-        //     sourceId.push(id);
-        //     PurcInquiry.setRead({}, sourceId, function (message) {
-        //         getUnreadCount();
-        //         removeByValue($scope.unreadCode, id);
-        //     });
-        // };
-
-        // $scope.setOrdersReadByState = function () {
-        //     if (!$scope.unread.replied || $scope.unread.replied == 0) {
-        //         return;
-        //     }
-        //     PurcInquiry.setReadByState({}, function () {
-        //         getUnreadIds();
-        //         getUnreadCount();
-        //     });
-        // };
-
-        // var getUnreadIds = function () {
-        //     PurcInquiry.getUnreadIds({}, "", function (message) {
-        //         $scope.unreadCode = message.content;
-        //     });
-        // };
-        // getUnreadIds();
-
         $scope.isUnread = function (id) {
         $scope.isUnread = function (id) {
             for (var i in $scope.unreadCode) {
             for (var i in $scope.unreadCode) {
                 if (id == $scope.unreadCode[i]) {
                 if (id == $scope.unreadCode[i]) {
@@ -23642,7 +23682,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     }]);
     }]);
 
 
     /**
     /**
-     * 针对卖家,已转询价单的客户公共询价单明细
+     * 针对买家,已转询价单的客户公共询价单明细
      */
      */
     app.controller('PurcPubInquiryDetailCtrl', ['$scope', '$stateParams', 'publicInquiry', '$filter', 'toaster', '$upload', 'token', 'CurrentRole', function ($scope, $stateParams, publicInquiry, $filter, toaster, $upload, token, CurrentRole) {
     app.controller('PurcPubInquiryDetailCtrl', ['$scope', '$stateParams', 'publicInquiry', '$filter', 'toaster', '$upload', 'token', 'CurrentRole', function ($scope, $stateParams, publicInquiry, $filter, toaster, $upload, token, CurrentRole) {
         // 获取当前用户是否为普通用户
         // 获取当前用户是否为普通用户
@@ -23733,5 +23773,65 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         }
         }
     }]);
     }]);
 
 
+    /**
+     * 公共询价模态框(供应商报价)
+     */
+    app.controller('QuoteInquiryCtrl', ['$scope', '$stateParams', 'toaster', 'inquiryItem', '$modalInstance', '$upload', function ($scope, $stateParams, toaster, inquiryItem, $modalInstance, $upload) {
+        $scope.inquiryItem = inquiryItem;
+        $scope.replyPrices = [];
+        $scope.replylapQtys = [];
+        $scope.replyPrices.push(true);
+        $scope.replylapQtys.push(true);
+
+        // 增加一列分段报价
+        $scope.addStep = function (inquiryItem) {
+            $scope.replyPrices.push(true);
+            if (inquiryItem.replies.length >= 5) {
+                toaster.pop('warning', '提示', '最多支持5个分段!');
+            } else {
+                inquiryItem.replies.push({});
+                if (inquiryItem.replies.length != 1) {
+                    $scope.replyPrices.push(true);
+                    $scope.replylapQtys.push(true);
+                }
+            }
+        };
+
+        // 删除一列分段报价
+        $scope.removeStep = function (inquiryItem, stepIndex) {
+            inquiryItem.replies.splice(stepIndex, 1);
+            $scope.replyPrices.splice(stepIndex, 1);
+            $scope.replylapQtys.splice(stepIndex, 1);
+        };
+
+        // 取消,关闭弹出框
+        $scope.cancel = function() {
+            $modalInstance.dismiss();
+        }
+
+        // 保存报价信息
+        $scope.save = function(inquiryItem, method) {
+            var file = $scope.myFiles, file = file && file.length > 0 ? file[0] : null;// 可以不传附件
+            $upload.upload({
+                url: 'pubInquiry/turnToQuotation',
+                file: file,
+                method: 'POST',
+                data: {
+                    item: inquiryItem,
+                    method: method
+                }
+            }).success(function (data) {
+                if (data.item) {
+                    item = data.item;
+                }
+                $scope.loading = false;
+                toaster.pop('info', '提示', '报价成功');
+                $scope.tableParams.reload();
+            }).error(function (data) {
+                $scope.loading = false;
+                toaster.pop('error', '附件上传失败');
+            });
+        }
+    }])
     return app;
     return app;
 });
 });

+ 35 - 0
src/main/webapp/resources/js/index/services/PublicInquiry.js

@@ -71,6 +71,20 @@ define([ 'ngResource'], function() {
             refuse: {
             refuse: {
                 url: 'purc/pubInquiry/refuse/:id',
                 url: 'purc/pubInquiry/refuse/:id',
                 method: 'POST'
                 method: 'POST'
+            },
+            /**
+             * 将公共询价转询价报价
+             */
+            turnToQuotation: {
+                url: 'pubInquiry/turnToQuotation',
+                method: 'POST'
+            },
+            /**
+             * 根据公共询价明细id,用id查询该条数据是否已报价
+             */
+            quotationInfo: {
+                url: 'pubInquiry/quotation/:id',
+                method: 'GET'
             }
             }
         })
         })
     }]).factory('PubInquiryNoSearchInfo', ['$resource', function($resource) {
     }]).factory('PubInquiryNoSearchInfo', ['$resource', function($resource) {
@@ -317,5 +331,26 @@ define([ 'ngResource'], function() {
                 }
                 }
             }
             }
         });
         });
+    }]).factory('publicInquiryList', ['$resource', function($resource) {
+        /**
+         * 首页公共询价更多里面展示的所有企业发布的公共询价信息列表
+         *     这里只做信息获取,不加其他方法
+         */
+        return $resource('pubInquiry', {}, {
+            /**
+             * 得到所有的单据
+             */
+            getInquirylist: {
+                url: 'pubInquiry/list',
+                method: 'GET'
+            },
+            /**
+             * 通过id查询公共询价详情
+             */
+            getDetail: {
+                url: 'pubInquiry/:id',
+                method: 'GET'
+            }
+        });
     }])
     }])
 });
 });

+ 257 - 96
src/main/webapp/resources/tpl/index/baseInfo/inquiryItem_detail.html

@@ -510,101 +510,262 @@ input[type="radio"], input[type="checkbox"] {
     }
     }
 </style>
 </style>
 
 
-<div class="ng-scope" style="width: 1170px; margin-left: -240px;">
-    <form name="tenderForm">
-        <div class="purc-tender">
-            <div class="pub-com_head">
-                <span>公共询价单</span>
-                <div class="p-right">
-                    <span class="fr"><em class="ng-binding">录入人:{{::inquiryItem.inquiry.recorder}}</em><time class="ng-binding">日期:{{::inquiryItem.inquiry.date | date :'yyyy-MM-dd HH:mm'}}</time></span>
-                </div>
-            </div>
-            <div class="tender-content ng-scope">
-                <div class="title-div" style="border-bottom: 1px dotted #327ebe;">
-                    <span>询价信息</span>&nbsp;
-                    <span style="color: rgb(211,37,38);">*</span>
-                </div>
-                <div class="row base-info">
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">询价编号:</div>
-                        <div ng-bind="::inquiryItem.inquiry.code"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">询价企业:</div>
-                        <div ng-bind="::inquiryItem.inquiry.enterprise.enName"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">联系人:</div>
-                        <div ng-bind="::inquiryItem.inquiry.recorder"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">联系电话:</div>
-                        <div ng-bind="::inquiryItem.inquiry.userBaseInfo.userTel"></div>
-                    </div>
-                    <div class="col-xs-4">
-                        <span class="tender-desc">报价截止时间:</span>
-                        <div ng-bind="::inquiryItem.inquiry.endDate | date:'yyyy-MM-dd'"></div>
-                    </div>
-                    <div class="col-xs-4">
-                    </div>
-                    <div class="col-xs-12">
-                        <div class="tender-desc">附件:</div>
-                        <div ng-if="inquiryItem.inquiry.attachs" class="col-xs-10">
-                            <a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
-                        </div>
-                        <div ng-if="inquiryItem.inquiry.attachs == 0" class="col-xs-10" style="color: #959595;">无</div>
-                    </div>
-                </div>
-				<div class="title-div" style="border-bottom: 1px dotted #327ebe;">
-                    <span>物料信息</span>&nbsp;
-                    <span style="color: rgb(211,37,38);">*</span>
-                </div>
-                <div class="row base-info">
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">原厂型号:</div>
-                        <div ng-bind="::inquiryItem.product.cmpCode"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">品牌:</div>
-                        <div ng-bind="::inquiryItem.product.brand"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">物料规格:</div>
-                        <div ng-bind="::inquiryItem.product.spec"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">物料名称:</div>
-                        <div ng-bind="::inquiryItem.product.title"></div>
-                    </div>
-                    <div class = "col-xs-4">
-                        <div class="tender-desc">单位:</div>
-                        <div ng-bind="::inquiryItem.product.unit"></div>
-                    </div>
-                    <div class="col-xs-4">
-                        <span class="tender-desc">数量:</span>
-                        <div ng-bind="::inquiryItem.needquantity"></div>
-                    </div>
-                   <!--  <div class="col-xs-4">
-                    	<span class="tender-desc">开始时间:</span>
-                        <div ng-bind="::inquiryItem.fromDate| date:'yyyy-MM-dd'"></div>
-                    </div>
-                    <div class="col-xs-4">
-                    	<span class="tender-desc">截止时间:</span>
-                        <div ng-bind="::inquiryItem.toDate| date:'yyyy-MM-dd'"></div>
-                    </div> -->
-                </div>
-                <div class="col-xs-12" style="padding: 50px 0;">
-                    <div ng-show="!currentHasBid" class="col-xs-2 pull-right btn-publish">
-                        <button class="btn" ng-click="transtoInquiry(inquiryItem.id)" ng-disabled="enterprise.uu == inquiryItem.inquiry.enterprise.uu || nowdate > inquiryItem.toDate" ng-hide="inquiryItem.overdue == 1" title="如果询价单已过期,将无法进入报价">我要报价</button>
-                    </div>
-                    <div class="col-xs-2 pull-right btn-disabled" ng-show="currentHasBid">
-                        <button class="btn" ng-disabled="disabled">已转报价</button>
-                    </div>
-                    <div class="pull-right a-detail" ng-show="currentHasBid">
-                        <a ui-sref="sale.pubinquiry_detail({id:id})" target="_self" title="点击查看详情">>>查看详情</a>
-                    </div>
-                </div>
-            </div>
+<!--<div class="ng-scope" style="width: 1170px; margin-left: -240px;">-->
+    <!--<form name="tenderForm">-->
+        <!--<div class="purc-tender">-->
+            <!--<div class="pub-com_head">-->
+                <!--<span>公共询价单</span>-->
+                <!--<div class="p-right">-->
+                    <!--<span class="fr"><em class="ng-binding">录入人:{{::inquiryItem.inquiry.recorder}}</em><time class="ng-binding">日期:{{::inquiryItem.inquiry.date | date :'yyyy-MM-dd HH:mm'}}</time></span>-->
+                <!--</div>-->
+            <!--</div>-->
+            <!--<div class="tender-content ng-scope">-->
+                <!--<div class="title-div" style="border-bottom: 1px dotted #327ebe;">-->
+                    <!--<span>询价信息</span>&nbsp;-->
+                    <!--<span style="color: rgb(211,37,38);">*</span>-->
+                <!--</div>-->
+                <!--<div class="row base-info">-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">询价编号:</div>-->
+                        <!--<div ng-bind="::inquiryItem.inquiry.code"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">询价企业:</div>-->
+                        <!--<div ng-bind="::inquiryItem.inquiry.enterprise.enName"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">联系人:</div>-->
+                        <!--<div ng-bind="::inquiryItem.inquiry.recorder"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">联系电话:</div>-->
+                        <!--<div ng-bind="::inquiryItem.inquiry.userBaseInfo.userTel"></div>-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-4">-->
+                        <!--<span class="tender-desc">报价截止时间:</span>-->
+                        <!--<div ng-bind="::inquiryItem.inquiry.endDate | date:'yyyy-MM-dd'"></div>-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-4">-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-12">-->
+                        <!--<div class="tender-desc">附件:</div>-->
+                        <!--<div ng-if="inquiryItem.inquiry.attachs" class="col-xs-10">-->
+                            <!--<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>-->
+                        <!--</div>-->
+                        <!--<div ng-if="inquiryItem.inquiry.attachs == 0" class="col-xs-10" style="color: #959595;">无</div>-->
+                    <!--</div>-->
+                <!--</div>-->
+				<!--<div class="title-div" style="border-bottom: 1px dotted #327ebe;">-->
+                    <!--<span>物料信息</span>&nbsp;-->
+                    <!--<span style="color: rgb(211,37,38);">*</span>-->
+                <!--</div>-->
+                <!--<div class="row base-info">-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">原厂型号:</div>-->
+                        <!--<div ng-bind="::inquiryItem.product.cmpCode"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">品牌:</div>-->
+                        <!--<div ng-bind="::inquiryItem.product.brand"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">物料规格:</div>-->
+                        <!--<div ng-bind="::inquiryItem.product.spec"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">物料名称:</div>-->
+                        <!--<div ng-bind="::inquiryItem.product.title"></div>-->
+                    <!--</div>-->
+                    <!--<div class = "col-xs-4">-->
+                        <!--<div class="tender-desc">单位:</div>-->
+                        <!--<div ng-bind="::inquiryItem.product.unit"></div>-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-4">-->
+                        <!--<span class="tender-desc">数量:</span>-->
+                        <!--<div ng-bind="::inquiryItem.needquantity"></div>-->
+                    <!--</div>-->
+                   <!--&lt;!&ndash;  <div class="col-xs-4">-->
+                    	<!--<span class="tender-desc">开始时间:</span>-->
+                        <!--<div ng-bind="::inquiryItem.fromDate| date:'yyyy-MM-dd'"></div>-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-4">-->
+                    	<!--<span class="tender-desc">截止时间:</span>-->
+                        <!--<div ng-bind="::inquiryItem.toDate| date:'yyyy-MM-dd'"></div>-->
+                    <!--</div> &ndash;&gt;-->
+                <!--</div>-->
+                <!--<div class="col-xs-12" style="padding: 50px 0;">-->
+                    <!--<div ng-show="!currentHasBid" class="col-xs-2 pull-right btn-publish">-->
+                        <!--<button class="btn" ng-click="transtoInquiry(inquiryItem.id)" ng-disabled="enterprise.uu == inquiryItem.inquiry.enterprise.uu || nowdate > inquiryItem.toDate" ng-hide="inquiryItem.overdue == 1" title="如果询价单已过期,将无法进入报价">我要报价</button>-->
+                    <!--</div>-->
+                    <!--<div class="col-xs-2 pull-right btn-disabled" ng-show="currentHasBid">-->
+                        <!--<button class="btn" ng-disabled="disabled">已转报价</button>-->
+                    <!--</div>-->
+                    <!--<div class="pull-right a-detail" ng-show="currentHasBid">-->
+                        <!--<a ui-sref="sale.pubinquiry_detail({id:id})" target="_self" title="点击查看详情">>>查看详情</a>-->
+                    <!--</div>-->
+                <!--</div>-->
+            <!--</div>-->
+        <!--</div>-->
+    <!--</form>-->
+<!--</div>-->
+
+<style>
+    .detail{
+        width: 1170px;
+        margin-left: -240px;
+        background: #fff;
+        padding:30px 20px;
+    }
+    .detail .top{
+        position:relative;
+        margin-bottom:30px;
+    }
+    .detail .top h3{
+        font-size: 20px;
+        color:#54a9f0;
+        text-align: center;
+        margin:0;
+    }
+    .detail .top .top-right{
+        position:absolute;
+        top:3px;
+        right:0;
+        color:#999;
+    }
+    .detail .top .top-right span{
+        font-size:14px;
+        margin-left:10px;
+    }
+    .detail .top .top-right span em{
+        font-style:normal;
+    }
+    .detail .middle{
+        border-top:1px solid #e5e5e5;
+        padding-top:40px;
+        padding-bottom:40px;
+    }
+    .detail .middle ul li{
+        width:33%;
+        height:60px;
+        vertical-align:top;
+    }
+    .detail .middle ul li span{
+        display:inline-block;
+        width:25%;
+        color:#333;
+        font-size: 14px;
+        font-weight: bold;
+    }
+    .detail .middle ul li em{
+        display:inline-block;
+        width:75%;
+        vertical-align: top;
+        color:#999;
+        font-size: 14px;
+        font-style: normal;
+    }
+    .detail table{
+        border:1px solid #dcdcdc;
+        table-layout: fixed;
+    }
+    .detail table thead th{
+        background: #ebf5fe;
+        font-weight: bold;
+        font-size: 14px;
+        color:#333;
+        padding-left:10px;
+    }
+    .detail table thead th:before{
+        content:'';
+        display:inline-block;
+        position:relative;
+        left:-11px;
+        top:2px;
+        width:1px;
+        height:16px;
+        border-left: 1px solid #dcdcdc;
+    }
+    .detail table tr td{
+        padding-top:20px;
+        padding-bottom:30px;
+        word-break:break-all;
+    }
+    .detail table td a{
+        font-size: 14px;
+        color:#54a9f0;
+    }
+    .detail table td a:hover{
+        text-decoration: underline;
+        cursor:pointer;
+    }
+    .detail table td>span{
+        font-size: 14px;
+        color:#999;
+    }
+    .detail .footer{
+        padding-top:20px;
+        text-align: center;
+    }
+    .detail .footer button{
+        background: #327ebe;
+        color:#fff;
+    }
+</style>
+<div class="detail">
+    <div class="top">
+        <h3>客户公共询价单</h3>
+        <div class="top-right">
+            <span>日期:<em>{{::inquiryItem.inquiry.date | date :'yyyy-MM-dd HH:mm'}}</em></span>
+            <span>报价单号:<em ng-bind="::inquiryItem.inquiry.code">2017-11-11</em></span>
         </div>
         </div>
-    </form>
+    </div>
+    <div class="middle">
+        <ul class="list-inline">
+            <li>
+                <span>询价企业</span><em ng-bind="::inquiryItem.inquiry.enterprise.enName"></em>
+            </li>
+            <li>
+                <span>联系人&nbsp;</span><em ng-bind="::inquiryItem.inquiry.recorder"></em>
+            </li>
+            <li>
+                <span>联系电话</span><em ng-bind="::inquiryItem.inquiry.userBaseInfo.userTel"></em>
+            </li>
+            <li>
+                <span>企业地址</span><em ng-bind="::inquiryItem.inquiry.ship"></em>
+            </li>
+            <li>
+                <span>报价截止</span><em ng-bind="::inquiryItem.inquiry.endDate | date:'yyyy-MM-dd'"></em>
+            </li>
+        </ul>
+    </div>
+    <table class="table">
+        <thead>
+        <tr>
+            <th>产品名称</th>
+            <th>产品型号</th>
+            <th>品牌</th>
+            <th>产品规格</th>
+            <th width="90">单位</th>
+            <th width="90">数量</th>
+            <th>图纸/备注</th>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+            <td><span ng-bind="::inquiryItem.product.title"></span></td>
+            <td><span ng-bind="::inquiryItem.product.code"></span></td>
+            <td><span ng-bind="::inquiryItem.product.brand"></span></td>
+            <td><span ng-bind="::inquiryItem.product.spec"></span></td>
+            <td><span ng-bind="::inquiryItem.product.unit"></span></td>
+            <td><span ng-bind="::inquiryItem.needquantity"></span></td>
+            <td>
+                <a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
+                <span ng-if="inquiryItem.inquiry.attachs == 0" >无</span>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    <div class="footer">
+        <button class="btn">我要报价</button>
+    </div>
 </div>
 </div>

+ 1 - 1
src/main/webapp/resources/tpl/index/baseInfo/inquiry_list.html

@@ -397,7 +397,7 @@
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.needquantity"></td>
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.needquantity"></td>
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.inquiry.enterprise.enName"><a></a></td>
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.inquiry.enterprise.enName"><a></a></td>
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.inquiry.endDate| date: 'yyyy-MM-dd'"></td>
                                         <td ng-click="toDetail(inquiryItem.id)" title="查看详情" ng-bind="inquiryItem.inquiry.endDate| date: 'yyyy-MM-dd'"></td>
-                                        <td><a class="offer" ng-click="transtoInquiry(inquiryItem.id)">我要报价</a></td>
+                                        <td><a class="offer" ng-click="transtoInquiry(inquiryItem)">我要报价</a></td>
                                     </tr>
                                     </tr>
                                </tbody>
                                </tbody>
                                <tbody ng-if="active == 'teams'">
                                <tbody ng-if="active == 'teams'">

+ 236 - 0
src/main/webapp/resources/tpl/index/baseInfo/modal/quotation_modal.html

@@ -0,0 +1,236 @@
+<style>
+    .modal-dialog{
+        position: fixed;
+        top: 23%;
+        left: 50%;
+        margin: -150px 0 0 -195px;
+    }
+    .modal-content{
+        width: 700px;
+        min-height: 420px;
+    }
+    .modal-header {
+        width: 100%;
+        height: 39px;
+        text-align: left;
+        background: #fff;
+        border-top-left-radius: 6px;
+        border-top-right-radius: 6px;
+    }
+    .modal-header span{
+        padding-left: 18px;
+        font-size: 14px;
+        color: #323232;
+        font-weight: bold;
+    }
+    .modal-body{
+        padding:30px 25px 10px 25px;
+        margin-left: 15px;
+    }
+    .modal-add{
+        background: #f5f5f5;
+        margin-left: 0;
+        padding: 20px 20px 20px 40px;
+    }
+    .modal-add i{
+        position: absolute;
+        top: 4px;
+        right: 0;
+        display: block;
+        width: 30px;
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+        font-size: 20px;
+    }
+    .modal-body .modal-file{
+        margin-left:-15px;
+    }
+    .modal-body .modal-file span{
+        font-size: 14px;
+        color:#999;
+    }
+    .modal-body .modal-file a{
+        color:#5078Cb;
+    }
+    .modal-body .modal-file a:hover{
+        cursor:pointer;
+        text-decoration: underline;
+    }
+    .modal-body .form-horizontal{
+        padding-left:0;
+    }
+    .modal-body .form-group{
+        margin:0 0 15px 0;
+    }
+    .modal-body .control-label{
+        text-align:left;
+        padding:0;
+        padding-top:7px;
+    }
+    .modal-body .bottom{
+        padding-top:10px;
+    }
+    .modal-body .bottom a{
+        display:inline-block;
+        color:#5078Cb;
+        font-size: 14px;
+        margin-bottom:15px;
+        text-decoration: none;
+    }
+    .modal-body .bottom a:hover{
+        cursor:pointer;
+        text-decoration: underline;
+    }
+    .modal-body .bottom a i{
+        margin-right:10px;
+    }
+    .modal-footer{
+        border-top: none;
+    }
+    .modal-footer button{
+        display: inline-block;
+        width: 80px;
+        height: 32px;
+        font-size: 14px;
+        background: #fff;
+        color:#5078Cb;
+        text-align: center;
+        text-decoration: none;
+        border-radius: 4px;
+        border:1px solid #5078Cb;
+        outline: none;
+        margin-right: 10px;
+    }
+    .modal-footer button:last-child{
+        background: #fff;
+        border:1px solid #d2d2d2;
+        color:#666;
+    }
+    .modal-footer button:hover{
+        background: #3578ba;
+        color:#fff;
+        border:1px solid #5078Cb;
+    }
+    .modal-footer span{
+        color:#999;
+        margin-right:10px;
+    }
+</style>
+<div class="modal-header">
+    <span>报价详情</span>
+</div>
+<div class="modal-body">
+    <div class="row">
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail3" class="col-xs-4 control-label">最小订购</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail3" placeholder="1000" ng-model="inquiryItem.minOrderQty">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail1" class="col-xs-4 control-label">最小包装</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail1" placeholder="1000" ng-model="inquiryItem.minPackQty">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail2" class="col-xs-4 control-label">交货周期(天)</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail2" placeholder="20" ng-model="inquiryItem.leadtime">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label class="col-xs-4 control-label">币种(选择)</label>
+                <div class="col-xs-8">
+                    <select name="" id="" class="form-control" inquiryItem="inquiryItem.currency">
+                        <option value="RMB">RMB</option>
+                        <option value="YEN">YEN</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail4" class="col-xs-4 control-label">税率(%)</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail4" placeholder="10" ng-model="inquiryItem.taxrate">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail5" class="col-xs-4 control-label">供应商型号</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail5" placeholder="1000">
+                </div>
+            </div>
+        </div>
+        <div ng-repeat="reply in inquiryItem.replies">
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputEmail6" class="col-xs-4 control-label">分段数量<span ng-bind="$index + 1" ng-if="inquiryItem.replies.length > 1"></span></label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputEmail6" ng-model="reply.lapQty">
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputEmail7" class="col-xs-4 control-label">价格<span ng-bind="$index + 1" ng-if="inquiryItem.replies.length > 1"></span></label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputEmail7" ng-model="reply.price">
+                    </div>
+                </div>
+            </div>
+            <a ng-click="removeStep(inquiryItem, $index)" ng-if="!$first"><i class="fa fa-trash"></i></a>
+        </div>
+</div>
+<div class="modal-body modal-add">
+    <div class="row" >
+        <div style="position:relative;" ng-repeat="">
+            <i class="fa fa-trash"></i>
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputNum1" class="col-xs-4 control-label">分段数量</label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputNum1">
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputNum2" class="col-xs-4 control-label">价格</label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputNum2">
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="modal-file" ng-if="inquiryItem.attaches.length > 0" ng-repeat="attach in inquiryItem.attaches">
+        <span>附件:</span><a href="attach.path" ng-bind="attach.name"></a>
+    </div>
+</div>
+<div class="modal-body">
+    <div class="bottom">
+        <a ng-click="addStep(inquiryItem)"><i class="fa fa-plus"></i>增加分段数量和分段报价</a>
+        <br/>
+        <a href=""><i class="fa fa-plus"></i>添加附件</a>
+        <input type="file" ng-file-select name="file" ng-model="myFiles">
+    </div>
+</div>
+<div class="modal-footer">
+    <span>确认报价后,将无法修改</span>
+    <button ng-click="save(inquiryItem, 'reply')">确认报价</button>
+    <button ng-click="save(inquiryItem, 'save')">保存</button>
+    <button ng-click="cancel()">取消</button>
+</div>
+</div>

+ 237 - 0
src/main/webapp/resources/tpl/index/sale/modal/quote_inquiry.html

@@ -0,0 +1,237 @@
+<style>
+    .modal-dialog{
+        position: fixed;
+        top: 23%;
+        left: 50%;
+        margin: -150px 0 0 -195px;
+    }
+    .modal-content{
+        width: 700px;
+        min-height: 420px;
+    }
+    .modal-header {
+        width: 100%;
+        height: 39px;
+        text-align: left;
+        background: #fff;
+        border-top-left-radius: 6px;
+        border-top-right-radius: 6px;
+    }
+    .modal-header span{
+        padding-left: 18px;
+        font-size: 14px;
+        color: #323232;
+        font-weight: bold;
+    }
+    .modal-body{
+        padding:30px 25px 10px 25px;
+        margin-left: 15px;
+    }
+    .modal-add{
+        background: #f5f5f5;
+        margin-left: 0;
+        padding: 20px 20px 20px 40px;
+    }
+    .modal-add i{
+        position: absolute;
+        top: 4px;
+        right: 0;
+        display: block;
+        width: 30px;
+        text-align: center;
+        height: 30px;
+        line-height: 30px;
+        font-size: 20px;
+    }
+    .modal-body .modal-file{
+        margin-left:-15px;
+    }
+    .modal-body .modal-file span{
+        font-size: 14px;
+        color:#999;
+    }
+    .modal-body .modal-file a{
+        color:#5078Cb;
+    }
+    .modal-body .modal-file a:hover{
+        cursor:pointer;
+        text-decoration: underline;
+    }
+    .modal-body .form-horizontal{
+        padding-left:0;
+    }
+    .modal-body .form-group{
+        margin:0 0 15px 0;
+    }
+    .modal-body .control-label{
+        text-align:left;
+        padding:0;
+        padding-top:7px;
+    }
+    .modal-body .bottom{
+        padding-top:10px;
+    }
+    .modal-body .bottom a{
+        display:inline-block;
+        color:#5078Cb;
+        font-size: 14px;
+        margin-bottom:15px;
+        text-decoration: none;
+    }
+    .modal-body .bottom a:hover{
+        cursor:pointer;
+        text-decoration: underline;
+    }
+    .modal-body .bottom a i{
+        margin-right:10px;
+    }
+    .modal-footer{
+        border-top: none;
+    }
+    .modal-footer button{
+        display: inline-block;
+        width: 80px;
+        height: 32px;
+        font-size: 14px;
+        background: #fff;
+        color:#5078Cb;
+        text-align: center;
+        text-decoration: none;
+        border-radius: 4px;
+        border:1px solid #5078Cb;
+        outline: none;
+        margin-right: 10px;
+    }
+    .modal-footer button:last-child{
+        background: #fff;
+        border:1px solid #d2d2d2;
+        color:#666;
+    }
+    .modal-footer button:hover{
+        background: #3578ba;
+        color:#fff;
+        border:1px solid #5078Cb;
+    }
+    .modal-footer span{
+        color:#999;
+        margin-right:10px;
+    }
+</style>
+<div class="modal-header">
+    <button type="button" class="close" ng-click="cancel()"><b>&times;</b></button>
+    <span>报价详情</span>
+</div>
+<div class="modal-body">
+    <div class="row">
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail3" class="col-xs-4 control-label">最小订购</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail3" placeholder="1000" ng-model="inquiryItem.minOrderQty">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail1" class="col-xs-4 control-label">最小包装</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail1" placeholder="1000" ng-model="inquiryItem.minPackQty">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail2" class="col-xs-4 control-label">交货周期(天)</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail2" placeholder="20" ng-model="inquiryItem.leadtime">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label class="col-xs-4 control-label">币种(选择)</label>
+                <div class="col-xs-8">
+                    <select name="" id="" class="form-control" inquiryItem="inquiryItem.currency">
+                        <option value="RMB">RMB</option>
+                        <option value="YEN">YEN</option>
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail4" class="col-xs-4 control-label">税率(%)</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail4" placeholder="10" ng-model="inquiryItem.taxrate">
+                </div>
+            </div>
+        </div>
+        <div class="col-xs-6 form-horizontal">
+            <div class="form-group">
+                <label for="inputEmail5" class="col-xs-4 control-label">供应商型号</label>
+                <div class="col-xs-8">
+                    <input type="text" class="form-control" id="inputEmail5" placeholder="1000">
+                </div>
+            </div>
+        </div>
+        <div ng-repeat="reply in inquiryItem.replies">
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputEmail6" class="col-xs-4 control-label">分段数量<span ng-bind="$index + 1" ng-if="inquiryItem.replies.length > 1"></span></label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputEmail6" ng-model="reply.lapQty">
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-6 form-horizontal">
+                <div class="form-group">
+                    <label for="inputEmail7" class="col-xs-4 control-label">价格<span ng-bind="$index + 1" ng-if="inquiryItem.replies.length > 1"></span></label>
+                    <div class="col-xs-8">
+                        <input type="text" class="form-control" id="inputEmail7" ng-model="reply.price">
+                    </div>
+                </div>
+            </div>
+            <a ng-click="removeStep(inquiryItem, $index)" ng-if="!$first"><i class="fa fa-trash"></i></a>
+        </div>
+    </div>
+    <div class="modal-body modal-add">
+        <div class="row" >
+            <div style="position:relative;" ng-repeat="">
+                <i class="fa fa-trash"></i>
+                <div class="col-xs-6 form-horizontal">
+                    <div class="form-group">
+                        <label for="inputNum1" class="col-xs-4 control-label">分段数量</label>
+                        <div class="col-xs-8">
+                            <input type="text" class="form-control" id="inputNum1">
+                        </div>
+                    </div>
+                </div>
+                <div class="col-xs-6 form-horizontal">
+                    <div class="form-group">
+                        <label for="inputNum2" class="col-xs-4 control-label">价格</label>
+                        <div class="col-xs-8">
+                            <input type="text" class="form-control" id="inputNum2">
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="modal-file" ng-if="inquiryItem.attaches.length > 0" ng-repeat="attach in inquiryItem.attaches">
+            <span>附件:</span><a href="attach.path" ng-bind="attach.name"></a>
+        </div>
+    </div>
+    <div class="modal-body">
+        <div class="bottom">
+            <a ng-click="addStep(inquiryItem)"><i class="fa fa-plus"></i>增加分段数量和分段报价</a>
+            <br/>
+            <a href=""><i class="fa fa-plus"></i>添加附件</a>
+            <input type="file" ng-file-select name="file" ng-model="myFiles">
+        </div>
+    </div>
+    <div class="modal-footer">
+        <span>确认报价后,将无法修改</span>
+        <button ng-click="save(inquiryItem, 'reply')">确认报价</button>
+        <button ng-click="save(inquiryItem, 'save')">保存</button>
+        <button ng-click="cancel()">取消</button>
+    </div>
+</div>

+ 389 - 209
src/main/webapp/resources/tpl/index/sale/pubinquiry.html

@@ -87,6 +87,35 @@
 	.order-table .order-bd .product {
 	.order-table .order-bd .product {
 		padding-left: 20px;
 		padding-left: 20px;
 	}
 	}
+	.order-table .order-bd .product .dropdown-toggle span{
+		color:#333;
+	}
+	.order-table .order-bd .product .dropdown-toggle{
+		position:relative;
+		display:inline-block;
+		color:#333;
+	}
+	.order-table .order-bd .product .dropdown-toggle:hover{
+		text-decoration: none;
+		cursor:pointer;
+	}
+	.order-table .order-bd .product .dropdown-toggle:hover span{
+		text-decoration: none;
+		color:#327ebe;
+	}
+	.order-table .order-bd .product .dropdown-toggle i{
+		position:relative;
+		top:-3px;
+		color:#c8c8c8;
+	}
+	.order-table .order-bd .product .dropdown-toggle:hover i{
+		text-decoration: none;
+		color:#000;
+	}
+	.order-table .order-bd .product .dropdown-toggle:hover .dropdown-menu{
+		display:block;
+		margin:0;
+	}
 
 
 	.input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
 	.input-xs,.input-group-xs>.form-control,.input-group-xs>.input-group-addon,.input-group-xs>.input-group-btn>.btn
 	{
 	{
@@ -136,6 +165,22 @@
 	}
 	}
 </style>
 </style>
 <link rel="stylesheet" href="static/css/public.css">
 <link rel="stylesheet" href="static/css/public.css">
+<style>
+	.order-table .order-bd .pane-body span{
+		font-size: 14px;
+		color:#333;
+	}
+	.order-table .order-bd .pane-body em{
+		font-size: 14px;
+		color:#999;
+		font-style:normal;
+	}
+	.order-table .order-bd td span{
+		font-size: 14px;
+		color:#999;
+		font-style:normal;
+	}
+</style>
 <div class="block" id="public">
 <div class="block" id="public">
 	<div class="loading in" ng-class="{'in': loading}">
 	<div class="loading in" ng-class="{'in': loading}">
 		<i></i>
 		<i></i>
@@ -247,22 +292,20 @@
 	<table class="order-table block" ng-table="tableParams">
 	<table class="order-table block" ng-table="tableParams">
 		<thead>
 		<thead>
 		<tr class="header">
 		<tr class="header">
-			<th>产品</th>
-			<th width="60">单位</th>
-			<th width="110"><span class="text-default">≥</span>分段数</th>
+			<th>产品型号</th>
+			<th width="160">品牌</th>
+			<th width="110">分段数量</th>
 			<th width="90">价格</th>
 			<th width="90">价格</th>
-			<th width="80">最小订购</th>
-			<th width="80">最小包装</th>
-			<th width="120">有效期</th>
+			<th width="160">最小订购/包装</th>
 			<th width="75">操作</th>
 			<th width="75">操作</th>
 		</tr>
 		</tr>
 		<tr class="sep-row">
 		<tr class="sep-row">
-			<td colspan="7"></td>
+			<td colspan="6"></td>
 		</tr>
 		</tr>
 		</thead>
 		</thead>
 		<tbody ng-if="tableParams.total() == 0">
 		<tbody ng-if="tableParams.total() == 0">
 		<tr>
 		<tr>
-			<td colspan="7">
+			<td colspan="6">
 				<div class="row text-muted info-container" style="padding: 50px 10px;">
 				<div class="row text-muted info-container" style="padding: 50px 10px;">
 					<div class="col-md-4 text-center">
 					<div class="col-md-4 text-center">
 						<br>
 						<br>
@@ -297,24 +340,18 @@
 		</tbody>
 		</tbody>
 		<tbody ng-repeat="inquiryItem in $data track by inquiryItem.id">
 		<tbody ng-repeat="inquiryItem in $data track by inquiryItem.id">
 		<tr class="order-hd">
 		<tr class="order-hd">
-			<td class="first" colspan="4">
+			<td class="first" colspan="2">
 				<div class="order-main">
 				<div class="order-main">
-						<!--<span> <input type="checkbox" class="selector"
-									  ng-model="inquiryItem.$selected">
-						</span> -->
-					<a href="javascript:void(0)" ng-if="!isUnread(inquiryItem.id)">
-						<i class="fa fa-circle-thin"></i>
-					</a>
-					<a href="javascript:void(0)" ng-if="isUnread(inquiryItem.id)">
-						<i class="fa fa-circle" style="color: #f40;"></i>
-					</a>
-					&nbsp;&nbsp;<span class="text-num text-bold" title="{{inquiryItem.inquiry.date}}"
-									  ng-bind="::inquiryItem.inquiry.date | date:'yyyy-MM-dd'"></span>
-					<span
-							ng-bind="::inquiryItem.inquiry.enterprise.enName"></span>
-					<span>流水号:<a title="查看详情"
-						class="text-num order-detail" ng-bind="::inquiryItem.inquiry.code" ui-sref="sale.pubinquiry_detail({id:inquiryItem.inquiry.id})" target="_self"
-						ng-click="setOrdersRead(inquiryItem.id)"></a>
+					<span class="text-num text-bold" title="{{inquiryItem.inquiry.date}}"
+						  ng-bind="::inquiryItem.inquiry.date | date:'yyyy-MM-dd'"></span>
+					<span ng-bind="::inquiryItem.inquiry.enterprise.enName"></span>
+					<span>流水号:
+						<a title="查看详情"
+						   class="text-num order-detail"
+						   ng-bind="::inquiryItem.inquiry.code"
+						   ui-sref="sale.pubinquiry_detail({id:inquiryItem.inquiry.id})"
+						   target="_self"
+						   ng-click="setOrdersRead(inquiryItem.id)"></a>
 					</span>
 					</span>
 				</div>
 				</div>
 			</td>
 			</td>
@@ -322,193 +359,63 @@
 				币别:<span ng-bind="::(isUser?'-':inquiryItem.currency)"></span>
 				币别:<span ng-bind="::(isUser?'-':inquiryItem.currency)"></span>
 			</td>
 			</td>
 			<td>
 			<td>
-				税率:<input  type="text" ng-pattern="/^\+?[1-9]\d*$/" ng-model="inquiryItem.taxrate" style="width: 25px" ng-readonly="!inquiryItem.$editing">%
+				税率:<span>17</span>%
 			</td>
 			</td>
-			<td class="text-right" colspan="1" class="order-sum">
+			<td class="text-right" colspan="2" class="order-sum">
 				<div ng-if="inquiryItem.replyable">
 				<div ng-if="inquiryItem.replyable">
 					<span class="text-inverse text-bold" ng-bind="::inquiryItem.inquiry.endDate | timespan"></span>
 					<span class="text-inverse text-bold" ng-bind="::inquiryItem.inquiry.endDate | timespan"></span>
-					<span class="text-muted">后截止报价</span>
-				</div>
-			</td>
-			<td class="text-center">
-				<div class="">
-					类型: <span ng-bind="::inquiryItem.inquiry.inquirytype || '无'"></span>
+					<span class="text-muted" style="margin-right:35px;">后截止报价</span>
 				</div>
 				</div>
 			</td>
 			</td>
 		</tr>
 		</tr>
 		<tr class="order-bd">
 		<tr class="order-bd">
 			<td class="product">
 			<td class="product">
-				<div class="text-num text-bold" ng-bind="::inquiryItem.product.code"></div>
-				<div ng-bind="::inquiryItem.product.title"></div>
-				<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>
-				<div ng-if="::inquiryItem.brand && !inquiryItem.$editing" class="text-muted">
-					品牌:<span ng-bind="::inquiryItem.brand"></span>
-				</div>
-				<div ng-if="::inquiryItem.vendorprodcode && !inquiryItem.$editing" class="text-muted">
-					供应商物料编号:<span ng-bind="::inquiryItem.vendorprodcode"></span>
-				</div>
-				<div ng-if="::inquiryItem.needquantity" class="text-num text-bold">
-					需求数量:<span ng-bind="::inquiryItem.needquantity"></span>
-				</div>
-				<div ng-show="inquiryItem.remark">
-					备注:{{::inquiryItem.remark}}
-				</div>
-				<div ng-if="inquiryItem.inquiry.attachs.length" class="text-muted">
-					<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>
-				</div>
-				<div ng-if="inquiryItem.attaches.length" class="text-muted">
-					<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>报价附件:
-					<div ng-repeat="attach in inquiryItem.attaches">
-						<a class="file" href="file/{{attach.id}}">{{::attach.name}}&nbsp;</a>
-						<a ng-show="inquiryItem.$editing" ng-click="deleteAttach(inquiryItem.attaches, $index)" title="删除附件"><i class="fa fa-trash-o fa-lg"></i></a>
-					</div>
-				</div>
-				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">
-					<input type="text" class="form-control input-xs"
-						   ng-model="inquiryItem.brand" placeholder="物料品牌">
-				</div>
-				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">
-					<input type="text" class="form-control input-xs"
-						   ng-model="inquiryItem.vendorprodcode" placeholder="供应商物料编号">
-				</div>
-				<div class="form-group" ng-if="inquiryItem.$editing" style="width: 220px;">
-					<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.leadtime,'leadtime')" ng-pattern="/^\+?[1-9]\d*$/"
-						   ng-model="inquiryItem.leadtime" placeholder="交货周期(确切天数)" style="display: inline-block;width: 180px;">
-					<span ng-if="!inquiryItem.leadtime" class="text-inverse"> 必填*</span>
-					<div style="margin-left: 50px;"class="text-bold text-inverse" ng-show="!leadtimeVerify">请填数字!</div>
-				</div>
-				<div class="input-group form-group" ng-if="inquiryItem.$editing" style="width: 300px;">
-					<div class="input-group-addon">上传附件:</div>
-					<input type="file" ng-model="inquiryItem.myFiles" ng-file-select
-						   ng-multiple="false" class="form-control input-sm input-group" name="file">
-				</div>
-			</td>
-			<td class="text-center">
-				<span ng-bind="::inquiryItem.product.unit"></span>
-			</td>
-			<td class="text-center">
-				<div ng-show="!inquiryItem.$editing">
-					<div ng-repeat="reply in inquiryItem.replies">
-						<span ng-bind="reply.lapQty"></span>
-					</div>
-				</div>
-				<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
-					<div ng-repeat="reply in inquiryItem.replies">
-						<div class="form-group input-group input-group-xs">
-							<input type="text" class="form-control input-xs" ng-class="{'input-error': !replylapQtys[$index]}"  ng-change="verifylapQty(reply.lapQty,$index, inquiryItem)"
-								   ng-model="reply.lapQty" min="{{$index == 0 ? 0 :(inquiryItem.replies[$index - 1].lapQty + 1)}}" ng-pattern="/^\+?[1-9]\d*$/"
-								   ng-Readonly="$index == 0"  placeholder="数量" />
-								   <span class="input-group-btn" ng-show="$index != 0">
-									<button class="btn btn-default" type="button"
-											ng-click="removeStep(inquiryItem, $index)">
-										<i class="fa fa-trash-o"></i>
-									</button>
-								</span>
-						</div>
-						<div class="text-bold text-inverse" style="margin-top:-15px" ng-show="!replylapQtys[$index]">分段数量递增!</div>
-					</div>
-					<a ng-click="addStep(inquiryItem)" class="btn btn-default btn-xs"
-					   ng-show="!inquiryItem.custLap">添加分段</a>
-				</div>
-			</td>
-			<td class="text-center br-l">
-				<div ng-show="!inquiryItem.$editing">
-					<div ng-repeat="reply in inquiryItem.replies">
-						<span ng-bind="isUser?'':(reply.price | number:6)"></span> <span
-							ng-show="reply.price == null || isUser" class="text-muted">-</span>
-					</div>
-					<div class="dropdown">
-						<a href="javascript:void(0);" class="dropdown-toggle text-default"
-						   ng-mouseover="getHistory(inquiryItem)">历史报价<i
-								class="fa fa-fw fa-angle-down"></i></a>
+				<div class="text-num text-bold">
+					<a class="dropdown-toggle"
+					   ng-mouseover="getHistory(inquiryItem)">
+						<span ng-bind="::inquiryItem.product.code"></span>
+						<i class="fa fa-fw fa-sort-desc"></i>
 						<div class="dropdown-menu pane" style="width: 270px;">
 						<div class="dropdown-menu pane" style="width: 270px;">
 							<div class="pane-body">
 							<div class="pane-body">
-								<ul class="list-unstyled list-menu">
-									<li ng-repeat="historyItem in ::inquiryItem.history">
-										<div ng-class="{'text-inverse': $index==0}">
-											<div class="row row-sm"
-												 ng-repeat="historyReply in historyItem.replies">
-												<div class="col-xs-5">≥{{historyReply.lapQty}}</div>
-												<div class="col-xs-5">价格{{historyReply.price | number:6}}</div>
-											</div>
-										</div>
-										<div class="text-muted">{{historyItem.inquiry.date |
-											date:'yyyy-MM-dd'}}{{historyItem.inquiry.enterprise.enName}}
-										</div>
-									</li>
-								</ul>
-								<div ng-show="!inquiryItem.history || inquiryItem.history.length == 0"
-										class="text-center text-muted">暂无历史报价</div>
+								<div>
+									<div>
+										<span>产品规格:</span>
+										<em ng-bind="::inquiryItem.product.spec"></em>
+									</div>
+									<div>
+										<span>产品名称:</span>
+										<em ng-bind="::inquiryItem.product.title"></em>
+									</div>
+								</div>
+								<div ng-show="!inquiryItem.product.spec && !inquiryItem.product.title"
+									 class="text-center text-muted">暂无产品信息</div>
 							</div>
 							</div>
 						</div>
 						</div>
-					</div>
-				</div>
-				<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
-					<div ng-repeat="reply in inquiryItem.replies">
-						<div class="form-group">
-							<input type="text" class="form-control input-xs " ng-class="{'input-error': !replyPrices[$index]}" ng-model="reply.price"
-								   ng-change="verify(reply.price,$index)" placeholder="单价(必填)" ng-init="reply.price = isUser?'-':reply.price"/>
-							<div class="text-bold text-inverse" style="margin-bottom:-15px" ng-show="!replyPrices[$index]">请填数字!</div>
-						</div>
-					</div>
+					</a>
 				</div>
 				</div>
 			</td>
 			</td>
-			<td class="text-center br-l">
-				<div ng-show="!inquiryItem.$editing">
-					<span ng-bind="inquiryItem.minOrderQty"></span> <span
-						ng-show="inquiryItem.minOrderQty == null" class="text-muted">-</span>
-				</div>
-				<div ng-if="inquiryItem.$editing">
-					<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minOrderQty,'minOrderQty')"
-						   ng-class="{'input-error': !minOrderQtyVerify}" ng-model="inquiryItem.minOrderQty" placeholder="最小订购" >
-					<div class="text-bold text-inverse" ng-show="!minOrderQtyVerify">请填数字!</div>
-				</div>
+			<td class="text-center">
+				<span ng-bind="inquiryItem.product.brand ? inquiryItem.product.brand : '-'"></span>
 			</td>
 			</td>
-			<td class="text-center br-l">
-				<div ng-show="!inquiryItem.$editing">
-					<span ng-bind="inquiryItem.minPackQty"></span> <span
-						ng-show="inquiryItem.minPackQty == null" class="text-muted">-</span>
-				</div>
-				<div ng-if="inquiryItem.$editing">
-					<input type="text" class="form-control input-xs"
-						   ng-model="inquiryItem.minPackQty" placeholder="最小包装"
-						   ng-change="verify(inquiryItem.minPackQty,'minPackQty')" ng-class="{'input-error': !minPackQtyVerify}" >
-					<div class="text-bold text-inverse" ng-show="!minPackQtyVerify">请填数字!</div>
+			<td class="text-center">
+				<div ng-repeat="reply in inquiryItem.replies">
+					<span ng-bind="reply.lapQty"></span>
 				</div>
 				</div>
 			</td>
 			</td>
-			<td class="text-center br-l">
-				<div ng-init="parseDate(inquiryItem)">
-					<div ng-show="inquiryItem.toDate">
-						<span class="text-muted">从 </span><span
-							ng-bind="inquiryItem.fromDate | date:'yyyy-MM-dd'"></span> <span
-							class="text-muted">到 </span><span
-							ng-bind="inquiryItem.toDate | date:'yyyy-MM-dd'"></span>
-					</div>
-					<div ng-show="!inquiryItem.toDate">
-						<span class="text-muted">-</span>
-					</div>
+			<td class="text-center">
+				<div ng-repeat="reply in inquiryItem.replies">
+					<span ng-bind="isUser?'':(reply.price | number:6)"></span>
+					<span ng-show="reply.price == null || isUser" class="text-muted">-</span>
 				</div>
 				</div>
 			</td>
 			</td>
-			<td class="text-center br-l">
+			<td class="text-center">
+				<span ng-bind="inquiryItem.minOrderQty ? inquiryItem.minOrderQty : '-'"></span>
+				<span>/</span>
+				<span ng-bind="inquiryItem.minPackQty ? inquiryItem.minPackQty : '-'"></span>
+			</td>
+			<td class="text-center">
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">
 					<span class="text-trans warning">已报价</span>
 					<span class="text-trans warning">已报价</span>
-					<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1" style="padding-top: 50px;">
-						<div ng-show="!inquiryItem.$editing && inquiryItem.replyable">
-							<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;  getToken();">修改报价</a>
-						</div>
-						<div ng-show="inquiryItem.$editing">
-							<div>
-								<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>
-							</div>
-							<div>
-								<button ng-click="onReplyClick(inquiryItem, true);setOrdersRead(inquiryItem.id)"
-										ng-disabled="!isValid(inquiryItem, true)"
-										class="btn btn-link btn-xs text-inverse">
-									保存并<br>确认报价
-								</button>
-							</div>
-						</div>
-					</div>
 					<div ng-if="inquiryItem.inquiry.check == 1" class="text-muted" style="padding-top: 50px;">客户正在<br>审批...</div>
 					<div ng-if="inquiryItem.inquiry.check == 1" class="text-muted" style="padding-top: 50px;">客户正在<br>审批...</div>
 				</div>
 				</div>
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1 && inquiryItem.invalid != 1" class="block">
 				<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1 && inquiryItem.invalid != 1" class="block">
@@ -526,24 +433,7 @@
 				<div ng-if="inquiryItem.status == 200">
 				<div ng-if="inquiryItem.status == 200">
 					<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1">
 					<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1">
 						<div ng-show="!inquiryItem.$editing">
 						<div ng-show="!inquiryItem.$editing">
-							<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; getToken()">报 价</a>
-						</div>
-						<div ng-show="inquiryItem.$editing">
-							<div>
-								<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>
-							</div>
-							<div>
-								<button ng-click="onReplyClick(inquiryItem);setOrdersRead(inquiryItem.id)"
-										ng-disabled="!isValid(inquiryItem)"
-										class="btn btn-link btn-xs text-default">保存</button>
-							</div>
-							<div>
-								<button ng-click="onReplyClick(inquiryItem, true);setOrdersRead(inquiryItem.id)"
-										ng-disabled="!isValid(inquiryItem, true)"
-										class="btn btn-link btn-xs text-inverse">
-									保存并<br>确认报价
-								</button>
-							</div>
+							<a ng-click="quote(inquiryItem)">报 价</a>
 						</div>
 						</div>
 					</div>
 					</div>
 					<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check == 1">
 					<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check == 1">
@@ -558,4 +448,294 @@
 		</tr>
 		</tr>
 		</tbody>
 		</tbody>
 	</table>
 	</table>
+	<!--<table class="order-table block" ng-table="tableParams">-->
+		<!--<thead>-->
+		<!--<tr class="header">-->
+			<!--<th>产品</th>-->
+			<!--<th width="60">单位</th>-->
+			<!--<th width="110"><span class="text-default">≥</span>分段数</th>-->
+			<!--<th width="90">价格</th>-->
+			<!--<th width="80">最小订购</th>-->
+			<!--<th width="80">最小包装</th>-->
+			<!--<th width="120">有效期</th>-->
+			<!--<th width="75">操作</th>-->
+		<!--</tr>-->
+		<!--<tr class="sep-row">-->
+			<!--<td colspan="7"></td>-->
+		<!--</tr>-->
+		<!--</thead>-->
+		<!--<tbody ng-if="tableParams.total() == 0">-->
+		<!--<tr>-->
+			<!--<td colspan="7">-->
+				<!--<div class="row text-muted info-container" style="padding: 50px 10px;">-->
+					<!--<div class="col-md-4 text-center">-->
+						<!--<br>-->
+						<!--<br>-->
+						<!--<div><img src="static/img/all/info.png" width="130px" height="90px"></div>-->
+						<!--<div class="f16">当前没有对应的客户询价单!</div>-->
+					<!--</div>-->
+					<!--<div class="col-md-8 br-l">-->
+						<!--<div class="f16">-->
+							<!--<p>为什么我没有接收到客户的询价单?</p>-->
+						<!--</div>-->
+						<!--<div class="f14">-->
+							<!--<div class="info">-->
+								<!--<p>1、您的客户还没有提交审核询价单<br>-->
+									<!--解决:与您的客户沟通确认单据是否已经审核(只有客户ERP中已经审核的单据才能接收到)</p>-->
+							<!--</div>-->
+							<!--<div class="info">-->
+								<!--<p>2、客户ERP中供应商信息有误<br>-->
+									<!--解决:与您的客户沟通确认您的信息在客户的供应商资料中是否维护正确,尤其是企业UU号</p>-->
+							<!--</div>-->
+							<!--<div class="info">-->
+								<!--<p>3、您的客户正在使用旧版本的UAS商务平台<br>-->
+									<!--解决:我们仍有部分用户在使用旧版本UAS商务平台系统,你可以用您的企业UU号和管理员个人UU号 <a href="http://www.usoftchina.com" class="text-bold text-link" title="http://www.usoftchina.com" target="_blank">登陆旧版本UAS商务平台</a></p>-->
+							<!--</div>-->
+						<!--</div>-->
+						<!--<br>-->
+						<!--<br>-->
+					<!--</div>-->
+				<!--</div>-->
+			<!--</td>-->
+		<!--</tr>-->
+		<!--</tbody>-->
+		<!--<tbody ng-repeat="inquiryItem in $data track by inquiryItem.id">-->
+		<!--<tr class="order-hd">-->
+			<!--<td class="first" colspan="4">-->
+				<!--<div class="order-main">-->
+						<!--&lt;!&ndash;<span> <input type="checkbox" class="selector"-->
+									  <!--ng-model="inquiryItem.$selected">-->
+						<!--</span> &ndash;&gt;-->
+					<!--<a href="javascript:void(0)" ng-if="!isUnread(inquiryItem.id)">-->
+						<!--<i class="fa fa-circle-thin"></i>-->
+					<!--</a>-->
+					<!--<a href="javascript:void(0)" ng-if="isUnread(inquiryItem.id)">-->
+						<!--<i class="fa fa-circle" style="color: #f40;"></i>-->
+					<!--</a>-->
+					<!--&nbsp;&nbsp;<span class="text-num text-bold" title="{{inquiryItem.inquiry.date}}"-->
+									  <!--ng-bind="::inquiryItem.inquiry.date | date:'yyyy-MM-dd'"></span>-->
+					<!--<span-->
+							<!--ng-bind="::inquiryItem.inquiry.enterprise.enName"></span>-->
+					<!--<span>流水号:<a title="查看详情"-->
+						<!--class="text-num order-detail" ng-bind="::inquiryItem.inquiry.code" ui-sref="sale.pubinquiry_detail({id:inquiryItem.inquiry.id})" target="_self"-->
+						<!--ng-click="setOrdersRead(inquiryItem.id)"></a>-->
+					<!--</span>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td>-->
+				<!--币别:<span ng-bind="::(isUser?'-':inquiryItem.currency)"></span>-->
+			<!--</td>-->
+			<!--<td>-->
+				<!--税率:<input  type="text" ng-pattern="/^\+?[1-9]\d*$/" ng-model="inquiryItem.taxrate" style="width: 25px" ng-readonly="!inquiryItem.$editing">%-->
+			<!--</td>-->
+			<!--<td class="text-right" colspan="1" class="order-sum">-->
+				<!--<div ng-if="inquiryItem.replyable">-->
+					<!--<span class="text-inverse text-bold" ng-bind="::inquiryItem.inquiry.endDate | timespan"></span>-->
+					<!--<span class="text-muted">后截止报价</span>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center">-->
+				<!--<div class="">-->
+					<!--类型: <span ng-bind="::inquiryItem.inquiry.inquirytype || '无'"></span>-->
+				<!--</div>-->
+			<!--</td>-->
+		<!--</tr>-->
+		<!--<tr class="order-bd">-->
+			<!--<td class="product">-->
+				<!--<div class="text-num text-bold" ng-bind="::inquiryItem.product.code"></div>-->
+				<!--<div ng-bind="::inquiryItem.product.title"></div>-->
+				<!--<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>-->
+				<!--<div ng-if="::inquiryItem.brand && !inquiryItem.$editing" class="text-muted">-->
+					<!--品牌:<span ng-bind="::inquiryItem.brand"></span>-->
+				<!--</div>-->
+				<!--<div ng-if="::inquiryItem.vendorprodcode && !inquiryItem.$editing" class="text-muted">-->
+					<!--供应商物料编号:<span ng-bind="::inquiryItem.vendorprodcode"></span>-->
+				<!--</div>-->
+				<!--<div ng-if="::inquiryItem.needquantity" class="text-num text-bold">-->
+					<!--需求数量:<span ng-bind="::inquiryItem.needquantity"></span>-->
+				<!--</div>-->
+				<!--<div ng-show="inquiryItem.remark">-->
+					<!--备注:{{::inquiryItem.remark}}-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.inquiry.attachs.length" class="text-muted">-->
+					<!--<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>附件:<a class="file" ng-repeat="attach in inquiryItem.inquiry.attachs" href="file/{{attach.id}}">{{::attach.name}}</a>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.attaches.length" class="text-muted">-->
+					<!--<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>报价附件:-->
+					<!--<div ng-repeat="attach in inquiryItem.attaches">-->
+						<!--<a class="file" href="file/{{attach.id}}">{{::attach.name}}&nbsp;</a>-->
+						<!--<a ng-show="inquiryItem.$editing" ng-click="deleteAttach(inquiryItem.attaches, $index)" title="删除附件"><i class="fa fa-trash-o fa-lg"></i></a>-->
+					<!--</div>-->
+				<!--</div>-->
+				<!--<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">-->
+					<!--<input type="text" class="form-control input-xs"-->
+						   <!--ng-model="inquiryItem.brand" placeholder="物料品牌">-->
+				<!--</div>-->
+				<!--<div class="form-group" ng-if="inquiryItem.$editing" style="width: 180px;">-->
+					<!--<input type="text" class="form-control input-xs"-->
+						   <!--ng-model="inquiryItem.vendorprodcode" placeholder="供应商物料编号">-->
+				<!--</div>-->
+				<!--<div class="form-group" ng-if="inquiryItem.$editing" style="width: 220px;">-->
+					<!--<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.leadtime,'leadtime')" ng-pattern="/^\+?[1-9]\d*$/"-->
+						   <!--ng-model="inquiryItem.leadtime" placeholder="交货周期(确切天数)" style="display: inline-block;width: 180px;">-->
+					<!--<span ng-if="!inquiryItem.leadtime" class="text-inverse"> 必填*</span>-->
+					<!--<div style="margin-left: 50px;"class="text-bold text-inverse" ng-show="!leadtimeVerify">请填数字!</div>-->
+				<!--</div>-->
+				<!--<div class="input-group form-group" ng-if="inquiryItem.$editing" style="width: 300px;">-->
+					<!--<div class="input-group-addon">上传附件:</div>-->
+					<!--<input type="file" ng-model="inquiryItem.myFiles" ng-file-select-->
+						   <!--ng-multiple="false" class="form-control input-sm input-group" name="file">-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center">-->
+				<!--<span ng-bind="::inquiryItem.product.unit"></span>-->
+			<!--</td>-->
+			<!--<td class="text-center">-->
+				<!--<div ng-show="!inquiryItem.$editing">-->
+					<!--<div ng-repeat="reply in inquiryItem.replies">-->
+						<!--<span ng-bind="reply.lapQty"></span>-->
+					<!--</div>-->
+				<!--</div>-->
+				<!--<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">-->
+					<!--<div ng-repeat="reply in inquiryItem.replies">-->
+						<!--<div class="form-group input-group input-group-xs">-->
+							<!--<input type="text" class="form-control input-xs" ng-class="{'input-error': !replylapQtys[$index]}"  ng-change="verifylapQty(reply.lapQty,$index, inquiryItem)"-->
+								   <!--ng-model="reply.lapQty" min="{{$index == 0 ? 0 :(inquiryItem.replies[$index - 1].lapQty + 1)}}" ng-pattern="/^\+?[1-9]\d*$/"-->
+								   <!--ng-Readonly="$index == 0"  placeholder="数量" />-->
+								   <!--<span class="input-group-btn" ng-show="$index != 0">-->
+									<!--<button class="btn btn-default" type="button"-->
+											<!--ng-click="removeStep(inquiryItem, $index)">-->
+										<!--<i class="fa fa-trash-o"></i>-->
+									<!--</button>-->
+								<!--</span>-->
+						<!--</div>-->
+						<!--<div class="text-bold text-inverse" style="margin-top:-15px" ng-show="!replylapQtys[$index]">分段数量递增!</div>-->
+					<!--</div>-->
+					<!--<a ng-click="addStep(inquiryItem)" class="btn btn-default btn-xs"-->
+					   <!--ng-show="!inquiryItem.custLap">添加分段</a>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center br-l">-->
+				<!--<div ng-show="!inquiryItem.$editing">-->
+					<!--<div ng-repeat="reply in inquiryItem.replies">-->
+						<!--<span ng-bind="isUser?'':(reply.price | number:6)"></span> <span-->
+							<!--ng-show="reply.price == null || isUser" class="text-muted">-</span>-->
+					<!--</div>-->
+
+				<!--</div>-->
+				<!--<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">-->
+					<!--<div ng-repeat="reply in inquiryItem.replies">-->
+						<!--<div class="form-group">-->
+							<!--<input type="text" class="form-control input-xs " ng-class="{'input-error': !replyPrices[$index]}" ng-model="reply.price"-->
+								   <!--ng-change="verify(reply.price,$index)" placeholder="单价(必填)" ng-init="reply.price = isUser?'-':reply.price"/>-->
+							<!--<div class="text-bold text-inverse" style="margin-bottom:-15px" ng-show="!replyPrices[$index]">请填数字!</div>-->
+						<!--</div>-->
+					<!--</div>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center br-l">-->
+				<!--<div ng-show="!inquiryItem.$editing">-->
+					<!--<span ng-bind="inquiryItem.minOrderQty"></span> <span-->
+						<!--ng-show="inquiryItem.minOrderQty == null" class="text-muted">-</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.$editing">-->
+					<!--<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minOrderQty,'minOrderQty')"-->
+						   <!--ng-class="{'input-error': !minOrderQtyVerify}" ng-model="inquiryItem.minOrderQty" placeholder="最小订购" >-->
+					<!--<div class="text-bold text-inverse" ng-show="!minOrderQtyVerify">请填数字!</div>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center br-l">-->
+				<!--<div ng-show="!inquiryItem.$editing">-->
+					<!--<span ng-bind="inquiryItem.minPackQty"></span> <span-->
+						<!--ng-show="inquiryItem.minPackQty == null" class="text-muted">-</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.$editing">-->
+					<!--<input type="text" class="form-control input-xs"-->
+						   <!--ng-model="inquiryItem.minPackQty" placeholder="最小包装"-->
+						   <!--ng-change="verify(inquiryItem.minPackQty,'minPackQty')" ng-class="{'input-error': !minPackQtyVerify}" >-->
+					<!--<div class="text-bold text-inverse" ng-show="!minPackQtyVerify">请填数字!</div>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center br-l">-->
+				<!--<div ng-init="parseDate(inquiryItem)">-->
+					<!--<div ng-show="inquiryItem.toDate">-->
+						<!--<span class="text-muted">从 </span><span-->
+							<!--ng-bind="inquiryItem.fromDate | date:'yyyy-MM-dd'"></span> <span-->
+							<!--class="text-muted">到 </span><span-->
+							<!--ng-bind="inquiryItem.toDate | date:'yyyy-MM-dd'"></span>-->
+					<!--</div>-->
+					<!--<div ng-show="!inquiryItem.toDate">-->
+						<!--<span class="text-muted">-</span>-->
+					<!--</div>-->
+				<!--</div>-->
+			<!--</td>-->
+			<!--<td class="text-center br-l">-->
+				<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">-->
+					<!--<span class="text-trans warning">已报价</span>-->
+					<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1" style="padding-top: 50px;">-->
+						<!--<div ng-show="!inquiryItem.$editing && inquiryItem.replyable">-->
+							<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;  getToken();">修改报价</a>-->
+						<!--</div>-->
+						<!--<div ng-show="inquiryItem.$editing">-->
+							<!--<div>-->
+								<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>-->
+							<!--</div>-->
+							<!--<div>-->
+								<!--<button ng-click="onReplyClick(inquiryItem, true);setOrdersRead(inquiryItem.id)"-->
+										<!--ng-disabled="!isValid(inquiryItem, true)"-->
+										<!--class="btn btn-link btn-xs text-inverse">-->
+									<!--保存并<br>确认报价-->
+								<!--</button>-->
+							<!--</div>-->
+						<!--</div>-->
+					<!--</div>-->
+					<!--<div ng-if="inquiryItem.inquiry.check == 1" class="text-muted" style="padding-top: 50px;">客户正在<br>审批...</div>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1 && inquiryItem.invalid != 1" class="block">-->
+					<!--<span class="text-trans success">已采纳</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.invalid == 1" class="block">-->
+					<!--<span class="text-trans text-light">已失效</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.status == 314" class="block">-->
+					<!--<span class="text-trans text-light">已作废</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="block">-->
+					<!--<span class="text-trans error">未采纳</span>-->
+				<!--</div>-->
+				<!--<div ng-if="inquiryItem.status == 200">-->
+					<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1">-->
+						<!--<div ng-show="!inquiryItem.$editing">-->
+							<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; getToken()">报 价</a>-->
+						<!--</div>-->
+						<!--<div ng-show="inquiryItem.$editing">-->
+							<!--<div>-->
+								<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>-->
+							<!--</div>-->
+							<!--<div>-->
+								<!--<button ng-click="onReplyClick(inquiryItem);setOrdersRead(inquiryItem.id)"-->
+										<!--ng-disabled="!isValid(inquiryItem)"-->
+										<!--class="btn btn-link btn-xs text-default">保存</button>-->
+							<!--</div>-->
+							<!--<div>-->
+								<!--<button ng-click="onReplyClick(inquiryItem, true);setOrdersRead(inquiryItem.id)"-->
+										<!--ng-disabled="!isValid(inquiryItem, true)"-->
+										<!--class="btn btn-link btn-xs text-inverse">-->
+									<!--保存并<br>确认报价-->
+								<!--</button>-->
+							<!--</div>-->
+						<!--</div>-->
+					<!--</div>-->
+					<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check == 1">-->
+						<!--<span class="text-trans half">未报价</span>-->
+						<!--<div class="text-muted" style="padding-top: 50px;">询价单已<br>被提交...</div>-->
+					<!--</div>-->
+					<!--<div ng-if="inquiryItem.inquiry.overdue == 1" class="block">-->
+						<!--<span class="text-trans error">已过期</span>-->
+					<!--</div>-->
+				<!--</div>-->
+			<!--</td>-->
+		<!--</tr>-->
+		<!--</tbody>-->
+	<!--</table>-->
 </div>
 </div>

+ 212 - 586
src/main/webapp/resources/tpl/index/sale/pubinquiry_detail.html

@@ -1,591 +1,217 @@
 <style>
 <style>
-	#order-detail-list .table-default tbody tr td{
-		vertical-align: top;
-	}
-	.pub-com_head span.fr {
-		margin-right: 20px;
-		color: #959595;
-		float: right;
-	}
-	.pub-com_head span.fr em {
-		margin-right: 50px;
-		font-size: 14px;
-		font-style: inherit;
-	}
+.detail{
+	background: #fff;
+	padding:30px 20px;
+}
+.detail .top{
+	position:relative;
+	margin-bottom:30px;
+}
+.detail .top h3{
+	font-size: 20px;
+	color:#54a9f0;
+	text-align: center;
+	margin:0;
+}
+.detail .top .top-right{
+	position:absolute;
+	top:3px;
+	right:0;
+	color:#999;
+}
+.detail .top .top-right span{
+	font-size:14px;
+	margin-left:10px;
+}
+.detail .top .top-right span em{
+	font-style:normal;
+}
+.detail .middle{
+	border-top:1px solid #e5e5e5;
+	padding-top:40px;
+	padding-bottom:40px;
+}
+.detail .middle ul li{
+	width:33%;
+	height:60px;
+	vertical-align:top;
+}
+.detail .middle ul li span{
+	display:inline-block;
+	width:25%;
+	color:#333;
+	font-size: 14px;
+	font-weight: bold;
+}
+.detail .middle ul li em{
+	display:inline-block;
+	width:75%;
+	vertical-align: top;
+	color:#999;
+	font-size: 14px;
+	font-style: normal;
+}
+.detail table{
+	border:1px solid #dcdcdc;
+	table-layout: fixed;
+}
+.detail table thead th{
+	background: #ebf5fe;
+	font-weight: bold;
+	font-size: 14px;
+	color:#333;
+	padding-left:10px;
+}
+.detail table thead th:before{
+	content:'';
+	display:inline-block;
+	position:relative;
+	left:-11px;
+	top:2px;
+	width:1px;
+	height:16px;
+	border-left: 1px solid #dcdcdc;
+}
+.detail table tr td{
+	padding-top:20px;
+	padding-bottom:30px;
+	word-break:break-all;
+}
+.detail table td a{
+	font-size: 14px;
+	color:#54a9f0;
+}
+.detail table td a:hover{
+	text-decoration: underline;
+	cursor:pointer;
+}
+.detail table td span{
+	font-size: 14px;
+	color:#999;
+}
+.detail table td .info{
+	position:relative;
+}
+.detail table td .info span{
+	color:#333;
+}
+.detail table td .info:hover >span{
+	color:#54a9f0;
+	cursor:pointer;
+}
+.detail table td .info:hover >i{
+	color:#54a9f0;
+}
+.detail table td .info:hover .modal-content{
+	display:block;
+}
+.detail table td .info .modal-content{
+	display:none;
+	position:absolute;
+	top:100%;
+	left:0;
+	margin:0;
+	padding:15px 10px;
+}
+.detail table td .info .modal-content ul li{
+	width:270px;
+}
+.detail table td .info .modal-content ul li span{
+	font-size: 14px;
+	color:#333;
+}
+.detail table td .info .modal-content ul li em{
+	font-size: 14px;
+	color:#999;
+	font-style: normal;
+}
 </style>
 </style>
-<div class="pane base-info" id="order-detail-list">
-	<div class="pub-com_head">
-		<span>客户公共询价单</span>
-		<span class="fr"><em>制单人:{{inquiry.recorder}}</em><time>制单日期:{{inquiry.date | date:'yyyy-MM-dd'}}</time></span>
-	</div>
-	<div class="pane-body">
-		<div class="title-div" style="border-bottom: 1px dashed #327ebe;">
-			<span class="f14">单据信息</span>
-		</div>
-		<div class="row row-sm item">
-			<div class="col-xs-3">
-				<span class="title">流水号:</span>
-				<div class="content" ng-bind="::inquiry.code"></div>
-			</div>
-			<div class="col-xs-6">
-				<span class="title">客户:</span>
-				<div class="content" ng-bind="::inquiry.enterprise.enName"></div>
-			</div>
-			<div class="col-xs-3">
-				<span class="title">截止报价:</span>
-				<div class="content" ng-bind="::inquiry.endDate | date:'yyyy-MM-dd'"></div>
-			</div>
-		</div>
-		<div class="row row-sm item">
-			<div class="col-xs-12">
-				<div class="title">收货地址:</div>
-				<div class="unchanged-info">{{inquiry.ship}}</div>
-			</div>
-		</div>
-		<!--<div class="row row-sm item">
-			<div class="col-xs-3">
-				<span class="title">审核人:</span>
-				<div class="content" ng-bind="::inquiry.auditor"></div>
-			</div>
-			<div class="col-xs-3">
-				<span class="title">环保要求:</span>
-				<div class="content" ng-bind="::inquiry.environment"></div>
-			</div>
-			<div class="col-xs-6">
-				<span class="title">价格种类:</span>
-				<div class="content" ng-bind="::inquiry.priceType"></div>
-			</div>
-		</div>-->
-		<div class="row row-sm item">
-			<div class="col-xs-6">
-				<div class="title">发票类型:</div>
-				<div class="unchanged-info" ng-if="inquiry.invoice == 2">增值税专用发票</div>
-				<div class="unchanged-info" ng-if="inquiry.invoice == 1">增值税普通发票</div>
-				<div class="unchanged-info" ng-if="inquiry.invoice == 0">不需要发票</div>
-			</div>
-			<div class="col-xs-6">
-				<span class="title">询价类型:</span>
-				<div class="content" ng-bind="::inquiry.inquirytype"></div>
-			</div>
-		</div>
-		<div class="row row-sm item">
-			<div class="col-xs-6">
-				<span class="title">备注:</span>
-				<div class="content" ng-bind="::inquiry.remark"></div>
-			</div>
-		</div>
-		<div class="headerline" ng-if="inquiry.attachs.length">
-			<span class="content">附件</span>
-		</div>
-		<div class="row row-sm attach" ng-if="inquiry.attachs.length">
-			<div class="col-xs-3 item" ng-repeat="file in inquiry.attachs">
-				<div class="bg">
-					<div class="global_icon larger icon_undefined_l"
-						ng-class="{'icon_pdf_l': file.type == 'pdf','icon_xls_l': file.type == 'xls' || file.type == 'xlsx' || file.type == 'et', 'icon_doc_l': file.type == 'doc' || file.type == 'docx', 'icon_txt_l': file.type == 'txt', 'icon_zip_l': file.type == 'zip' || file.type == 'rar', 'icon_image_l': file.type == 'png' || file.type == 'jpg' || file.type == 'jpeg' || file.type == 'bmp'|| file.type == 'gif'}"></div>
-				</div>
-				<div class="title" ng-bind="::file.name"></div>
-				<div class="download">
-					<a href="file/{{file.id}}">下载</a>
-				</div>
-			</div>
-		</div>
-		<div class="title-div" style="border-bottom: 1px dashed #327ebe;">
-			<span class="f14">产品价格详情</span>&nbsp;
-		</div>
-		<div class="block">
-			<table class="block table table-default table-striped" style=" margin-bottom: 0">
-				<thead>
-					<tr class="header">
-						<th width="60">序号</th>
-						<th width="130">产品</th>
-						<th width="60">单位</th>
-						<th width="90"><span class="text-default">≥</span>分段数</th>
-						<th width="120">价格</th>
-						<th width="50">币别</th>
-						<th width="60">税率</th>
-						<th width="90">最小订购</th>
-						<th width="90">最小包装</th>
-						<th width="120">有效期</th>
-						<th width="80">操作</th>
-					</tr>
-				</thead>
-				<tbody ng-repeat="inquiryItem in newinquiryItems | orderBy:'number'" ng-class="{'scoroll':order.orderItems.length>10}">
-				<tr>
-					<td>
-						<!-- <div ng-bind="::inquiryItem.number">
-                        </div> -->
-						{{$index + 1}}
-					</td>
-					<td>
-						<div class="text-num text-bold"
-							 ng-bind="::inquiryItem.product.code"></div>
-						<div ng-bind="::inquiryItem.product.title"></div>
-						<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>
-						<div ng-if="::inquiryItem.needquantity" class="text-num text-bold">
-							需求数量:<span ng-bind="::inquiryItem.needquantity"></span>
-						</div>
-						<div ng-show="inquiryItem.remark">
-							备注:{{::inquiryItem.remark}}
-						</div>
-						<div ng-if="inquiryItem.attaches.length" class="text-muted">
-							<i class="fa fa-paperclip fa-fw" style="color: #ffa340; font-size: 18px;"></i>报价附件:
-							<div ng-repeat="attach in inquiryItem.attaches">
-								<a class="file" href="file/{{attach.id}}">{{::attach.name}}&nbsp;</a>
-								<a ng-show="inquiryItem.$editing" ng-click="deleteAttach(inquiryItem.attaches, $index)" title="删除附件"><i class="fa fa-trash-o fa-lg"></i></a>
-							</div>
-						</div>
-						<div class="form-group" ng-if="inquiryItem.$editing"
-							 style="width: 150px;">
-							<input type="text" class="form-control input-xs"
-								   ng-model="inquiryItem.brand" placeholder="物料品牌">
-						</div>
-						<div class="form-group" ng-if="inquiryItem.$editing"
-							 style="width: 150px;">
-							<input type="text" class="form-control input-xs"
-								   ng-model="inquiryItem.vendorprodcode" placeholder="供应商物料编号">
-						</div>
-						<div class="form-group" ng-if="inquiryItem.$editing" style="width: 150px;">
-							<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.leadtime,'leadtime')" ng-pattern="/^\+?[1-9]\d*$/"
-								   ng-model="inquiryItem.leadtime" placeholder="交货周期(确切天数)" style="display: inline-block;width: 150px;">
-							<span ng-if="!inquiryItem.leadtime" class="text-inverse"> 必填*</span>
-							<div style="margin-left: 50px;" class="text-bold text-inverse" ng-show="!leadtimeVerify">请填数字!</div>
-						</div>
-						<div class="input-group form-group" ng-if="inquiryItem.$editing" style="width: 100%;
-    margin-bottom: 0;position: relative;top: -14px;">
-							<div class="input-group-addon">上传附件:</div>
-							<input type="file" ng-model="inquiryItem.myFiles" ng-file-select
-								   ng-multiple="false" class="form-control input-sm input-group" name="file" style="width: 200px;    line-height: 29px;">
-						</div>
-					</td>
-					<td class="text-center">
-						<span ng-bind="::inquiryItem.product.unit"></span>
-					</td>
-					<td class="text-center">
-						<div ng-show="!inquiryItem.$editing">
-							<div ng-repeat="reply in inquiryItem.replies">
-								<span ng-bind="reply.lapQty"></span>
-							</div>
-						</div>
-						<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
-							<div ng-repeat="reply in inquiryItem.replies">
-								<div class="form-group input-group input-group-xs">
-									<input type="text" class="form-control input-xs" ng-change="verifylapQty(reply.lapQty,$index, inquiryItem)"
-										   ng-model="reply.lapQty" min="{{$index == 0 ? 0 :(inquiryItem.replies[$index - 1].lapQty + 1)}}"
-										   ng-Readonly="$index == 0"  placeholder="数量" />
-									<span class="input-group-btn" ng-show="$index != 0">
-											<button class="btn btn-default" type="button"
-													ng-click="removeStep(inquiryItem, $index)">
-												<i class="fa fa-trash-o"></i>
-											</button>
-										</span>
-								</div>
-								<div class="text-bold text-inverse" style="margin-top:-15px" ng-show="!replylapQtys[$index]">分段数递增!</div>
-							</div>
-							<a ng-click="addStep(inquiryItem)" class="btn btn-default btn-xs"
-							   ng-show="!inquiryItem.custLap">添加分段</a>
-						</div>
-					</td>
-					<td class="text-center br-l">
-						<div ng-show="!inquiryItem.$editing">
-							<div ng-repeat="reply in inquiryItem.replies">
-								<span ng-if="!isUser" ng-bind="reply.price | number:6"></span> <span
-									ng-show="reply.price == null || isUser" class="text-muted">-</span>
-							</div>
-							<div class="dropdown">
-								<a href="javascript:void(0);" class="dropdown-toggle text-default"
-								   ng-mouseover="getHistory(inquiryItem)">历史报价<i
-										class="fa fa-fw fa-angle-down"></i></a>
-								<div class="dropdown-menu pane" style="width: 270px;">
-									<div class="pane-body">
-										<ul class="list-unstyled list-menu">
-											<li ng-repeat="historyItem in ::inquiryItem.history">
-												<div ng-class="{'text-inverse': $index==0}">
-													<div class="row row-sm"
-														 ng-repeat="historyReply in historyItem.replies">
-														<div class="col-xs-5">≥{{historyReply.lapQty}}</div>
-														<div class="col-xs-5">价格{{historyReply.price | number:6}}</div>
-													</div>
-												</div>
-												<div class="text-muted">{{historyItem.inquiry.date |
-													date:'yyyy-MM-dd'}}{{historyItem.inquiry.enterprise.enName}}
-												</div>
-											</li>
-										</ul>
-										<div ng-show="!inquiryItem.history || inquiryItem.history.length == 0"
-											 class="text-center text-muted">暂无历史报价</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">
-							<div ng-repeat="reply in inquiryItem.replies">
-								<div class="form-group">
-									<input type="text" class="form-control input-xs " ng-class="{'input-error': !replyPrices[$index]}" ng-model="reply.price"
-										   ng-change="verify(reply.price,$index)" placeholder="单价(必填)" ng-init="reply.price = isUser?'-':reply.price"  />
-									<div class="text-bold text-inverse" style="margin-bottom:-15px" ng-show="!replyPrices[$index]">请填数字!</div>
-								</div>
-							</div>
-						</div>
-					</td>
-					<td class="text-center" ng-bind="::inquiryItem.currency"></td>
-					<td class="text-center">
-						<input type="text" ng-pattern="/^\+?[1-9]\d*$/" ng-model="inquiryItem.taxrate" style="width: 25px" ng-readonly="!inquiryItem.$editing">%</td>
-					<td class="text-center">
-						<div ng-show="!inquiryItem.$editing">
-							<span ng-bind="inquiryItem.minOrderQty"></span> <span
-								ng-show="inquiryItem.minOrderQty == null" class="text-muted">-</span>
-						</div>
-						<div ng-if="inquiryItem.$editing">
-							<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minOrderQty,'minOrderQty')"
-								   ng-model="inquiryItem.minOrderQty" placeholder="最小订购">
-						</div>
-					</td>
-					<td class="text-center">
-						<div ng-show="!inquiryItem.$editing">
-							<span ng-bind="inquiryItem.minPackQty"></span> <span
-								ng-show="inquiryItem.minPackQty == null" class="text-muted">-</span>
-						</div>
-						<div ng-if="inquiryItem.$editing">
-							<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minPackQty,'minPackQty')"
-								   ng-model="inquiryItem.minPackQty" placeholder="最小包装">
-						</div>
-					</td>
-					<td class="text-center">
-                        <div ng-init="parseDate(inquiryItem)">
-                            <div ng-show="inquiryItem.toDate">
-                                <span class="text-muted">从 </span><span
-                                    ng-bind="inquiryItem.fromDate | date:'yyyy-MM-dd'"></span> <span
-                                    class="text-muted">到 </span><span
-                                    ng-bind="inquiryItem.toDate | date:'yyyy-MM-dd'"></span>
-                            </div>
-                            <div ng-show="!inquiryItem.toDate">
-                                <span class="text-muted">-</span>
-                            </div>
-                        </div>
-					</td>
-					<td class="text-center">
-						<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">
-							<span class="text-trans warning">已报价</span>
-							<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1" style="padding-top: 50px;">
-								<div ng-show="!inquiryItem.$editing && inquiryItem.replyable">
-									<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;getToken()">修改报价</a>
-								</div>
-								<div ng-show="inquiryItem.$editing">
-									<div>
-										<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>
-									</div>
-									<div>
-										<button ng-click="onReplyClick(inquiryItem, true)"
-												ng-disabled="!isValid(inquiryItem, true)"
-												class="btn btn-link btn-xs text-inverse">
-											保存并<br>确认报价
-										</button>
-									</div>
-								</div>
-							</div>
-							<div ng-if="inquiryItem.inquiry.check == 1" class="text-muted" style="padding-top: 50px;">客户正在<br>审批...</div>
-						</div>
-						<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1 && inquiryItem.invalid != 1" class="block">
-							<span class="text-trans success">已采纳</span>
-						</div>
-						<div ng-if="inquiryItem.status == 201 && inquiryItem.invalid == 1" class="block">
-							<span class="text-trans text-light">已失效</span>
-						</div>
-						<div ng-if="inquiryItem.status == 314" class="block">
-							<span class="text-trans text-light">已作废</span>
-						</div>
-						<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="block">
-							<span class="text-trans error">未采纳</span>
-						</div>
-						<div ng-if="inquiryItem.status == 200">
-							<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1">
-								<div ng-show="!inquiryItem.$editing">
-									<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;getToken()">报 价</a>
-								</div>
-								<div ng-show="inquiryItem.$editing">
-									<div>
-										<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>
-									</div>
-									<div>
-										<button ng-click="onReplyClick(inquiryItem)"
-												ng-disabled="!isValid(inquiryItem)"
-												class="btn btn-link btn-xs text-default">保存</button>
-									</div>
-									<div>
-										<button ng-click="onReplyClick(inquiryItem, true)"
-												ng-disabled="!isValid(inquiryItem, true)"
-												class="btn btn-link btn-xs text-inverse">
-											保存并<br>确认报价
-										</button>
-									</div>
-								</div>
-							</div>
-							<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check == 1">
-								<span class="text-trans half">未报价</span>
-								<div class="text-muted" style="padding-top: 50px;">询价单已<br>被提交...</div>
-							</div>
-							<div ng-if="inquiryItem.inquiry.overdue == 1" class="block">
-								<span class="text-trans error">已过期</span>
-							</div>
-						</div>
-					</td>
-				</tr>
-				</tbody>
-			</table>
-			<!--<table class="block table table-default table-striped">-->
-				<!--<tbody>-->
-					<!--<tr-->
-						<!--ng-repeat="inquiryItem in newinquiryItems | orderBy:'number'" ng-class="{'scoroll':order.orderItems.length>10}">-->
-						<!--<td width="40">-->
-							<!--&lt;!&ndash; <div ng-bind="::inquiryItem.number">-->
-							<!--</div> &ndash;&gt;-->
-							<!--{{$index + 1}}-->
-						<!--</td>-->
-						<!--<td width="200">-->
-							<!--<div class="text-num text-bold"-->
-								<!--ng-bind="::inquiryItem.product.code"></div>-->
-							<!--<div ng-bind="::inquiryItem.product.title"></div>-->
-							<!--<div class="text-muted" ng-bind="::inquiryItem.product.spec"></div>-->
-							<!--<div ng-if="::inquiryItem.needquantity" class="text-num text-bold">-->
-								<!--需求数量:<span ng-bind="::inquiryItem.needquantity"></span>-->
-							<!--</div>-->
-							<!--<div ng-show="inquiryItem.remark">-->
-								<!--备注:{{::inquiryItem.remark}}-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.attaches.length && !inquiryItem.$editing" class="text-muted">-->
-								<!--附件:<a class="file" ng-repeat="attach in inquiryItem.attaches" href="file/{{attach.id}}">{{::attach.name}}</a>-->
-							<!--</div>-->
-							<!--<div class="form-group" ng-if="inquiryItem.$editing"-->
-								<!--style="width: 180px;">-->
-								<!--<input type="text" class="form-control input-xs"-->
-									<!--ng-model="inquiryItem.brand" placeholder="物料品牌">-->
-							<!--</div>-->
-							<!--<div class="form-group" ng-if="inquiryItem.$editing"-->
-								<!--style="width: 180px;">-->
-								<!--<input type="text" class="form-control input-xs"-->
-									<!--ng-model="inquiryItem.vendorprodcode" placeholder="供应商物料编号">-->
-							<!--</div>-->
-							<!--<div class="form-group" ng-if="inquiryItem.$editing" style="width: 220px;">-->
-								<!--<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.leadtime,'leadtime')" ng-pattern="/^\+?[1-9]\d*$/"-->
-									   <!--ng-model="inquiryItem.leadtime" placeholder="交货周期(确切天数)" style="display: inline-block;width: 180px;">-->
-								<!--<span ng-if="!inquiryItem.leadtime" class="text-inverse"> 必填*</span>-->
-								<!--<div style="margin-left: 50px;" class="text-bold text-inverse" ng-show="!leadtimeVerify">请填数字!</div>-->
-							<!--</div>-->
-							<!--<div class="input-group form-group" ng-if="inquiryItem.$editing && !inquiryItem.attaches.length" style="width: 300px;">-->
-								<!--<div class="input-group-addon">上传附件:</div>-->
-								<!--<input type="file" ng-model="inquiryItem.myFiles" ng-file-select-->
-									   <!--ng-multiple="false" class="form-control input-sm input-group" name="file">-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center" width="40">-->
-							<!--<span ng-bind="::inquiryItem.product.unit"></span>-->
-						<!--</td>-->
-						<!--<td class="text-center" width="90">-->
-							<!--<div ng-show="!inquiryItem.$editing">-->
-								<!--<div ng-repeat="reply in inquiryItem.replies">-->
-									<!--<span ng-bind="reply.lapQty"></span>-->
-								<!--</div>-->
-							<!--</div>-->
-							<!--<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">-->
-								<!--<div ng-repeat="reply in inquiryItem.replies">-->
-									<!--<div class="form-group input-group input-group-xs">-->
-										<!--<input type="text" class="form-control input-xs" ng-change="verifylapQty(reply.lapQty,$index, inquiryItem)"-->
-											   <!--ng-model="reply.lapQty" min="{{$index == 0 ? 0 :(inquiryItem.replies[$index - 1].lapQty + 1)}}"-->
-											   <!--ng-Readonly="$index == 0"  placeholder="数量" />-->
-										<!--<span class="input-group-btn" ng-show="$index != 0">-->
-											<!--<button class="btn btn-default" type="button"-->
-													<!--ng-click="removeStep(inquiryItem, $index)">-->
-												<!--<i class="fa fa-trash-o"></i>-->
-											<!--</button>-->
-										<!--</span>-->
-									<!--</div>-->
-									<!--<div class="text-bold text-inverse" style="margin-top:-15px" ng-show="!replylapQtys[$index]">分段数递增!</div>-->
-								<!--</div>-->
-								<!--<a ng-click="addStep(inquiryItem)" class="btn btn-default btn-xs"-->
-								   <!--ng-show="!inquiryItem.custLap">添加分段</a>-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center br-l" width="100">-->
-							<!--<div ng-show="!inquiryItem.$editing">-->
-								<!--<div ng-repeat="reply in inquiryItem.replies">-->
-									<!--<span ng-bind="reply.price | number:6"></span> <span-->
-										<!--ng-show="reply.price == null" class="text-muted">-</span>-->
-								<!--</div>-->
-								<!--<div class="dropdown">-->
-									<!--<a href="javascript:void(0);" class="dropdown-toggle text-default"-->
-									   <!--ng-mouseover="getHistory(inquiryItem)">历史报价<i-->
-											<!--class="fa fa-fw fa-angle-down"></i></a>-->
-									<!--<div class="dropdown-menu pane" style="width: 270px;">-->
-										<!--<div class="pane-body">-->
-											<!--<ul class="list-unstyled list-menu">-->
-												<!--<li ng-repeat="historyItem in ::inquiryItem.history">-->
-													<!--<div ng-class="{'text-inverse': $index==0}">-->
-														<!--<div class="row row-sm"-->
-															 <!--ng-repeat="historyReply in historyItem.replies">-->
-															<!--<div class="col-xs-5">≥{{historyReply.lapQty}}</div>-->
-															<!--<div class="col-xs-5">价格{{historyReply.price | number:6}}</div>-->
-														<!--</div>-->
-													<!--</div>-->
-													<!--<div class="text-muted">{{historyItem.inquiry.date |-->
-														<!--date:'yyyy-MM-dd'}}{{historyItem.inquiry.enterprise.enName}}-->
-													<!--</div>-->
-												<!--</li>-->
-											<!--</ul>-->
-											<!--<div ng-show="!inquiryItem.history || inquiryItem.history.length == 0"-->
-												 <!--class="text-center text-muted">暂无历史报价</div>-->
-										<!--</div>-->
-									<!--</div>-->
-								<!--</div>-->
-							<!--</div>-->
-							<!--<div style="margin: 0 auto;" ng-if="inquiryItem.$editing">-->
-								<!--<div ng-repeat="reply in inquiryItem.replies">-->
-									<!--<div class="form-group">-->
-										<!--<input type="text" class="form-control input-xs " ng-class="{'input-error': !replyPrices[$index]}" ng-model="reply.price"-->
-											   <!--ng-change="verify(reply.price,$index)" placeholder="单价(必填)"  />-->
-										<!--<div class="text-bold text-inverse" style="margin-bottom:-15px" ng-show="!replyPrices[$index]">请填数字!</div>-->
-									<!--</div>-->
-								<!--</div>-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center" ng-bind="::inquiryItem.currency" width="50"></td>-->
-						<!--<td class="text-center" width="60">-->
-						<!--<input type="text" ng-pattern="/^\+?[1-9]\d*$/" ng-model="inquiryItem.taxrate" style="width: 25px" ng-readonly="!inquiryItem.$editing">%</td>-->
-						<!--<td class="text-center" width="85">-->
-							<!--<div ng-show="!inquiryItem.$editing">-->
-								<!--<span ng-bind="inquiryItem.minOrderQty"></span> <span-->
-									<!--ng-show="inquiryItem.minOrderQty == null" class="text-muted">-</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.$editing">-->
-								<!--<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minOrderQty,'minOrderQty')"-->
-									<!--ng-model="inquiryItem.minOrderQty" placeholder="最小订购">-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center" width="85">-->
-							<!--<div ng-show="!inquiryItem.$editing">-->
-								<!--<span ng-bind="inquiryItem.minPackQty"></span> <span-->
-									<!--ng-show="inquiryItem.minPackQty == null" class="text-muted">-</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.$editing">-->
-								<!--<input type="text" class="form-control input-xs" ng-change="verify(inquiryItem.minPackQty,'minPackQty')"-->
-									<!--ng-model="inquiryItem.minPackQty" placeholder="最小包装">-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center" width="120">-->
-							<!--<div ng-show="!inquiryItem.$editing"-->
-								<!--ng-init="parseDate(inquiryItem)">-->
-								<!--<div ng-show="inquiryItem.vendFromDate">-->
-									<!--<span class="text-muted">从 </span><span-->
-										<!--ng-bind="inquiryItem.vendFromDate | date:'yyyy-MM-dd'"></span>-->
-									<!--<span class="text-muted">到 </span><span-->
-										<!--ng-bind="inquiryItem.vendToDate | date:'yyyy-MM-dd'"></span>-->
-								<!--</div>-->
-								<!--<div ng-show="!inquiryItem.vendFromDate">-->
-									<!--<span class="text-muted">-</span>-->
-								<!--</div>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.$editing">-->
-								<!--<div class="form-group input-group input-group-xs input-trigger">-->
-									<!--<input type="text" ng-model="inquiryItem.vendFromDate"-->
-										<!--class="form-control" placeholder="开始日期"-->
-										<!--datepicker-popup="yyyy-MM-dd"-->
-										<!--is-open="inquiryItem.$fromOpened"-->
-										<!--min-date="getMinDate(inquiryItem)" ng-required="true"-->
-										<!--current-text="今天" clear-text="清除" close-text="关闭"-->
-										<!--datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"-->
-										<!--ng-focus="openDatePicker($event, inquiryItem, '$fromOpened')">-->
-									<!--<span class="input-group-btn">-->
-										<!--<button type="button" class="btn btn-default"-->
-											<!--ng-click="openDatePicker($event, inquiryItem, '$fromOpened')">-->
-											<!--<i class="fa fa-calendar"></i>-->
-										<!--</button>-->
-									<!--</span>-->
-								<!--</div>-->
-								<!--<div class="form-group input-group input-group-xs input-trigger">-->
-									<!--<input type="text" ng-model="inquiryItem.vendToDate"-->
-										<!--class="form-control" placeholder="结束日期"-->
-										<!--datepicker-popup="yyyy-MM-dd" is-open="inquiryItem.$toOpened"-->
-										<!--min-date="inquiryItem.vendFromDate" ng-required="true"-->
-										<!--current-text="今天" clear-text="清除" close-text="关闭"-->
-										<!--datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"-->
-										<!--ng-focus="openDatePicker($event, inquiryItem, '$toOpened')">-->
-									<!--<span class="input-group-btn">-->
-										<!--<button type="button" class="btn btn-default"-->
-											<!--ng-click="openDatePicker($event, inquiryItem, '$toOpened')">-->
-											<!--<i class="fa fa-calendar"></i>-->
-										<!--</button>-->
-									<!--</span>-->
-								<!--</div>-->
-							<!--</div>-->
-						<!--</td>-->
-						<!--<td class="text-center" width="75">-->
-							<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == null && inquiryItem.invalid != 1" class="block">-->
-								<!--<span class="text-trans warning">已报价</span>-->
-								<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1" style="padding-top: 50px;">-->
-									<!--<div ng-show="!inquiryItem.$editing">-->
-										<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;getToken()">修改报价</a>-->
-									<!--</div>-->
-									<!--<div ng-show="inquiryItem.$editing">-->
-										<!--<div>-->
-											<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>-->
-										<!--</div>-->
-										<!--<div>-->
-											<!--<button ng-click="onReplyClick(inquiryItem, true)"-->
-													<!--ng-disabled="!isValid(inquiryItem, true)"-->
-													<!--class="btn btn-link btn-xs text-inverse">-->
-												<!--保存并<br>确认报价-->
-											<!--</button>-->
-										<!--</div>-->
-									<!--</div>-->
-								<!--</div>-->
-								<!--<div ng-if="inquiryItem.inquiry.check == 1" class="text-muted" style="padding-top: 50px;">客户正在<br>审批...</div>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 1 && inquiryItem.invalid != 1" class="block">-->
-								<!--<span class="text-trans success">已采纳</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.invalid == 1" class="block">-->
-								<!--<span class="text-trans text-light">已失效</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.status == 314" class="block">-->
-								<!--<span class="text-trans text-light">已作废</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.status == 201 && inquiryItem.agreed == 0" class="block">-->
-								<!--<span class="text-trans error">未采纳</span>-->
-							<!--</div>-->
-							<!--<div ng-if="inquiryItem.status == 200">-->
-								<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check != 1">-->
-									<!--<div ng-show="!inquiryItem.$editing">-->
-										<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing;getToken()">报 价</a>-->
-									<!--</div>-->
-									<!--<div ng-show="inquiryItem.$editing">-->
-										<!--<div>-->
-											<!--<a ng-click="inquiryItem.$editing=!inquiryItem.$editing; cancel()">取消</a>-->
-										<!--</div>-->
-										<!--<div>-->
-											<!--<button ng-click="onReplyClick(inquiryItem)"-->
-													<!--ng-disabled="!isValid(inquiryItem)"-->
-													<!--class="btn btn-link btn-xs text-default">保存</button>-->
-										<!--</div>-->
-										<!--<div>-->
-											<!--<button ng-click="onReplyClick(inquiryItem, true)"-->
-													<!--ng-disabled="!isValid(inquiryItem, true)"-->
-													<!--class="btn btn-link btn-xs text-inverse">-->
-												<!--保存并<br>确认报价-->
-											<!--</button>-->
-										<!--</div>-->
-									<!--</div>-->
-								<!--</div>-->
-								<!--<div ng-if="inquiryItem.inquiry.overdue == 0 && inquiryItem.inquiry.check == 1">-->
-									<!--<span class="text-trans half">未报价</span>-->
-									<!--<div class="text-muted" style="padding-top: 50px;">询价单已<br>被提交...</div>-->
-								<!--</div>-->
-								<!--<div ng-if="inquiryItem.inquiry.overdue == 1" class="block">-->
-									<!--<span class="text-trans error">已过期</span>-->
-								<!--</div>-->
-							<!--</div>-->
-						<!--</td>-->
-					<!--</tr>-->
-				<!--</tbody>-->
-			<!--</table>-->
+<div class="detail">
+	<div class="top">
+		<h3>客户公共询价单</h3>
+		<div class="top-right">
+			<span>日期:<em ng-bind="inquiry.date | date:'yyyy-MM-dd'">2017-11-11</em></span>
+			<span>报价单号:<em ng-bind="::inquiry.code">2017-11-11</em></span>
 		</div>
 		</div>
 	</div>
 	</div>
+	<div class="middle">
+		<ul class="list-inline">
+			<li>
+				<span>询价企业</span><em ng-bind="::inquiry.enterprise.enName"></em>
+			</li>
+			<li>
+				<span>联系人&nbsp;</span><em></em>
+			</li>
+			<li>
+				<span>联系电话</span><em></em>
+			</li>
+			<li>
+				<span>企业地址</span><em ng-bind="inquiry.ship"></em>
+			</li>
+			<li>
+				<span>报价截止</span><em ng-bind="::inquiry.endDate | date:'yyyy-MM-dd'"></em>
+			</li>
+		</ul>
+	</div>
+	<table class="table">
+		<thead>
+			<tr>
+				<th>产品型号</th>
+				<th>品牌</th>
+				<th width="60">币种</th>
+				<th width="60">税率</th>
+				<th width="85">分段数量</th>
+				<th width="85">价格</th>
+				<th>交货周期</th>
+				<th>最小订购/包装</th>
+				<th>附件</th>
+			</tr>
+		</thead>
+		<tbody ng-repeat="inquiryItem in newinquiryItems | orderBy:'number'">
+			<tr>
+				<td>
+					<div class="info">
+						<span ng-bind="::inquiryItem.product.code"></span>&nbsp;&nbsp;<i class="fa fa-caret-down"></i>
+						<div class="modal-content">
+							<ul class="list-unstyled">
+								<li><span>产品规格:</span>
+									<em ng-bind="::inquiryItem.product.spec"></em>
+								</li>
+								<li><span>产品名称:</span>
+									<em ng-bind="::inquiryItem.product.title"></em>
+								</li>
+							</ul>
+						</div>
+					</div>
+				</td>
+				<td>
+					<span ng-bind="::inquiryItem.product.brand"></span>
+				</td>
+				<td><span ng-bind="::inquiryItem.currency"></span></td>
+				<td><span ng-bind="::inquiryItem.taxrate"></span><span>%</span></td>
+				<td>
+					<div ng-repeat="reply in inquiryItem.replies">
+						<span ng-bind="reply.lapQty"></span>
+					</div>
+				</td>
+				<td>
+					<div ng-repeat="reply in inquiryItem.replies">
+						<span ng-if="!isUser" ng-bind="reply.price | number:6"></span>
+						<span ng-show="reply.price == null || isUser" class="text-muted">-</span>
+					</div>
+				</td>
+				<td>
+					<span ng-bind="inquiryItem.leadtime ? inquiryItem.leadtime : '-'"></span>
+				</td>
+				<td>
+					<span ng-bind="inquiryItem.minOrderQty ? inquiryItem.minOrderQty : '-'"></span>
+					<span>/</span>
+					<span ng-bind="inquiryItem.minPackQty ? inquiryItem.minPackQty : '-'"></span>
+				</td>
+				<td>
+					<a href="javescript:void(0)">dsafsa.paf</a>
+				</td>
+			</tr>
+		</tbody>
+	</table>
 </div>
 </div>