فهرست منبع

投标单和评标单自己附件可以下载;招标将投标阶段的招标单分为已投标和待投标两个分类显示

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@10733 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d
dongbw 8 سال پیش
والد
کامیت
5192f86524

+ 40 - 8
src/main/java/com/uas/platform/b2b/controller/PurchaseTenderController.java

@@ -219,9 +219,9 @@ public class PurchaseTenderController {
      * @param params 分页参数
      * @return Sapge
      */
-    @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
+    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getDoneTenders(PageParams params, String searchFilter) {
+    public SPage<PurchaseTender> getEndTenders(PageParams params, String searchFilter) {
         if (logger != null) {
             logger.log("客户招标单", "查看客户发出的招标单(已结标)");
         }
@@ -275,6 +275,37 @@ public class PurchaseTenderController {
         return searchService.searchPurcTenderIds(keyword, pageParams);
     }
 
+    /**
+     * 作为供应商,查看收到的招标单(已投标)
+     *
+     * @param params 分页参数
+     * @return 招标单Spage
+     */
+    @RequestMapping(params = RequestState.DONE, method = RequestMethod.GET)
+    @ResponseBody
+    public SPage<PurchaseTender> getDoneTenders(PageParams params, String searchFilter) {
+        if (logger != null) {
+            logger.log("客户招标单", "查看客户发出的招标单(已投标)");
+        }
+        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+        String keyword = jsonObject.getString("keyword");
+        com.uas.search.b2b.model.PageParams pageParams = searchService.convertPageParams(params, searchFilter);
+        // 判断当前用户是否被客户分配
+        SearchFilter filter = userService.distribute();
+        if (filter != null && filter.getDistribute() == null) {
+            return null;
+        }
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
+        pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu());
+        pageParams.getFilters().put("st_ispublish", Constant.YES);
+//        pageParams.getFilters().put("pt_ifopen", Constant.NO);
+        pageParams.getFilters().put("st_overdue", Constant.NO);
+        pageParams.getFilters().put("st_status", "已投标");
+        return searchService.searchSaleTenderIds(keyword, pageParams);
+    }
+
 
     /**
      * 作为供应商,查看收到的招标单(待投标)
@@ -299,11 +330,12 @@ public class PurchaseTenderController {
         List<Sort> sortList = new ArrayList<>();
         sortList.add(new Sort("pt_id", false, Sort.Type.LONG, 1L));
         pageParams.getFilters().put(SearchConstants.SORT_KEY, sortList);
-        pageParams.getFilters().put("tp_ptid", SystemSession.getUser().getEnterprise().getEnName());
-        pageParams.getFilters().put("pt_ispublish", Constant.YES);
+        pageParams.getFilters().put("st_venduu", SystemSession.getUser().getEnterprise().getUu());
+        pageParams.getFilters().put("st_ispublish", Constant.YES);
 //        pageParams.getFilters().put("pt_ifopen", Constant.NO);
-        pageParams.getFilters().put("pt_overdue", Constant.NO);
-        return searchService.searchPurcTenderIds(keyword, pageParams);
+        pageParams.getFilters().put("st_overdue", Constant.NO);
+        pageParams.getFilters().put("st_status", "待投标");
+        return searchService.searchSaleTenderIds(keyword, pageParams);
     }
 
 
@@ -313,9 +345,9 @@ public class PurchaseTenderController {
      * @param params 分页参数
      * @return 招标单Spage
      */
-    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
+    @RequestMapping(params = RequestState.INVALID, method = RequestMethod.GET)
     @ResponseBody
-    public SPage<PurchaseTender> getEndTenders(PageParams params, String searchFilter) {
+    public SPage<PurchaseTender> getInvalidTenders(PageParams params, String searchFilter) {
         if (logger != null) {
             logger.log("客户招标单", "查看客户发出的招标单(已过期)");
         }

+ 16 - 24
src/main/java/com/uas/platform/b2b/erp/controller/TenderController.java

@@ -1,32 +1,11 @@
 package com.uas.platform.b2b.erp.controller;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
-
 import com.alibaba.dubbo.common.utils.CollectionUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.erp.service.TenderService;
-import com.uas.platform.b2b.model.Attach;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.EnterpriseBaseInfo;
-import com.uas.platform.b2b.model.FileUpload;
-import com.uas.platform.b2b.model.PurchaseTender;
-import com.uas.platform.b2b.model.SaleTenderItem;
-import com.uas.platform.b2b.model.SearchFilter;
-import com.uas.platform.b2b.model.VendorContact;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.UserService;
 import com.uas.platform.b2b.service.VendorService;
@@ -40,6 +19,19 @@ import com.uas.search.b2b.model.MultiValue;
 import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * Created by dongbw
@@ -471,7 +463,7 @@ public class TenderController {
         pageParams.getFilters().put("pt_ispublish", Constant.YES);
         pageParams.getFilters().put("pt_status", "已结标");
         pageParams.getFilters().put("pt_overdue", Constant.YES);
-        pageParams.getFilters().put("pt_result", Constant.YES);
+//        pageParams.getFilters().put("pt_result", Constant.YES);
         return searchService.erpSearchPurcTenderIds(keyword, pageParams);
     }
 
@@ -500,7 +492,7 @@ public class TenderController {
         pageParams.getFilters().put("pt_ispublish", Constant.YES);
         pageParams.getFilters().put("pt_status", "流标");
         pageParams.getFilters().put("pt_overdue", Constant.YES);
-        pageParams.getFilters().put("pt_result", Constant.YES);
+//        pageParams.getFilters().put("pt_result", Constant.YES);
         return searchService.erpSearchPurcTenderIds(keyword, pageParams);
     }
 

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

@@ -1,10 +1,13 @@
 package com.uas.platform.b2b.erp.service.impl;
 
 import com.uas.account.util.AccountUtils;
+import com.uas.platform.b2b.core.util.ContextUtils;
 import com.uas.platform.b2b.core.util.ThreadTask;
 import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.erp.service.TenderService;
+import com.uas.platform.b2b.event.PurchaseTenderDecideReleaseEvent;
+import com.uas.platform.b2b.event.PurchaseTenderSaveReleaseEvent;
 import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.service.AttachService;
 import com.uas.platform.b2b.support.SystemSession;
@@ -567,6 +570,7 @@ public class TenderServiceImpl implements TenderService {
      * @param tenderProd
      */
     private void addSaleTender(PurchaseTender tender, List<TenderContactInfo> contactInfos, PurchaseTenderProd tenderProd) {
+        List<SaleTender> eventList = new ArrayList<>();
         if (!CollectionUtils.isEmpty(contactInfos)) {
             List<SaleTenderItem> saleTenderItems = new ArrayList<>();
             for (TenderContactInfo contactInfo : contactInfos) {
@@ -614,6 +618,8 @@ public class TenderServiceImpl implements TenderService {
                                     }
                                 }
                                 saleTender = saleTenderDao.save(saleTender);
+                                // 新增消息
+                                eventList.add(saleTender);
                                 if (tender.getIsPublish() == Constant.YES) {
                                     saveUserOrders(saleTender, tender);
                                 }
@@ -638,6 +644,9 @@ public class TenderServiceImpl implements TenderService {
                 saleTenderDao.save(saleTenders);
             }
         }
+        if (Constant.YES == tender.getIsPublish()) {
+            ContextUtils.publishEvent(new PurchaseTenderSaveReleaseEvent(eventList));
+        }
     }
 
     /**
@@ -1024,6 +1033,8 @@ public class TenderServiceImpl implements TenderService {
             }
             saleTenderItemDao.save(items);
         }
+        // 定标时,给供应商产生消息
+        ContextUtils.publishEvent(new PurchaseTenderDecideReleaseEvent(SaleTenderItem.distinct(saleTenderItems)));
         ModelMap map = new ModelMap();
         map.put("success", true);
         return map;

+ 2 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseTenderDecideReleaseEvent.java

@@ -36,7 +36,8 @@ public class PurchaseTenderDecideReleaseEvent extends SaveReleaseEvent<PagingRel
         String emName = "采购员";
         if (null == emUU) {
             emUU = 1L;
-        } else {
+        }
+        if (null != saleTender.getRecorder()) {
             emName = saleTender.getRecorder().getUserName();
         }
         Long enUU = saleTender.getEnUU();

+ 2 - 1
src/main/java/com/uas/platform/b2b/event/PurchaseTenderSaveReleaseEvent.java

@@ -35,7 +35,8 @@ public class PurchaseTenderSaveReleaseEvent extends SaveReleaseEvent<PagingRelea
         String emName = "采购员";
         if (null == emUU) {
             emUU = 1L;
-        } else {
+        }
+        if (null != saleTender.getRecorder()) {
             emName = saleTender.getRecorder().getUserName();
         }
         Long enUU = saleTender.getEnUU();

+ 1 - 1
src/main/java/com/uas/platform/b2b/listener/MessageListener.java

@@ -87,7 +87,7 @@ public class MessageListener implements ApplicationListener<SaveReleaseEvent<?,
 						// 去掉已将权限转移的管理员
 						Set<Long> leaderUUs = new HashSet<>();
 						for (Distribute distribute : distributes) {
-							if (distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
+							if (null != distribute.getIsTransfer() && distribute.getIsTransfer() == Constant.YES && distribute.getLeaderUU() != null
 									&& !leaderUUs.contains(distribute.getLeaderUU())) {
 								leaderUUs.add(distribute.getLeaderUU());
 							}

+ 3 - 3
src/main/java/com/uas/platform/b2b/model/PurchaseTender.java

@@ -69,7 +69,7 @@ public class PurchaseTender implements Serializable {
      */
     @OneToOne
     @JoinColumn(name = "pt_useruu", insertable = false, updatable = false)
-    private User userInfo;
+    private UserBaseInfo userInfo;
 
     /**
      * 联系人tel
@@ -248,11 +248,11 @@ public class PurchaseTender implements Serializable {
 
     @JsonIgnore
     @JSONField(serialize = false)
-    public User getUserInfo() {
+    public UserBaseInfo getUserInfo() {
         return userInfo;
     }
 
-    public void setUserInfo(User userInfo) {
+    public void setUserInfo(UserBaseInfo userInfo) {
         this.userInfo = userInfo;
     }
 

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

@@ -99,9 +99,9 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
     /**
      * 招标发起人
      */
-    @OneToOne
+    @OneToOne(cascade = CascadeType.REFRESH )
     @JoinColumn(name = "st_recorderuu", insertable = false, updatable = false)
-    private User recorder;
+    private UserBaseInfo recorder;
 
     /**
      * 供应商联系人电话
@@ -511,11 +511,11 @@ public class SaleTender implements Serializable, Comparable<SaleTender> {
         this.recorderuu = recorderuu;
     }
 
-    public User getRecorder() {
+    public UserBaseInfo getRecorder() {
         return recorder;
     }
 
-    public void setRecorder(User recorder) {
+    public void setRecorder(UserBaseInfo recorder) {
         this.recorder = recorder;
     }
 

+ 2 - 1
src/main/java/com/uas/platform/b2b/model/SaleTenderItem.java

@@ -152,8 +152,9 @@ public class SaleTenderItem implements Serializable{
         List<SaleTender> tenders = new ArrayList<>();
         Set<Long> keys = new HashSet<Long>();
         for (SaleTenderItem item : items) {
-            if (keys.add(item.getSaleTender().getId())){
+            if (!keys.contains(item.getSaleTender().getId())){
                 tenders.add(item.getSaleTender());
+                keys.add(item.getSaleTender().getId());
             }
         }
         return tenders;

+ 9 - 0
src/main/java/com/uas/platform/b2b/search/SearchService.java

@@ -288,6 +288,15 @@ public interface SearchService {
 	 */
 	public SPage<PurchaseTender> searchPurcTenderIds(String keyword, PageParams pageParams);
 
+	/**
+	 * 招标单(待投标和已投标用投标单做过滤)
+	 *
+	 * @param keyword
+	 * @param pageParams
+	 * @return
+	 */
+	public SPage<PurchaseTender> searchSaleTenderIds(String keyword, PageParams pageParams);
+
 	/**
 	 * 招标单
 	 *

+ 44 - 106
src/main/java/com/uas/platform/b2b/search/SearchServiceImpl.java

@@ -1,119 +1,15 @@
 package com.uas.platform.b2b.search;
 
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.alibaba.fastjson.JSONObject;
 import com.uas.account.entity.UserSpaceDetail;
 import com.uas.account.support.Page;
 import com.uas.account.util.AccountUtils;
-import com.uas.platform.b2b.dao.BrandDao;
-import com.uas.platform.b2b.dao.CartDao;
-import com.uas.platform.b2b.dao.ComponentDao;
-import com.uas.platform.b2b.dao.DeputyOrderDao;
-import com.uas.platform.b2b.dao.EnterpriseDao;
-import com.uas.platform.b2b.dao.InvitationRecordDao;
-import com.uas.platform.b2b.dao.KindDao;
-import com.uas.platform.b2b.dao.MakeAcceptDao;
-import com.uas.platform.b2b.dao.MakeOrderChangeItemDao;
-import com.uas.platform.b2b.dao.MakeOrderDao;
-import com.uas.platform.b2b.dao.MakeReturnDao;
-import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
-import com.uas.platform.b2b.dao.ProductDao;
-import com.uas.platform.b2b.dao.PurcInquiryDao;
-import com.uas.platform.b2b.dao.PurcInquiryItemInfoDao;
-import com.uas.platform.b2b.dao.PurchaseAcceptDao;
-import com.uas.platform.b2b.dao.PurchaseApBillDao;
-import com.uas.platform.b2b.dao.PurchaseApCheckDao;
-import com.uas.platform.b2b.dao.PurchaseBadInDao;
-import com.uas.platform.b2b.dao.PurchaseBadOutDao;
-import com.uas.platform.b2b.dao.PurchaseForecastAllDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryItemDao;
-import com.uas.platform.b2b.dao.PurchaseInquiryMouldDao;
-import com.uas.platform.b2b.dao.PurchaseMRBDao;
-import com.uas.platform.b2b.dao.PurchaseNoticeDao;
-import com.uas.platform.b2b.dao.PurchaseOrderAllDao;
-import com.uas.platform.b2b.dao.PurchaseOrderChangeDao;
-import com.uas.platform.b2b.dao.PurchaseOrderDoneDao;
-import com.uas.platform.b2b.dao.PurchaseOrderEndDao;
-import com.uas.platform.b2b.dao.PurchaseOrderReceivedDao;
-import com.uas.platform.b2b.dao.PurchaseOrderTodoDao;
-import com.uas.platform.b2b.dao.PurchaseOrderWaitingDao;
-import com.uas.platform.b2b.dao.PurchaseProofingApprovalDao;
-import com.uas.platform.b2b.dao.PurchaseProofingItemDao;
-import com.uas.platform.b2b.dao.PurchaseProofingSendDao;
-import com.uas.platform.b2b.dao.PurchaseReturnDao;
-import com.uas.platform.b2b.dao.PurchaseTenderDao;
-import com.uas.platform.b2b.dao.SaleARCheckDao;
-import com.uas.platform.b2b.dao.SaleQuotationAllDao;
-import com.uas.platform.b2b.dao.SaleSendAllDao;
-import com.uas.platform.b2b.dao.SaleTenderErpDao;
-import com.uas.platform.b2b.dao.VendorDao;
+import com.uas.platform.b2b.dao.*;
 import com.uas.platform.b2b.erp.model.B2BCustomer;
 import com.uas.platform.b2b.erp.model.B2BVendor;
 import com.uas.platform.b2b.erp.model.SaleTenderErp;
 import com.uas.platform.b2b.erp.model.SaleTenderItemErp;
-import com.uas.platform.b2b.model.Brand;
-import com.uas.platform.b2b.model.Cart;
-import com.uas.platform.b2b.model.Component;
-import com.uas.platform.b2b.model.DeputyOrder;
-import com.uas.platform.b2b.model.Enterprise;
-import com.uas.platform.b2b.model.InvitationRecord;
-import com.uas.platform.b2b.model.Kind;
-import com.uas.platform.b2b.model.MakeAccept;
-import com.uas.platform.b2b.model.MakeOrder;
-import com.uas.platform.b2b.model.MakeOrderChangeItem;
-import com.uas.platform.b2b.model.MakeReturn;
-import com.uas.platform.b2b.model.PagingReleaseDetail;
-import com.uas.platform.b2b.model.Product;
-import com.uas.platform.b2b.model.PurcInquiry;
-import com.uas.platform.b2b.model.PurcInquiryItemInfo;
-import com.uas.platform.b2b.model.PurchaseAccept;
-import com.uas.platform.b2b.model.PurchaseApBill;
-import com.uas.platform.b2b.model.PurchaseApCheck;
-import com.uas.platform.b2b.model.PurchaseBadIn;
-import com.uas.platform.b2b.model.PurchaseBadOut;
-import com.uas.platform.b2b.model.PurchaseForecastAll;
-import com.uas.platform.b2b.model.PurchaseInquiryItem;
-import com.uas.platform.b2b.model.PurchaseInquiryMould;
-import com.uas.platform.b2b.model.PurchaseMRB;
-import com.uas.platform.b2b.model.PurchaseNotice;
-import com.uas.platform.b2b.model.PurchaseOrderAll;
-import com.uas.platform.b2b.model.PurchaseOrderChange;
-import com.uas.platform.b2b.model.PurchaseOrderDone;
-import com.uas.platform.b2b.model.PurchaseOrderEnd;
-import com.uas.platform.b2b.model.PurchaseOrderReceived;
-import com.uas.platform.b2b.model.PurchaseOrderTodo;
-import com.uas.platform.b2b.model.PurchaseOrderWaiting;
-import com.uas.platform.b2b.model.PurchaseProofingApproval;
-import com.uas.platform.b2b.model.PurchaseProofingItem;
-import com.uas.platform.b2b.model.PurchaseProofingSend;
-import com.uas.platform.b2b.model.PurchaseReturn;
-import com.uas.platform.b2b.model.PurchaseTender;
-import com.uas.platform.b2b.model.PurchaseTenderProd;
-import com.uas.platform.b2b.model.SaleARCheck;
-import com.uas.platform.b2b.model.SaleQuotationAll;
-import com.uas.platform.b2b.model.SaleSendAll;
-import com.uas.platform.b2b.model.Vendor;
+import com.uas.platform.b2b.model.*;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.persistence.criteria.PredicateFactory;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
@@ -121,6 +17,19 @@ import com.uas.search.b2b.model.PageParams;
 import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.service.SearchService.Table_name;
 import com.uas.search.b2b.util.SearchConstants;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * 搜索实现
@@ -264,6 +173,9 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 	@Autowired
 	private KindDao kindDao;
 
+	@Autowired
+	private SaleTenderDao saleTenderDao;
+
 	/**
 	 * 联想词size
 	 */
@@ -857,6 +769,32 @@ public class SearchServiceImpl implements com.uas.platform.b2b.search.SearchServ
 		return toSPage(idsPage, content);
 	}
 
+	/**
+	 *  招标单(待投标和已投标用投标单搜索)
+	 * @param keyword
+	 * @param pageParams
+	 * @return
+	 */
+	@Override
+	public SPage<PurchaseTender> searchSaleTenderIds(String keyword, PageParams pageParams) {
+		SPage<Long> idsPage = searchService.searchIds(keyword, Table_name.SALE$TENDER_B2B, pageParams);
+		List<SaleTender> content = saleTenderDao.findAll(idsPage.getContent());
+		List<PurchaseTender> tenders = new ArrayList<>();
+		List<Long> tenderIds = new ArrayList<>();
+		for (SaleTender saleTender : content) {
+			if (null != saleTender.getPtId()) {
+				PurchaseTender tender = purchaseTenderDao.findOne(saleTender.getPtId());
+				if (null != tender) {
+					tenderIds.add(saleTender.getId());
+					tenders.add(tender);
+				}
+			}
+		}
+		idsPage.setContent(tenderIds);
+		sortByProperty(tenders, PurchaseTender.class, "id", idsPage.getContent());
+		return toSPage(idsPage, tenders);
+	}
+
 
 	/**
 	 *  erp查看招标单

+ 9 - 4
src/main/webapp/resources/js/index/services/Purc.js

@@ -443,9 +443,9 @@ define([ 'ngResource'], function() {
             },
             getAll: {
             },
-            getDone: {
+            getEnd: {
                 params: {
-                    _state: 'done'
+                    _state: 'end'
                 }
             },
             getWaiting: {
@@ -453,14 +453,19 @@ define([ 'ngResource'], function() {
                     _state: 'waiting'
                 }
             },
+            getDone: {
+                params: {
+                    _state: 'done'
+                }
+            },
             getTodo: {
                 params: {
                     _state: 'todo'
                 }
             },
-            getEnd: {
+            getInvalid: {
                 params: {
-                    _state: 'end'
+                    _state: 'invalid'
                 }
             },
             getOpenAll: {

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

@@ -893,7 +893,9 @@ input[type="radio"], input[type="checkbox"] {
                         <div class="fileInputContainer">
                             <input class="fileInput" type="file" ng-file-select name="file" ng-model="myFile" ng-change="upload(myFile)" />
                             <!-- href="file/{{attach.id}}" -->
-                            <div class="attach-file" ng-repeat="attach in attaches">{{attach.name}}&nbsp;&nbsp;<a ng-click="removeAttach(attach.id, $index)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
+                            <div class="attach-file" ng-repeat="attach in attaches">
+                                <a style="color: #5078cb;" href="file/{{attach.id}}">{{::attach.name}}</a>&nbsp;&nbsp;
+                                <a ng-click="removeAttach(attach.id, $index)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
                             </div>
                         </div>
                         <div style="margin-left: 100px; width: 100px; color: #969595; font-size: 12px; position: absolute;">

+ 9 - 67
src/main/webapp/resources/tpl/index/purc/tender_evaluation.html

@@ -225,10 +225,9 @@
 <div class="ng-scope">
     <form name="bidForm">
         <div class="purc-bid">
-            <!--<div class="col-xs-12" style="font-size: 14px; height: 36px; padding-top: 10px;">
-                <span style="font-family: 'Microsoft Yahei Regular'; font-weight: 600; color: rgb(0,0,0);">服务>招标></span><span style="color: #327EBE;">待投标</span>
-            </div>-->
-            <!--<div class="com_title">服务>招标<font>>待评标</font></div>-->
+            <div class="loading in" ng-class="{'in': loading}">
+                <i></i>
+            </div>
             <div class="com_head"><span>评标单</span></div>
             <div class="bid-content ng-scope">
                 <div class="title-div" style="border-bottom: 1px dashed #327ebe;">
@@ -276,70 +275,13 @@
                         <div class="bid-desc">证照要求:</div>
                         <div class="unchanged-info">{{tender.certificate || '无'}}</div>
                     </div>
+                    <div ng-if="tender.tenderAttaches.length > 0" class="col-xs-12">
+                        <span class="bid-desc">招标附件:</span>
+                        <div ng-repeat="attach in tender.tenderAttaches">
+                            <a class="col-xs-10" style="color: #5078cb;" href="file/{{attach.id}}">{{::attach.name}}</a>
+                        </div>
+                    </div>
                 </div>
-                <!--<div class="title-div" style="border-bottom: 1px dashed #327ebe;">
-                    <span>供应商信息</span>
-                </div>
-                <form name="evaluationForm">
-                    <table class="tender-table block" ng-table="tableParams">
-                        <thead>
-                        <tr class="header">
-                            <th width="300">招标供应商</th>
-                            <th width="50">税率</th>
-                            <th width="50">单价</th>
-                            <th width="100">含税金额</th>
-                            <th width="100">不含税金额</th>
-                            <th width="150">说明</th>
-                            <th width="70">定标</th>
-                            <th width="70">不定标</th>
-                        </tr>
-                        </thead>
-                        <tbody>
-                        <tr ng-if="tender.saleTenders == '' || tender.saleTenders == null"
-                            style="font-family: 'Microsoft Yahei Regular'; font-size: 14px; color: #969595;">
-                            <td colspan="8">暂无企业参加招标</td>
-                        </tr>
-                        <tr ng-repeat="item in tender.saleTenders track by item.id">
-                            <td width="300">{{item.enterpriseBaseInfo.enName}}&nbsp;
-                                <a ui-sref="sale.vendortender({vendUU:item.enterpriseBaseInfo.uu, id:tender.id})"
-                                   target="_self" title="查看投标单">查看投标单</a>
-                            </td>
-                            <td width="50">
-                                <div ng-show="tender.overdue != 1 && item.taxrate">**</div>
-                                <div ng-show="tender.overdue == 1 && item.taxrate">{{item.taxrate}}</div>
-                                &lt;!&ndash;<input class="tender-input" type="number" name="taxrate" ng-model="item.taxrate" placeholder="点此输入税率"/>&ndash;&gt;
-                            </td>
-                            <td width="50">
-                                <div ng-show="tender.overdue != 1 && item.price">**</div>
-                                <div ng-show="tender.overdue == 1 && item.price">{{item.price}}</div>
-                                &lt;!&ndash;<input class="tender-input" type="number" name="price" ng-model="item.price" placeholder="点此输入单价"/>&ndash;&gt;
-                            </td>
-                            <td width="70">
-                                <div ng-show="tender.overdue != 1 && item.taxrate && item.price">***</div>
-                                <div ng-show="tender.overdue == 1 && item.taxrate && item.price">{{item.price *
-                                    tender.qty || 0}}
-                                </div>
-                            </td>
-                            <td width="70">
-                                <div ng-show="tender.overdue != 1 && item.taxrate && item.price">***</div>
-                                <div ng-show="tender.overdue == 1 && item.taxrate && item.price">{{item.price *
-                                    tender.qty * (1 + item.taxrate/100) |number: 2 || 0}}
-                                </div>
-                            </td>
-                            <td width="150">
-                                <input class="tender-input" type="text" ng-model="item.description"
-                                       placeholder="点此输入说明">
-                            </td>
-                            <td width="70">
-                                <input type="radio" ng-model="item.applyStatus" value="1"/>
-                            </td>
-                            <td width="70">
-                                <input type="radio" ng-model="item.applyStatus" value="0"/>
-                            </td>
-                        </tr>
-                        </tbody>
-                    </table>
-                </form>-->
                 <div class="tender-list02">
                     <!--投标信息-->
                     <div class="com_title01"><span>投标信息</span><span style="color: #969595; font-size: 12px; padding-left: 10px;"><i class="fa fa-info-circle"></i>投标截止才可查看投标内容</span></div>

+ 9 - 4
src/main/webapp/resources/tpl/index/sale/tender.html

@@ -373,19 +373,24 @@
                         </div>
                     </div>
                 </div>
-                <div style="min-height: 150px;" ng-hide="bid.overdue == 1 || !canSave || !emNumYes">
+                <div style="min-height: 150px;" ng-hide="bid.overdue == 1">
                     <div class="bid-desc" style="margin-left: 20px;">投标附件:</div>
                     <div class="fileInputContainer">
                         <input class="fileInput" type="file" ng-file-select name="file" ng-model="myFile" ng-change="upload(myFile)" />
                         <!-- href="file/{{attach.id}}" -->
-                        <div class="attach-file" ng-repeat="attach in attaches">{{attach.name}}&nbsp;&nbsp;<a ng-click="removeAttach(attach.id, $index, bid.id)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a></div>
+                        <div class="attach-file" ng-repeat="attach in attaches">
+                            <a style="color: #5078cb;" href="file/{{attach.id}}">{{::attach.name}}</a>&nbsp;&nbsp;
+                            <a ng-click="removeAttach(attach.id, $index, bid.id)" title="删除"><i class="fa fa-trash-o fa-lg"></i></a>
+                        </div>
                     </div>
                     <span style="margin-left: 100px; color: #969595; font-size: 12px; font-family: 'Microsoft Yahei Regular';">提示:选择附件大小不超过5MB,可上传JPG,PNG,EXCEL,WORD,PDF</span>
                 </div>
-                <div style="min-height: 50px;" ng-show="(bid.overdue == 1 || !canSave || !emNumYes) && attaches.length > 0">
+                <div style="min-height: 50px;" ng-show="bid.overdue == 1 && attaches.length > 0">
                     <div class="bid-desc" style="margin-left: 20px;">投标附件:</div>
                     <div class="">
-                        <div class="" ng-repeat="attach in attaches">{{attach.name}}</div>
+                        <div ng-repeat="attach in attaches">
+                            <a class="attach-file" style="color: #5078cb;" href="file/{{attach.id}}">{{::attach.name}}</a>
+                        </div>
                     </div>
                 </div>
                 <div  class="title-div" style="border-bottom: 1px dashed #327ebe;">

+ 14 - 118
src/main/webapp/resources/tpl/index/sale/tenderlist.html

@@ -215,12 +215,17 @@
                     </div>
                     <div class="btn-group btn-group-sm">
                         <button type="button" class="btn btn-default btn-line"
-                                ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已结标</button>
+                                ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">已结标</button>
                     </div>
                     <div class="btn-group btn-group-sm">
                         <button type="button" class="btn btn-default btn-line"
                                 ng-class="{'btn-info':active=='waiting'}" ng-click="setActive('waiting')">待评标</button>
                     </div>
+                    <div class="btn-group btn-group-sm">
+                        <button type="button" class="btn btn-default btn-line"
+                                ng-class="{'btn-info':active=='done'}" ng-click="setActive('done')">已投标
+                        </button>
+                    </div>
                     <div class="btn-group btn-group-sm">
                         <button type="button" class="btn btn-default btn-line"
                                 ng-class="{'btn-info':active=='todo'}" ng-click="setActive('todo')">待投标
@@ -229,76 +234,18 @@
                     </div>
                     <div class="btn-group btn-group-sm">
                         <button type="button" class="btn btn-default btn-line"
-                                ng-class="{'btn-info':active=='end'}" ng-click="setActive('end')">已过期</button>
-                    </div>
-                </div>
-            </div>
-            <!--<div class="col-xs-5">
-                <div class="search">
-                    <div class="form-group form-group-sm has-feedback">
-                        <input type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入商品、客户名称或单据流水号搜索" /><span
-                            class="form-control-feedback text-simple"><i
-                            class="fa fa-search"></i></span>
+                                ng-class="{'btn-info':active=='invalid'}" ng-click="setActive('invalid')">已过期</button>
                     </div>
                 </div>
             </div>
-            <div class="col-xs-1">
-                <div class="text-default f14 total">
-                    共 <span ng-bind="tableParams.total()" class="text-num"></span>
-                </div>
-            </div>-->
         </div>
     </div>
     <div class="block main-content">
-        <!--<div class="loading in" ng-class="{'in': loading}">-->
-        <!--<i></i>-->
-        <!--</div>-->
+        <div class="loading in" ng-class="{'in': loading}">
+        <i></i>
+        </div>
         <!-- 选项菜单和新增按钮 -->
         <div class="block">
-            <!--<div class="row div-menu">
-                <div class="col-xs-8"
-                     style="width: 766px; height: 40px; font-size: 16px; font-weight: 600; font-family: 'Microsoft Yahei Regular'; color: #000000;">
-                    <div class="btn-group menu-status">
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-select"
-                                    ng-class="{'btn-selected':active=='all'}" ng-click="setActive('all')">全部
-                            </button>
-                        </div>
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-select"
-                                    ng-class="{'btn-selected':active=='done'}" ng-click="setActive('done')">已结标
-                            </button>
-                        </div>
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-select"
-                                    ng-class="{'btn-selected':active=='waiting'}" ng-click="setActive('waiting')">待评标
-                            </button>
-                        </div>
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-select"
-                                    ng-class="{'btn-selected':active=='todo'}" ng-click="setActive('todo')">待投标
-                            </button>
-                        </div>
-                        <div class="btn-group">
-                            <button type="button" class="btn btn-select"
-                                    ng-class="{'btn-selected':active=='end'}" ng-click="setActive('end')">过期
-                            </button>
-                        </div>
-                    </div>
-                    &lt;!&ndash; <div class="col-xs-1 pull-right" style="padding-top: 5px;">
-                         共<span class="text-num">{{tableParams.total()}}</span>
-                     </div>&ndash;&gt;
-                </div>
-                &lt;!&ndash;<div class="col-xs-2 toggle">
-                    <a ng-click="condition.$open=!condition.$open" class="text-simple"><span ng-bind="condition.$open ? '简化筛选条件' : '更多筛选条件'"></span><i class="fa fa-fw" ng-class="{'fa-angle-up': condition.$open, 'fa-angle-down': !condition.$open}"></i></a>
-                </div>&ndash;&gt;
-                &lt;!&ndash;<div class="col-xs-2 pull-right" style="padding-left: 0;padding-right: 15px; border-left: 16px solid #f5f5f5;">
-                    <a ui-sref="purc.tender" type="button" title="新增投标单" class="btn btn-tender">
-                        <img src="static/img/tender/zhaobiao.png">
-                        <span class="f16" style="color: #327EBE;">投标单</span>
-                    </a>
-                </div>&ndash;&gt;
-            </div>-->
             <div class="condition block">
                 <div class="search-bg condition block" style="padding: 10px 15px;">
                     <div class="row">
@@ -368,7 +315,7 @@
         </div>
         <!-- 除已评标的显示 -->
         <table class="tender-table block" ng-table="tableParams">
-            <thead ng-show="active != 'done' && active != 'waiting'">
+            <thead ng-show="active != 'end' && active != 'waiting'">
             <tr class="header">
                 <th width="300">招标信息</th>
                 <th width="80">联系人</th>
@@ -409,13 +356,7 @@
                 </td>
             </tr>
             </tbody>
-            <!--<tbody ng-repeat="order in $data track by order.id">
-                <tr class="order-bd" ng-repeat="item in order.orderItems track by item.id"
-                    ng-if="!order.$collapsed ">
-
-                </tr>
-            </tbody>-->
-            <tbody class="not-done" ng-repeat="tender in $data" ng-show="active != 'done' && active != 'waiting'">
+            <tbody class="not-done" ng-repeat="tender in $data" ng-show="active != 'end' && active != 'waiting'">
             <tr>
                 <td class="list-notnum" width=300">
                     <div>
@@ -462,26 +403,6 @@
                         <img src="static/img/tender/daitoubiao.png">
                     </div>
                 </td>
-                <!--<td width="150">-->
-                <!--<div ng-if="tender.status == '已结标' && tender.result == 1 && tender.applyVendor">-->
-                <!--<img src="static/img/tender/zhongbiao.png">-->
-                <!--</div>-->
-                <!--<div ng-if="(tender.status == '流标' && tender.vendorHasBid) || (tender.status == '已结标' && tender.result == 1 && !tender.applyVendor) || (tender.status == '待评标' && tender.result == 1 && tender.vendorHasBid)">-->
-                <!--<img src="static/img/tender/weizhongbiao.png">-->
-                <!--</div>-->
-                <!--<div ng-if="(tender.status == '流标' && !tender.vendorHasBid) || (tender.status == '待评标' && !tender.vendorHasBid) || (tender.status == '待投标' && tender.overdue == 1)">-->
-                <!--<img src="static/img/tender/liubiao.png">-->
-                <!--</div>-->
-                <!--<div ng-if="tender.status == '待评标' && tender.overdue == 1 && tender.result != 1 && tender.vendorHasBid">-->
-                <!--<img src="static/img/tender/daipingbiao.png">-->
-                <!--</div>-->
-                <!--<div ng-if="tender.overdue != 1 && tender.vendorHasBid">-->
-                <!--<img src="static/img/tender/yitoubiao.png">-->
-                <!--</div>-->
-                <!--<div ng-if="tender.overdue != 1 && !tender.vendorHasBid">-->
-                <!--<img src="static/img/tender/daitoubiao.png">-->
-                <!--</div>-->
-                <!--</td>-->
             </tr>
             <tr>
                 <td colspan="6">
@@ -492,7 +413,7 @@
             </tr>
             </tbody>
             <!-- 已评标和已投标显示 -->
-            <thead ng-show="active == 'done' || active == 'waiting'">
+            <thead ng-show="active == 'end' || active == 'waiting'">
             <tr class="header">
                 <th width="350">产品信息</th>
                 <th width="150">采购数量</th>
@@ -501,13 +422,7 @@
                 <th width="150">状态</th>
             </tr>
             </thead>
-            <!--<tbody ng-repeat="order in $data track by order.id">
-                <tr class="order-bd" ng-repeat="item in order.orderItems track by item.id"
-                    ng-if="!order.$collapsed ">
-
-                </tr>
-            </tbody>-->
-            <tbody class="is-done" ng-repeat="tender in $data" ng-show="active == 'done' || active == 'waiting'">
+            <tbody class="is-done" ng-repeat="tender in $data" ng-show="active == 'end' || active == 'waiting'">
             <tr class="pro-line-sty01">
                 <td class="list-notnum" width="350">
                     <div>招标标题:{{tender.title}}</div>
@@ -525,25 +440,6 @@
                     </div>
                     <div>联系人:{{tender.user}}&nbsp;&nbsp{{tender.userTel}}</div>
                 </td>
-                <!--<td width="150">-->
-                    <!-- 招标单状态 -->
-                    <!--<div ng-if="tender.status == '已结标'">-->
-                    <!--<img src="static/img/tender/yijiebiao.png">-->
-                    <!--</div>-->
-                    <!--<div ng-if="(tender.status == '待评标' && tender.overdue == 1 && tender.result == 1) || (tender.status == '待投标' && tender.overdue == 1) || tender.status == '流标'">-->
-                    <!--&lt;!&ndash; 没人报、报了到期没评、评了没有采纳 &ndash;&gt;-->
-                    <!--<img src="static/img/tender/liubiao.png">-->
-                    <!--</div>-->
-                    <!--<div ng-if="tender.status == '待评标' && tender.overdue == 1 && tender.result != 1">-->
-                    <!--<img src="static/img/tender/daipingbiao.png">-->
-                    <!--</div>-->
-                    <!--<div ng-if="(tender.status == '待评标' && tender.overdue != 1) || (tender.status == '待投标' && tender.overdue != 1)">-->
-                    <!--<img src="static/img/tender/toubiaozhong.png">-->
-                    <!--</div>-->
-                    <!--<div ng-if="tender.status == '待发布'">-->
-                    <!--<img src="static/img/tender/zailuru.png">-->
-                    <!--</div>-->
-                <!--</td>-->
             </tr>
             <tr ng-repeat="tenderProd in tender.purchaseTenderProds | orderBy : '- id'" ng-show="tenderProd.currentItem.price && tenderProd.currentItem.saleTender.auditStatus != 0" class="pro-line-sty02"><!--  ng-show="tenderProd.currentItem.price" -->
                 <td class="list-notnum" width="350">