Bladeren bron

Merge remote-tracking branch 'origin/feature-201823-wangcz' into feature-201823-wangcz

yangc 7 jaren geleden
bovenliggende
commit
cbddaa86df

+ 129 - 38
src/main/webapp/resources/js/usercenter/controllers/forstore/bom_detail_ctrl.js

@@ -6,9 +6,9 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
     'use strict';
     app.register.controller('bomDetailCtrl',
         ['$scope', '$rootScope', 'seekPurchase', 'toaster', 'BaseService',
-            'ngTableParams', 'Order', 'SessionService', '$filter', '$upload', '$stateParams', '$http',
+            'ngTableParams', 'Order', 'SessionService', '$filter', '$upload', '$stateParams', '$http','Authority',
             function ($scope, $rootScope, seekPurchase, toaster, BaseService,
-                      ngTableParams, Order, SessionService, $filter, $upload, $stateParams, $http) {
+                      ngTableParams, Order, SessionService, $filter, $upload, $stateParams, $http, Authority) {
                 $rootScope.active = 'seek_purchase';
                 document.title = '我的求购-优软商城';
                 $scope.isEditName = false;
@@ -286,53 +286,144 @@ define(['app/app', 'clipboard', 'QRCode'], function (app, clipboard, QRCode) {
                 }
 
                 // 采纳报价
-                $scope.adopt = function () {
-                  if (!$scope.purchaseQuantity) {
-                    toaster.pop('error', "请输入正确的采购数量");
-                    return;
-                  }
-                  seekPurchase.updateSeekPurchaseStatus({
-                    spId: $scope.currentOffer.spId,
-                    ofId: $scope.currentOffer.id,
-                    purchaseQuantity: $scope.purchaseQuantity
-                  }, {}, function (data) {
-                    if (data.success) {
-                      $scope.currentOffer = null;
-                      $scope.seekPurchaseTableParams.reload();
-                      $scope.showUseFlag = false;
-                      toaster.pop('success', '采纳报价成功');
-                    } else {
-                      toaster.pop('error', data.message);
-                    }
-                  }, function (response) {
-                    toaster.pop('error', response.data);
+                $scope.adopt = function (of) {
+                  $http({
+                    headers:{
+                      'content-Type':'application/x-www-form-urlencoded'
+                    },
+                    method: 'POST',
+                    dataType: 'json',
+                    url: seekUrl + '/inquiry/buyer/adopt',
+                    params: {id: of.id, status: 1}
+                  }).success(function (data) {
+                    toaster.pop('success', '采纳报价成功');
+                    of.agreed = 1;
+                    // $scope.seekPurchaseTableParams.reload();
+                  }).error(function (response) {
+                    toaster.pop('error', response ? response.message : '该单据可能已被操作,请刷新后重试');
                   });
                 }
+                //  点击拒绝,选择理由
+                $scope.currentRefuseOffer = {};
+                $scope.showCurrentRefuseOffer = false;
+                $scope.setActiveRefuse = function (of) {
+                  $scope.currentRefuseOffer = of;
+                  $scope.setShowCurrentRefuseOffer(true);
+                }
+
+                $scope.setShowCurrentRefuseOffer = function (flag) {
+                  $scope.showCurrentRefuseOffer = flag;
+                }
+
+                $scope.choice = '采购需求变更';
 
+                // 选择理由
+                $scope.refuse = function (choice) {
+                  $http({
+                    headers:{
+                      'content-Type':'application/x-www-form-urlencoded'
+                    },
+                    method: 'POST',
+                    dataType: 'json',
+                    url: seekUrl + '/inquiry/buyer/refuse',
+                    params: {id:  $scope.currentRefuseOffer.id, status: 0, refusereason: choice}
+                  }).success(function (data) {
+                    toaster.pop('refuse', '已拒绝报价');
+                    $scope.setShowCurrentRefuseOffer(false);
+                    $scope.currentRefuseOffer.agreed = 0;
+                    $scope.currentRefuseOffer.refusereason =  choice
+                    // $scope.seekPurchaseTableParams.reload();
+                  }).error(function (response) {
+                    toaster.pop('error', response ? response.message : '该单据可能已被操作,请刷新后重试');
+                  });
+                }
                 $scope.offerCount = 0;
                 $scope.goodsCount = 0;
+                $scope.replaceOfferCount = 0;
                 $scope.currentSeek = {};
-                $scope.setSeekStatus = function (seek, status) {
-                  $scope.offerCount = seek.offerAmount || 0;
-                  $scope.goodsCount = seek.goodsAmount || 0;
+
+                // $scope.setSeekStatus = function (seek, status) {
+                //   $scope.offerCount = seek.offerAmount || 0;
+                //   $scope.goodsCount = seek.goodsAmount || 0;
+                //   $scope.currentSeek = seek;
+                //   // 查看报价
+                //   if (status == 2 && $scope.offerCount != 0) {
+                //     seekPurchase.getSeekPurchaseOfferPageInfo(
+                //         {count: 100, page: 1, spId: seek.spId},
+                //         function (data) {
+                //           $scope.offer = data.content;
+                //           clearSeekStatus();
+                //           seek.$status = status;
+                //         });
+                //   } else if (status == 1 && $scope.goodsCount != 0) {// 查看现货
+                //     seekPurchase.getMallGoodsList({spId: seek.spId},
+                //         function (data) {
+                //           $scope.goods = data;
+                //           clearSeekStatus();
+                //           initFragments();
+                //           seek.$status = status;
+                //         });
+                //   } else if (status == 0) { // 收起
+                //     seek.$status = status;
+                //   }
+                //   $scope.selectAmount = 0;
+                //   $scope.selectPrice = 0;
+                // }
+                $scope.setSeekStatus = function (seek, status, isDisabled) {
+                  if (isDisabled) {
+                    seek.$status = status;
+                    return;
+                  }
+                  if (seek.id != $scope.currentSeek.id) {
+                    $scope.isInit = true;
+                    $scope.goodsCount = 0;
+                    $scope.offerCount = 0;
+                    $scope.replaceOfferCount = 0;
+                  }
+
+                  // $scope.offerCount = seek.offerAmount;
                   $scope.currentSeek = seek;
+                  if (!seek.$status || seek.$status != 1) {
+                    seekPurchase.getMallGoodsList({code:seek.cmpCode, brand: seek.inbrand}, function (data) {
+                      $scope.goods = data;
+                      $scope.goodsCount = data.length;
+                    });
+                  }
                   // 查看报价
-                  if (status == 2 && $scope.offerCount != 0) {
-                    seekPurchase.getSeekPurchaseOfferPageInfo(
-                        {count: 100, page: 1, spId: seek.spId},
-                        function (data) {
-                          $scope.offer = data.content;
+                  if ((!seek.$status || seek.$status < 2) || (status == 2 && $scope.offerCount != 0) || (status == 3 && $scope.replaceOfferCount != 0)) {
+                    Authority.getAuthority({resUrl: '/authInquiry/inquiry/getQuotations'}, function (data) {
+                      if (data.status == 'fail') {
+                        toaster.pop('error', data.msg || '系统错误');
+                        return;
+                      } else {
+                        $http({
+                          method: 'GET',
+                          dataType: 'json',
+                          url: seekUrl + '/inquiry/buyer/quotation',
+                          params: {id:  seek.id}
+                        }).success(function (data) {
+                          $scope.offer = data.qutations;
                           clearSeekStatus();
-                          seek.$status = status;
+                          if (data.qutations && data.qutations.length && $scope.isInit) {
+                            for (var i = 0; i < data.qutations.length; i++) {
+                              if (data.qutations[i].isReplace == 1) {
+                                $scope.replaceOfferCount++;
+                              } else {
+                                $scope.offerCount++;
+                              }
+                            }
+                          }
+                          seek.$status = $scope.isInit ? $scope.offerCount == 0 ? 3 : 2 : status;
+                          $scope.isInit = false;
+                        }).error(function (response) {
+                          toaster.pop('error', response ? response.message : '该单据可能已被操作,请刷新后重试');
                         });
+                      }
+                    });
                   } else if (status == 1 && $scope.goodsCount != 0) {// 查看现货
-                    seekPurchase.getMallGoodsList({spId: seek.spId},
-                        function (data) {
-                          $scope.goods = data;
-                          clearSeekStatus();
-                          initFragments();
-                          seek.$status = status;
-                        });
+                    clearSeekStatus();
+                    initFragments();
+                    seek.$status = status;
                   } else if (status == 0) { // 收起
                     seek.$status = status;
                   }

+ 3 - 1
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_no_invoice_ctrl.js

@@ -50,7 +50,6 @@ define([ 'app/app' ], function(app) {
             $scope.keyword = '';
         }
         initDataRule();
-
         $scope.$$kdnData = {};
 
         var initTable = function () {
@@ -130,6 +129,9 @@ define([ 'app/app' ], function(app) {
       // 内层DIV的滚动加载
       var window = angular.element($window);
       var docu = angular.element($document);
+      if (docu.scrollTop() + window.height() > docu.height() - 330) {
+        angular.element('#applyBtn').slideUp(0)
+      }
       window.on('scroll', function () {
         var scrollTop = docu.scrollTop();
         if (scrollTop + window.height() > docu.height() - 330) {

+ 4 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_invoice_ctrl.js

@@ -199,9 +199,13 @@ define([ 'app/app' ], function(app) {
             });
         }
 
+
       // 内层DIV的滚动加载
       var window = angular.element($window);
       var docu = angular.element($document);
+      if (docu.scrollTop() + window.height() > docu.height() - 330) {
+        angular.element('#applyBtn').slideUp(0)
+      }
       window.on('scroll', function () {
         var scrollTop = docu.scrollTop();
         if (scrollTop + window.height() > docu.height() - 330) {

+ 313 - 43
src/main/webapp/resources/view/usercenter/forstore/bomDetail.html

@@ -269,26 +269,27 @@
     }
     .seek-purchase .seek-purchase-content >table >tbody tr.expand-row td .switch-line a {
         position: relative;
-        width: 50%;
+        width: 33.2%;
         height: 34px;
         line-height: 34px;
         text-align: center;
         display: inline-block;
-        background: #d7d6d5;
-        color: #fff;
+        background: #d6e5ff;
+        color: #3f84f6;
     }
     .seek-purchase .seek-purchase-content >table >tbody tr.expand-row td .switch-line a.active {
-        background: #414140;
-    }
-    .seek-purchase .seek-purchase-content >table >tbody tr.expand-row td .switch-line a:first-child::after {
-        position: absolute;
-        right: 0;
-        content: '';
-        width: 0;
-        height: 0;
-        border-bottom: 34px solid #414140;
-        border-left: 12px solid transparent;
+        background: #3f84f6;
+        color: #fff;
     }
+    /*.seek-purchase .seek-purchase-content >table >tbody tr.expand-row td .switch-line a:first-child::after {*/
+        /*position: absolute;*/
+        /*right: 0;*/
+        /*content: '';*/
+        /*width: 0;*/
+        /*height: 0;*/
+        /*border-bottom: 34px solid #414140;*/
+        /*border-left: 12px solid transparent;*/
+    /*}*/
     .seek-purchase .seek-purchase-content >table >tbody tr.expand-row td .switch-line a:first-child.active::after {
         border-bottom-color: #d7d6d5;
     }
@@ -362,9 +363,18 @@
     .seek-purchase .seek-purchase-content .BOM-header > div {
         height: 100px;
         margin: 14px 0 0 0;
-        line-height: 100px;
+        /*line-height: 100px;*/
         border: 1px dashed #fd7748;
-        padding: 0 66px 0 21px;
+        padding: 10px 66px 0 21px;
+    }
+    .seek-purchase .seek-purchase-content .BOM-header > div span {
+        font-size: 22px;
+        font-weight: bold;
+        margin-right: 20px
+    }
+    .seek-purchase .seek-purchase-content .BOM-header > div a {
+        font-size: 14px;
+        color: #666
     }
     .seek-purchase .seek-purchase-content .BOM-header > div .fr {
         line-height: normal;
@@ -546,10 +556,16 @@
         <div class="BOM-header">
             <a href="user#/seekPurchase?type=bomManage">&lt;返回BOM列表</a>
             <div>
-                <p class="BOM-name-area" ng-show="!isEditName">
+                <div class="BOM-name-area" ng-show="!isEditName">
                     <span ng-bind="bomInfo.remark"></span>
-                    <!--<a ng-click="setIsEditName(true)">编辑BOM名称</a>-->
-                </p>
+                    <a ng-bind="bomInfo.date | date:'yyyy-MM-dd HH:mm:ss'"></a>
+                    <div class="progress">
+                        <div class="left">{{bomInfo.quotedAmount}}</div>
+                        <div class="progressBtn" ng-style="{width: bomInfo.quotedAmount / bomInfo.amount * '100' + '%'}"></div>
+                        <div class="right" ng-if="bomInfo.amount - bomInfo.quotedAmount > 0">{{bomInfo.amount - bomInfo.quotedAmount}}</div>
+                    </div>
+                    <p>本单共<span>{{bomInfo.amount}}</span>个产品,<span>{{bomInfo.quotedAmount}}</span>个已报价(其中{{bomInfo.replaceQuotedAmount}}个为替代料报价)</p>
+                </div>
                 <p class="BOM-edit" ng-show="isEditName">
                     <input type="text" class="form-control" ng-change="onBomNameChange()" ng-model="bomName">
                     <a ng-click="setIsEditName(false)">取消</a>
@@ -634,8 +650,8 @@
                 <th width="260">品牌/物料名称</th>
                 <th width="260">型号/规格</th>
                 <th width="110">采购数量(PCS)</th>
-                <th width="120">截止时间</th>
-                <th width="136">状态</th>
+                <th width="120">状态/截止时间</th>
+                <th width="136">操作</th>
                     <!--
                     <select class="select-adder form-control" ng-model="searchStatus" ng-change="onSearch(searchStatus)">
                         <option value="0">全部</option>
@@ -685,11 +701,36 @@
                         </div>
                     </div>
                 </td>
-                <td class="left-time" ng-if="seek.remainingTime > 0">剩余&nbsp;<span ng-bind="getDay(seek.remainingTime)" ng-if="getDay(seek.remainingTime) > 0" class="red-text"></span><i ng-if="getDay(seek.remainingTime) > 0">&nbsp;天&nbsp;</i><span ng-if="getDay(seek.remainingTime) <= 0" ng-bind="getHours(seek.remainingTime)" class="red-text">5</span><i ng-if="getDay(seek.remainingTime) <= 0">&nbsp;小时</i></td>
-                <td class="left-time" ng-if="seek.remainingTime <= 0"><span style="color: red;">已截止</span></td>
+                <td class="left-time">
+                    <div class="row-wrap">
+                        <span ng-if="seek.offerAmount == 0" style="color:red;">待报价</span>
+                        <span ng-if="seek.agreed == 0 && seek.offerAmount > 0">已报价</span>
+                        <span ng-if="seek.agreed == 1" style="color:green;">已采纳</span>
+                        <div class="remain" ng-if="seek.remainingTime > 0">
+                            剩余&nbsp;<span ng-bind="getDay(seek.remainingTime)" ng-if="getDay(seek.remainingTime) > 0" class="red-text"></span>
+                            <i ng-if="getDay(seek.remainingTime) > 0">&nbsp;天&nbsp;</i>
+                            <span ng-if="getDay(seek.remainingTime) <= 0" ng-bind="getHours(seek.remainingTime)" class="red-text">5</span>
+                            <i ng-if="getDay(seek.remainingTime) <= 0">&nbsp;小时</i>
+                        </div>
+                        <div class="remain" ng-if="seek.remainingTime <= 0"><span>已截止</span></div>
+                        <div class="remain" ng-if="seek.remainingTime == null"><span>-</span></div>
+                    </div>
+                </td>
+                <!--<td class="left-time" ng-if="seek.remainingTime > 0">-->
+                    <!--剩余&nbsp;<span ng-bind="getDay(seek.remainingTime)" ng-if="getDay(seek.remainingTime) > 0" class="red-text"></span>-->
+                    <!--<i ng-if="getDay(seek.remainingTime) > 0">&nbsp;天&nbsp;</i>-->
+                    <!--<span ng-if="getDay(seek.remainingTime) <= 0" ng-bind="getHours(seek.remainingTime)" class="red-text">5</span>-->
+                    <!--<i ng-if="getDay(seek.remainingTime) <= 0">&nbsp;小时</i>-->
+                <!--</td>-->
+                <!--<td class="left-time" ng-if="seek.remainingTime <= 0">-->
+                    <!--<span style="color: red;">已截止</span>-->
+                <!--</td>-->
                 <td class="operate-seek">
-                    <span ng-if="seek.offerAmount == 0" style="color:red;">待报价</span>
-                    <span ng-if="seek.offerAmount > 0">已报价</span>
+                    <span style="margin-left:0" ng-if="seek.offerAmount > 0" ng-show="!seek.$status || seek.$status == 0" ng-click="setSeekStatus(seek, 2)">查看报价&nbsp;<i class="fa fa-angle-double-down" style="display: contents;"></i></span>
+                    <span style="margin-left:0" ng-if="seek.goodsAmount > 0" ng-show="!seek.$status || seek.$status == 0" ng-click="setSeekStatus(seek, 1)">商城现货&nbsp;<i class="fa fa-angle-double-down" style="display: contents;"></i></span>
+                    <span style="margin-left:0" ng-show="seek.$status && (seek.$status == 1 || seek.$status == 2 || seek.$status == 3)" ng-click="setSeekStatus(seek, 0, true)">收起&nbsp;<i class="fa fa-angle-double-up" style="display: contents;"></i></span>
+                    <!--<span ng-if="seek.offerAmount == 0" style="color:red;">待报价</span>-->
+                    <!--<span ng-if="seek.offerAmount > 0">已报价</span>-->
                     <div class="sharecode" ng-mouseover="setShowShare(seek,$index)" ng-mouseleave="hideShare($index)">
                         <div class="sharecodeT">分<br/>享</div>
                         <div class="sharecodeBtn">
@@ -716,12 +757,14 @@
                 </td>
                 -->
             </tr>
-            <tr class="expand-row" ng-if="seek.$status == 1 || seek.$status == 2">
+
+            <tr class="expand-row" ng-if="seek.$status == 1 || seek.$status == 2 || seek.$status == 3">
                 <td colspan="10">
                     <div>
                         <div class="switch-line">
-                            <a ng-disabled="goodsCount == 0" ng-class="{'active': seek.$status == 1}" ng-click="setSeekStatus(seek, 1)">商城现货(<span ng-bind="goodsCount || 0"></span>)</a>
-                            <a ng-disabled="offerCount == 0" ng-class="{'active': seek.$status == 2}"  ng-click="setSeekStatus(seek, 2)">当前报价(<span ng-bind="offerCount || 0"></span>)</a>
+                            <a ng-disabled="goodsCount == 0" ng-class="{'active': seek.$status == 1}" ng-click="setSeekStatus(seek, 1, goodsCount == 0)">商城现货(<span ng-bind="goodsCount || 0"></span>)</a>
+                            <a ng-disabled="offerCount == 0" ng-class="{'active': seek.$status == 2}"  ng-click="setSeekStatus(seek, 2, offerCount == 0)">当前报价(<span ng-bind="offerCount || 0"></span>)</a>
+                            <a ng-disabled="replaceOfferCount == 0" ng-class="{'active': seek.$status == 3}"  ng-click="setSeekStatus(seek, 3, replaceOfferCount == 0)">替代型号报价(<span ng-bind="replaceOfferCount"></span>)</a>
                         </div>
                         <div ng-show="seek.$status == 1">
                             <table>
@@ -777,30 +820,118 @@
                             </div>
                             -->
                         </div>
-                        <div ng-show="seek.$status == 2">
+                        <div ng-show="seek.$status == 2 || seek.$status == 3">
                             <table>
                                 <thead>
-                                <tr>
-                                    <th width="173">卖家</th>
-                                    <th width="186">交期(天)</th>
-                                    <th width="186">单价</th>
-                                    <th width="195">生产日期</th>
+                                <tr ng-if="seek.$status == 2">
+                                    <th width="273">卖家</th>
+                                    <th width="233">交期(天)</th>
+                                    <th width="234">价格梯度</th>
+                                    <!--<th width="195">生产日期</th>-->
                                     <th width="221">操作</th>
                                 </tr>
+                                <tr ng-if="seek.$status == 3">
+                                    <th width="164">卖家</th>
+                                    <th width="84">品牌</th>
+                                    <th width="96">型号</th>
+                                    <th width="80">规格</th>
+                                    <th width="81">交期(天)</th>
+                                    <th width="102">价格梯度</th>
+                                    <th width="100">报价时间</th>
+                                    <!--<th width="195">生产日期</th>-->
+                                    <th width="181">操作</th>
+                                </tr>
                                 </thead>
                             </table>
                             <div class="seek-list">
                                 <table>
                                     <tbody>
-                                    <tr ng-repeat="of in offer">
-                                        <td width="173" ng-bind="(of.enterprise).enName"></td>
-                                        <td width="186" class="red-text" ng-bind="of.minDay+'-'+of.maxDay">4-6</td>
-                                        <td width="186"><span>{{of.currency + of.unitPrice | currencyStr}}</span></td>
-                                        <td width="195" ng-bind="of.produceDate || '-'"></td>
-                                        <td width="221" class="operate">
-                                            <a>联系卖家<img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
-                                            <img ng-if="of.status == 202" src="static/img/seekPurchase/recieved.png" alt="" class="ng-scope">
-                                            <span ng-if="seek.status != 202" ng-click="setShowUseFlag(true, of)">采纳报价</span>
+                                        <tr ng-repeat="of in offer track by $index" ng-if="seek.$status == 2 && of.isReplace != 1">
+                                            <td width="273" ng-bind="of.vendName" title="{{of.vendName}}"></td>
+                                            <td width="233" class="red-text" ng-bind="of.leadtime">4-6</td>
+                                            <td width="234" class="seek-replies">
+                                                <!--<span>{{of.currency + of.unitPrice | currencyStr}}</span>-->
+                                                <div class="red-text">
+                                                    <!--<span>{{of.replies[0].lapQty}}</span>
+                                                    <span>{{of.currency + of.replies[0].price | currencyStr}}</span>-->
+                                                </div>
+                                                <ul class="red-text">
+                                                    <li ng-repeat="re in of.replies">
+                                                        <span ng-bind="re.lapQty" title="{{re.lapQty}}">1+</span>
+                                                        <span title="{{of.currency + re.price | currencyStr}}">{{of.currency + re.price | currencyStr}}</span>
+                                                    </li>
+                                                </ul>
+                                            </td>
+                                            <!--<td width="195" ng-bind="of.produceDate || '-'"></td>-->
+                                            <td width="221" class="operate">
+                                                <div style="display: inline-block" ng-controller="ChatContactCtrl as chat">
+                                                    <a href="javascript:void(0)" ng-click="chat.contactWithOther(null, currentSeek.qutations[$index].enterprise.uu, chat.UserType.ENTERPRISE)">联系卖家<img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
+                                                    <div class="com-mall-del-box link-saler-box" ng-if="showLinkBox">
+                                                        <div class="title">
+                                                            <i ng-click="setShowLinkBox(false)"></i>
+                                                        </div>
+                                                        <div class="content">
+                                                            <p><i class="fa fa-exclamation-circle"></i>抱歉,暂时无法与卖家在线沟通!</p>
+                                                            <p>卖家联系电话:<span ng-bind="phone"></span></p>
+                                                            <div>
+                                                                <a ng-click="setShowLinkBox(false)">我知道了</a>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                                <b class="refused-show" ng-if="of.agreed == 0">拒绝原因 <img src="static/img/seekPurchase/refu.png" alt="">
+                                                    <a class="say-price-history" ng-bind="of.refusereason"></a>
+                                                </b>
+                                                <img ng-if="of.agreed == 1" src="static/img/seekPurchase/recieved.png" alt="" class="ng-scope">
+                                                <img ng-if="of.agreed == 0" src="static/img/seekPurchase/refused.png" alt="" class="ng-scope">
+                                                <span class="seek-btn" ng-if="of.agreed != 0 && of.agreed != 1" ng-click="adopt(of)">采纳</span>
+                                                <a class="seek-btn" ng-if="of.agreed != 0 && of.agreed != 1" ng-click="setActiveRefuse(of)">拒绝</a>
+                                            </td>
+                                        </tr>
+                                        <tr ng-repeat="of in offer track by $index" ng-if="seek.$status == 3 && of.isReplace == 1">
+                                        <td width="164" ng-bind="of.vendName" title="{{of.vendName}}"></td>
+                                        <td width="84" ng-bind="of.replaceBrand || '-'" title="{{of.replaceBrand}}"></td>
+                                        <td width="96" ng-bind="of.replaceCmpCode || '-'" title="{{of.replaceCmpCode}}"></td>
+                                        <td width="80" ng-bind="of.replaceSpec || '-'" title="{{of.replaceSpec}}"></td>
+                                        <td width="81" class="red-text" ng-bind="of.leadtime">4-6</td>
+                                        <td width="102" class="seek-replies">
+                                            <!--<span>{{of.currency + of.unitPrice | currencyStr}}</span>-->
+                                            <div class="red-text">
+                                                <!--<span>{{of.replies[0].lapQty}}</span>
+                                                <span>{{of.currency + of.replies[0].price | currencyStr}}</span>-->
+                                            </div>
+                                            <ul class="red-text">
+                                                <li ng-repeat="re in of.replies">
+                                                    <span ng-bind="re.lapQty" title="{{re.lapQty}}">1+</span>
+                                                    <span title="{{of.currency + re.price | currencyStr}}">{{of.currency + re.price | currencyStr}}</span>
+                                                </li>
+                                            </ul>
+                                        </td>
+                                        <td width="100" class="red-text" ng-bind="of.offerTime | date:'yyyy-MM-dd'"></td>
+                                        <!--<td width="195" ng-bind="of.produceDate || '-'"></td>-->
+                                        <td width="181" class="operate">
+                                            <div style="display: inline-block" ng-controller="ChatContactCtrl as chat">
+                                                <a href="javascript:void(0)" ng-click="chat.contactWithOther(null, currentSeek.qutations[$index].enterprise.uu, chat.UserType.ENTERPRISE)">联系卖家<img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
+                                                <div class="com-mall-del-box link-saler-box" ng-if="showLinkBox">
+                                                    <div class="title">
+                                                        <i ng-click="setShowLinkBox(false)"></i>
+                                                    </div>
+                                                    <div class="content">
+                                                        <p><i class="fa fa-exclamation-circle"></i>抱歉,暂时无法与卖家在线沟通!</p>
+                                                        <p>卖家联系电话:<span ng-bind="phone"></span></p>
+                                                        <div>
+                                                            <a ng-click="setShowLinkBox(false)">我知道了</a>
+                                                        </div>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                            <b class="refused-show" ng-if="of.agreed == 0">拒绝原因 <img src="static/img/seekPurchase/refu.png" alt="">
+                                                <a class="say-price-history" ng-bind="of.refusereason"></a>
+                                            </b>
+                                            <img ng-if="of.agreed == 1" src="static/img/seekPurchase/recieved.png" alt="" class="ng-scope">
+                                            <img ng-if="of.agreed == 0" src="static/img/seekPurchase/refused.png" alt="" class="ng-scope">
+                                            <span class="seek-btn" ng-if="of.agreed != 0 && of.agreed != 1" ng-click="adopt(of)">采纳</span>
+                                            <a class="seek-btn" ng-if="of.agreed != 0 && of.agreed != 1" ng-click="setActiveRefuse(of)">拒绝</a>
                                         </td>
                                     </tr>
                                     </tbody>
@@ -836,4 +967,143 @@
             </div>
         </div>
     </div>
-</div>
+    <div class="com-mall-del-box link-saler-box" ng-if="showCurrentRefuseOffer">
+        <div class="title">
+            <i  ng-click="setShowCurrentRefuseOffer(false)"></i>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>拒绝报价原因:
+                <select class="select-adder" ng-model="choice">
+                    <option value="采购需求变更">采购需求变更</option>
+                    <option value="价格过高">价格过高</option>
+                    <option value="需进一步了解信息">需进一步了解信息</option>
+                    <option value="已选定合适供应商">已选定合适供应商</option>
+                    <option value="交期过长">交期过长</option>
+                </select>
+            </p>
+            <div>
+                <a ng-click="setShowCurrentRefuseOffer(false)">关闭</a>
+                <a ng-click="refuse(choice)">确定</a>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    .seek-purchase .link-saler-box {
+        width: 289px;
+        height: auto;
+        min-height: auto;
+        border-radius: 2px;
+        position: fixed;
+        z-index: 10;
+        opacity: 1;
+        background-color: white;
+        -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        margin: -155px 0 0 -75px;
+        top: 55%;
+        left: 50%;
+    }
+    .seek-purchase .link-saler-box .title {
+        background-color: #4290f7;
+        height: 22px;
+        line-height: 22px;
+        margin-bottom: 20px;
+        text-align: right;
+        padding-right: 15px;
+    }
+    .com-mall-del-box .title i {
+        background: url('../img/icon/close.png') no-repeat;
+        display: inline-block;
+        width: 9px;
+        height: 9px;
+        cursor: pointer;
+        margin: 0;
+    }
+    .com-mall-del-box .content {
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .seek-purchase .link-saler-box .content p {
+        line-height: 20px;
+        padding-top: 0;
+        color: #333;
+        font-size: 14px;
+    }
+    .seek-purchase .link-saler-box .content p i {
+        color: #4290f7;
+        margin-right: 4px;
+        font-size: 16px;
+    }
+    .seek-purchase .link-saler-box .select-adder {
+        display: inline-block;
+        width: 127px;
+        height: 22px;
+        border-radius: 2px;
+        border: 1px solid #a7a8a8;
+        padding: 0 20px 0 6px;
+        opacity: 1;
+        background: url(../img/user/images/xiala.png) right no-repeat #fff!important;
+        background-position-x: 100%!important;
+    }
+    .com-mall-del-box .content div {
+        width: 100%;
+        text-align: center;
+        margin: 0 auto
+    }
+    .seek-purchase .link-saler-box .content div a {
+        margin: 18px 0 13px 0;
+        border-radius: 2px;
+        color: #fff;
+        width: 78px!important;
+        background: #4290f7!important;
+    }
+    .progress {
+        width: 265px;
+        height: 13px;
+        line-height: 13px;
+        background: #d7d7d7;
+        border-radius: 13px;
+        overflow: hidden;
+        position: relative;
+        margin-top: 10px;
+        margin-bottom: 10px;
+    }
+    .progress ~ p {
+        font-size: 14px;
+        color: #666;
+    }
+    .seek-purchase .seek-purchase-content .BOM-header > div  p span {
+        color: #fd7748;
+        font-weight: 500;
+        font-size: 14px;
+        margin-right: 0;
+    }
+    .progress .left {
+        color: #fff;
+        font-size: 12px;
+        position: absolute;
+        left: 10px;
+        top: 0;
+        z-index: 2;
+    }
+    .progress .right {
+        color: #fff;
+        font-size: 12px;
+        position: absolute;
+        right: 15px;
+        top: 0;
+        z-index: 2;
+    }
+    .progress .progressBtn {
+        position: absolute;
+        left: 0;
+        top: 0;
+        height: 13px;
+        background: -webkit-linear-gradient(left, #8bbdff, #5078cb); /* Safari 5.1 - 6.0 */
+        background: -o-linear-gradient(left, #8bbdff, #5078cb); /* Opera 11.1 - 12.0 */
+        background: -moz-linear-gradient(left, #8bbdff, #5078cb); /* Firefox 3.6 - 15 */
+        background: linear-gradient(left, #8bbdff, #5078cb); /* 标准的语法 */
+    }
+</style>

+ 8 - 0
src/main/webapp/resources/view/usercenter/forstore/buyer_no_invoice.html

@@ -100,7 +100,15 @@
 .check-act input:checked + label{
     background-position: -31px 0;
 }
+.ng-table-pager::after {
+    content: ' ';
+    clear: both;
+    display: block;
+    visibility: hidden;
+    zoom: 1;
+}
 .apply-btn{
+    z-index: 10;
     /*margin: 30px 0;*/
     text-align: center;
     position: fixed;

+ 57 - 3
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -1412,10 +1412,21 @@
             <tr ng-repeat="bom in $data">
                 <td ng-click="toBomdetail(bom.id)">
                     <img src="static/img/seekPurchase/Excel.png" alt="">
-                    <div>
+                    <div style="width:300px">
                         <p ng-bind="bom.remark"></p>
-                        <div>共 <span class="blue-text" ng-bind="bom.amount || 0"></span> 个产品<!--,<span class="red-text" ng-bind="bom.offerAmount || 0">10</span> 个有报价,<span class="red-text" ng-bind="bom.goodsAmount || 0">7</span> 个有现货--></div>
-                        <div ng-bind="bom.releaseDate | date:'yyyy-MM-dd HH:mm:ss'"></div>
+                        <div ng-bind="bom.date | date:'yyyy-MM-dd HH:mm:ss'">
+
+                        </div>
+                        <!--<div>共 <span class="blue-text" ng-bind="bom.amount || 0"></span> 个产品&lt;!&ndash;,<span class="red-text" ng-bind="bom.offerAmount || 0">10</span> 个有报价,<span class="red-text" ng-bind="bom.goodsAmount || 0">7</span> 个有现货&ndash;&gt;</div>-->
+                        <!--<div ng-bind="bom.releaseDate | date:'yyyy-MM-dd HH:mm:ss'"></div>-->
+                    </div>
+                    <div>
+                        <div class="progress">
+                            <div class="left">{{bom.quotedAmount}}</div>
+                            <div class="progressBtn" ng-style="{width: bom.quotedAmount / bom.amount * '100' + '%'}"></div>
+                            <div class="right" ng-if="bom.amount - bom.quotedAmount > 0">{{bom.amount - bom.quotedAmount}}</div>
+                        </div>
+                        <p>本单共<span>{{bom.amount}}</span>个产品,<span>{{bom.quotedAmount}}</span>个已报价</p>
                     </div>
                     <a class="fr">查看详情</a>
                 </td>
@@ -1501,4 +1512,47 @@
         display: block;
         cursor: auto;
     }
+    .progress {
+        width: 265px;
+        height: 13px;
+        line-height: 13px;
+        background: #d7d7d7;
+        border-radius: 13px;
+        overflow: hidden;
+        position: relative;
+        margin-bottom: 10px;
+    }
+    .progress ~ p {
+        font-size: 14px;
+        color: #333;
+    }
+    .progress ~ p span {
+        color: #fd7748
+    }
+    .progress .left {
+        color: #fff;
+        font-size: 12px;
+        position: absolute;
+        left: 10px;
+        top: 0;
+        z-index: 2;
+    }
+    .progress .right {
+        color: #fff;
+        font-size: 12px;
+        position: absolute;
+        right: 15px;
+        top: 0;
+        z-index: 2;
+    }
+    .progress .progressBtn {
+        position: absolute;
+        left: 0;
+        top: 0;
+        height: 13px;
+        background: -webkit-linear-gradient(left, #8bbdff, #5078cb); /* Safari 5.1 - 6.0 */
+        background: -o-linear-gradient(left, #8bbdff, #5078cb); /* Opera 11.1 - 12.0 */
+        background: -moz-linear-gradient(left, #8bbdff, #5078cb); /* Firefox 3.6 - 15 */
+        background: linear-gradient(left, #8bbdff, #5078cb); /* 标准的语法 */
+    }
 </style>

+ 8 - 0
src/main/webapp/resources/view/vendor/forstore/vendor-invoice.html

@@ -119,7 +119,15 @@
     .check-act input:checked + label{
         background-position: -31px 0;
     }
+    .ng-table-pager::after {
+        content: ' ';
+        clear: both;
+        display: block;
+        visibility: hidden;
+        zoom: 1;
+    }
     .apply-btn{
+        z-index: 10;
         /*margin: 30px 0;*/
         text-align: center;
         position: fixed;