Browse Source

Merge remote-tracking branch 'origin/feature-b2b-ssr-wangcz' into feature-b2b-ssr-wangcz

yangc 7 years ago
parent
commit
f5de22ee56

+ 13 - 1
src/main/webapp/resources/js/vendor/app.js

@@ -729,7 +729,7 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
       controller: 'SaleAcceptDetailCtrl',
       controllerUrl: 'app/controllers/b2b/sale/sale_accept_details'
     })).state('sale_returns', angularAMD.route({
-      url: "/returns",
+      url: "/salereturns",
       title: 'b2b客户出入库-客户采购验退单',
       templateUrl: 'static/view/vendor/b2b/sale/sale_returns.html',
       controller: 'SaleReturnsCtrl',
@@ -740,6 +740,18 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
       templateUrl: 'static/view/vendor/b2b/sale/sale_returns_details.html',
       controller: 'SaleReturnsDetailCtrl',
       controllerUrl: 'app/controllers/b2b/sale/sale_returns_details'
+    })).state('sale_makereturns', angularAMD.route({
+      url: "/makereturns",
+      title: 'b2b客户出入库-客户委外验退单',
+      templateUrl: 'static/view/vendor/b2b/sale/sale_make_returns.html',
+      controller: 'MakeReturnCtrl',
+      controllerUrl: 'app/controllers/b2b/sale/sale_make_returns'
+    })).state('sale_makeaccept', angularAMD.route({
+      url: "/makeaccept",
+      title: 'b2b客户出入库-客户委外验收单',
+      templateUrl: 'static/view/vendor/b2b/sale/sale_make_accept.html',
+      controller: 'MakeAcceptCtrl',
+      controllerUrl: 'app/controllers/b2b/sale/sale_make_accept'
     })).state('sale_quotation_new', angularAMD.route({
 			url: "/sale/quotation/new",
 			templateUrl: "static/view/vendor/b2b/sale/quotation_new.html",

+ 210 - 0
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_accept.js

@@ -0,0 +1,210 @@
+define(['app/app'], function (app) {
+   /**
+   * 委外加工变更
+   */
+  /**
+   * 客户委外验收
+   */
+  app.register.controller('MakeAcceptCtrl', ['$rootScope', '$scope', '$filter', 'B2bMakeAccept', 'ngTableParams', 'toaster', 'BaseService', 'Symbol', 'B2bCurrentRole', function ($rootScope, $scope, $filter, MakeAccept, ngTableParams, toaster, BaseService, Symbol, CurrentRole) {
+    BaseService.scrollBackToTop();
+    // 获取当前用户是否为普通用户
+    CurrentRole.isUser({}, {}, function (data) {
+      $scope.isUser = data.isUser;
+    });
+    $scope.tab = 'B2b';
+    $scope.storeType = 'makeaccept'
+    $rootScope.active = "vendor_material"
+    $scope.active = 'all';
+    $scope.agreedText = '全部';
+    $scope.dateZoneText = '一个月内';
+    $scope.condition = {dateZone: 1};
+
+    /* 时间筛选初始化*/
+    var fromDate = new Date();
+    var toDate = new Date();
+    fromDate.setMonth(fromDate.getMonth() - 1);
+    fromDate.setHours(0, 0, 0, 0);
+    toDate.setHours(23, 59, 59, 999);
+    $scope.condition.dateFrom = fromDate;
+    $scope.condition.dateTo = toDate;
+
+    $scope.currency = Symbol.currency;//将币别转化为对应的符号
+    $scope.changeAgreed = function (agreed) {
+      $scope.condition.agreed = agreed;
+      $scope.agreedText = typeof agreed == 'undefined' ? '全部' : (agreed == 1 ? '已同意' : '不同意');
+      $scope.condition.$agreedOpen = false;
+    };
+    $scope.changeDateZone = function (zone) {
+      $scope.condition.dateZone = zone;
+      $scope.dateZoneText = typeof zone == 'undefined' ? '半年前' : (zone == 1 ? '一个月内' : '半年内');
+      $scope.condition.$dateZoneOpen = false;
+      getDateCondition(zone, $scope.condition);
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+    $scope.setActive = function (state) {
+      if ($scope.active != state) {
+        $scope.active = state;
+        if ($scope.tableParams.page() == 1)
+          $scope.tableParams.reload();
+        else
+          $scope.tableParams.page(1);
+      }
+    };
+    var getService = function () {
+      return MakeAccept;
+    };
+
+    $scope.tableParams = new ngTableParams({
+      page: 1,
+      count: 20,
+      sorting: {
+        date: 'desc'
+      }
+    }, {
+      total: 0,
+      counts: [5, 10, 25, 50],
+      getData: function ($defer, params) {
+        $scope.loading = true;
+        var pageParams = params.url();
+        pageParams.searchFilter = {};
+        pageParams.searchFilter.keyword = $scope.keyword;
+        pageParams.searchFilter.fromDate = $scope.condition.dateFrom ? $scope.condition.dateFrom.getTime() : null;
+        pageParams.searchFilter.endDate = $scope.condition.dateTo ? $scope.condition.dateTo.getTime() : null;
+        getService()[getState($scope.active)].call(null, BaseService.parseParams(pageParams), function (page) {
+          $scope.loading = false;
+          if (page) {
+            params.total(page.totalElement);
+            $defer.resolve(page.content);
+            $scope.infoCommon = page
+            $scope.infoCommon.all = page.content.length
+            $scope.keywordXls = angular.copy(pageParams.searchFilter.keyword);//保存当前取值的关键词
+            $scope.fromDateXls = angular.copy(pageParams.searchFilter.fromDate);//保存当前取值的关键词
+            $scope.endDateXls = angular.copy(pageParams.searchFilter.endDate);//保存当前取值的关键词
+          }
+        }, function (response) {
+          $scope.loading = false;
+          toaster.pop('error', '数据加载失败', response.data);
+        });
+      }
+    });
+
+    $scope.openDatePicker = function ($event, item, openParam) {
+      $event.preventDefault();
+      $event.stopPropagation();
+      item[openParam] = !item[openParam];
+    };
+
+    $scope.openFilterDatePicker = function ($event, item, openParam) {
+      $event.preventDefault();
+      $event.stopPropagation();
+      item[openParam] = !item[openParam];
+      if ($scope.condition.dateFrom && $scope.condition.dateTo && !item[openParam]) {
+        $scope.tableParams.reload();
+      }
+    };
+
+    // 搜索框回车
+    $scope.onSearch = function () {
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+
+    // 选择查找日期
+    $scope.onDateCondition = function () {
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+
+    // 导出
+    $scope.exportXls = function () {
+      MakeAccept.exportXls({}, {}, function (data) {
+        if (data.success){
+          window.location.href = 'make/accept/xls?_state='+$scope.active+'&keyword='+($scope.keywordXls || "")+'&fromDate='+$scope.fromDateXls+'&endDate='+$scope.endDateXls;
+        }
+      }, function (response) {
+        toaster.pop('error', '数据加载失败', response.data);
+      });
+    }
+
+    var getState = function (active) {
+      var fn = 'get';
+      switch (active) {
+        case 'done':
+          fn = 'getDone';
+          break;
+        case 'todo':
+          fn = 'getTodo';
+          break;
+        case 'end':
+          fn = 'getEnd';
+          break;
+        case 'waiting':
+          fn = 'getWaiting';
+          break;
+        case 'received':
+          fn = 'getReceived';
+          break;
+        case 'invalid':
+          fn = 'getInvalid';
+          break;
+          // 已采纳
+        case 'agreed':
+          fn = 'getAgreed';
+          break;
+          // 未采纳
+        case 'refused':
+          fn = 'getRefused';
+          break;
+          // 个人
+        case 'personal':
+          fn = 'getPersonal';
+          break;
+          // 集体
+        case 'teams':
+          fn = 'getTeams';
+          break;
+          // 非标准
+        case 'nonstandard':
+          fn = 'getNonstandard';
+          break;
+          // 标准
+        case 'standard':
+          fn = 'getStandard';
+          break;
+          // 变更单无需确认
+        case 'unread':
+          fn = 'getUnread';
+          break;
+      }
+      return fn;
+    };
+
+    var getDateCondition = function (zone, condition) {
+      var fromDate = new Date();
+      var toDate = new Date();
+      //去除时分秒限制,dateFrom设置成0时0分0秒,dateTo设置成23时59分59秒
+      fromDate.setHours(0, 0, 0, 0);
+      toDate.setHours(23, 59, 59, 999);
+      if (zone == -1) { // 自定义时间,什么都不做
+
+      } else if (zone == 1) {
+        fromDate.setMonth(fromDate.getMonth() - 1);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 3) {
+        fromDate.setMonth(fromDate.getMonth() - 3);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 6) {
+        fromDate.setMonth(fromDate.getMonth() - 6);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else {
+        condition.dateFrom = null;
+        condition.dateTo = null;
+      }
+    };
+  }]);
+
+})

+ 217 - 0
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_make_returns.js

@@ -0,0 +1,217 @@
+define(['app/app'], function (app) {
+  /**
+   * 客户委外验退
+   */
+  app.register.controller('MakeReturnCtrl', ['$rootScope', '$scope', '$filter', 'B2bMakeReturn', 'ngTableParams', 'toaster', 'BaseService', 'Symbol', 'B2bCurrentRole', function ($rootScope, $scope, $filter, MakeReturn, ngTableParams, toaster, BaseService, Symbol, CurrentRole) {
+    BaseService.scrollBackToTop();
+    // 获取当前用户是否为普通用户
+    CurrentRole.isUser({}, {}, function (data) {
+      $scope.isUser = data.isUser;
+    });
+    $scope.tab = 'B2b';
+    $scope.storeType = 'makereturns'
+    $rootScope.active = "vendor_material"
+    $scope.active = 'all';
+    $scope.agreedText = '全部';
+    $scope.dateZoneText = '一个月内';
+    $scope.condition = {dateZone: 1};
+
+    /* 时间筛选初始化*/
+    var fromDate = new Date();
+    var toDate = new Date();
+    fromDate.setMonth(fromDate.getMonth() - 1);
+    fromDate.setHours(0, 0, 0, 0);
+    toDate.setHours(23, 59, 59, 999);
+    $scope.condition.dateFrom = fromDate;
+    $scope.condition.dateTo = toDate;
+
+    $scope.currency = Symbol.currency;//将币别转化为对应的符号
+    $scope.changeAgreed = function (agreed) {
+      $scope.condition.agreed = agreed;
+      $scope.agreedText = typeof agreed == 'undefined' ? '全部' : (agreed == 1 ? '已同意' : '不同意');
+      $scope.condition.$agreedOpen = false;
+    };
+    $scope.changeDateZone = function (zone) {
+      $scope.condition.dateZone = zone;
+      $scope.dateZoneText = zone == 1 ? '最近一个月' : (zone == 3 ? '最近三个月' : (zone == 6 ? '最近六个月' : '自定义'));
+      $scope.condition.$dateZoneOpen = false;
+      getDateCondition(zone, $scope.condition);
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+    $scope.setActive = function (state) {
+      if ($scope.active != state) {
+        $scope.active = state;
+        if ($scope.tableParams.page() == 1)
+          $scope.tableParams.reload();
+        else
+          $scope.tableParams.page(1);
+      }
+    };
+    var getService = function () {
+      return MakeReturn;
+    };
+
+    $scope.tableParams = new ngTableParams({
+      page: 1,
+      count: 20,
+      sorting: {
+        date: 'desc'
+      }
+    }, {
+      total: 0,
+      counts: [5, 10, 25, 50],
+      getData: function ($defer, params) {
+        $scope.loading = true;
+        var pageParams = params.url();
+        pageParams.searchFilter = {};
+        pageParams.searchFilter.keyword = $scope.keyword;
+        pageParams.searchFilter.fromDate = $scope.condition.dateFrom ? $scope.condition.dateFrom.getTime() : null;
+        pageParams.searchFilter.endDate = $scope.condition.dateTo ? $scope.condition.dateTo.getTime() : null;
+        getService()[getState($scope.active)].call(null, BaseService.parseParams(pageParams), function (page) {
+          $scope.loading = false;
+          if (page) {
+            params.total(page.totalElement);
+            $defer.resolve(page.content);
+            $scope.infoCommon = page
+            $scope.infoCommon.all = page.content.length
+            $scope.keywordXls = angular.copy(pageParams.searchFilter.keyword);//保存当前取值的关键词
+            $scope.fromDateXls = angular.copy(pageParams.searchFilter.fromDate);//保存当前取值的关键词
+            $scope.endDateXls = angular.copy(pageParams.searchFilter.endDate);//保存当前取值的关键词
+          }
+        }, function (response) {
+          $scope.loading = false;
+          toaster.pop('error', '数据加载失败', response.data);
+        });
+      }
+    });
+
+    $scope.openDatePicker = function ($event, item, openParam) {
+      $event.preventDefault();
+      $event.stopPropagation();
+      item[openParam] = !item[openParam];
+    };
+
+    $scope.openFilterDatePicker = function ($event, item, openParam) {
+      $event.preventDefault();
+      $event.stopPropagation();
+      item[openParam] = !item[openParam];
+      if ($scope.condition.dateFrom && $scope.condition.dateTo && !item[openParam]) {
+        $scope.tableParams.reload();
+      }
+    };
+
+    // 搜索框回车
+    $scope.onSearch = function () {
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+
+    // 选择查找日期
+    $scope.onDateCondition = function () {
+      $scope.tableParams.page(1);
+      $scope.tableParams.reload();
+    };
+
+    // 导出
+    $scope.exportXls = function () {
+      MakeReturn.exportXls({}, {}, function (data) {
+        if (data.success){
+          window.location.href = 'make/return/xls?_state='+$scope.active+'&keyword='+($scope.keywordXls || "")+'&fromDate='+$scope.fromDateXls+'&endDate='+$scope.endDateXls;
+        }
+      }, function (response) {
+        toaster.pop('error', '数据加载失败', response.data);
+      });
+    }
+    /**
+     * 将日期转化为整数日期
+     */
+    var getDateTime = function (date) {
+      if (angular.isDate(date)) {
+        return date.getTime();
+      } else {
+        return null;
+      }
+    };
+
+    var getState = function (active) {
+      var fn = 'get';
+      switch (active) {
+        case 'done':
+          fn = 'getDone';
+          break;
+        case 'todo':
+          fn = 'getTodo';
+          break;
+        case 'end':
+          fn = 'getEnd';
+          break;
+        case 'waiting':
+          fn = 'getWaiting';
+          break;
+        case 'received':
+          fn = 'getReceived';
+          break;
+        case 'invalid':
+          fn = 'getInvalid';
+          break;
+          // 已采纳
+        case 'agreed':
+          fn = 'getAgreed';
+          break;
+          // 未采纳
+        case 'refused':
+          fn = 'getRefused';
+          break;
+          // 个人
+        case 'personal':
+          fn = 'getPersonal';
+          break;
+          // 集体
+        case 'teams':
+          fn = 'getTeams';
+          break;
+          // 非标准
+        case 'nonstandard':
+          fn = 'getNonstandard';
+          break;
+          // 标准
+        case 'standard':
+          fn = 'getStandard';
+          break;
+          // 变更单无需确认
+        case 'unread':
+          fn = 'getUnread';
+          break;
+      }
+      return fn;
+    };
+
+    var getDateCondition = function (zone, condition) {
+      var fromDate = new Date();
+      var toDate = new Date();
+      //去除时分秒限制,dateFrom设置成0时0分0秒,dateTo设置成23时59分59秒
+      fromDate.setHours(0, 0, 0, 0);
+      toDate.setHours(23, 59, 59, 999);
+      if (zone == -1) { // 自定义时间,什么都不做
+
+      } else if (zone == 1) {
+        fromDate.setMonth(fromDate.getMonth() - 1);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 3) {
+        fromDate.setMonth(fromDate.getMonth() - 3);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else if (zone == 6) {
+        fromDate.setMonth(fromDate.getMonth() - 6);
+        condition.dateFrom = fromDate;
+        condition.dateTo = toDate;
+      } else {
+        condition.dateFrom = null;
+        condition.dateTo = null;
+      }
+    };
+  }]);
+
+})

+ 1 - 1
src/main/webapp/resources/js/vendor/controllers/b2b/saleSendCtrl.js

@@ -9,7 +9,7 @@ define(['app/app'], function (app) {
    */
   app.register.controller('SaleSendCtrl', ['$scope', '$rootScope', '$filter', 'B2bSaleSend', 'ngTableParams', 'toaster', 'BaseService', 'Symbol', 'B2bReportService', function ($scope, $rootScope, $filter, SaleSend, ngTableParams, toaster, BaseService, Symbol, ReportService) {
     BaseService.scrollBackToTop();
-    $rootScope.active = 'vendor_material';
+    $rootScope.active = 'vendor_order';
     $scope.storeType = 'send'
     $scope.active = 'all';
     $scope.currency = Symbol.currency;

+ 1 - 1
src/main/webapp/resources/view/vendor/b2b/sale/sale_accept.html

@@ -470,7 +470,7 @@
       </td>
       <td class="br-l" colspan="2" ng-if="item.orderItem.order.code">
         <div>
-          单据编号:<a class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
+          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
                   ng-bind="item.orderItem.order.code"></a>
         </div>
         <div>

+ 1 - 0
src/main/webapp/resources/view/vendor/b2b/sale/sale_badIn.html

@@ -424,6 +424,7 @@
     </tr>
     <tr class="order-bd" ng-repeat="item in badIn.badInItems">
       <td class="product" style="text-align: left">
+
         <div class="text-num text-bold">
           <span title="{{::item.orderItem.product.code}}" >
             物料编号:{{::item.orderItem.product.code}}

+ 511 - 0
src/main/webapp/resources/view/vendor/b2b/sale/sale_make_accept.html

@@ -0,0 +1,511 @@
+<style>
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    border-bottom: 1px solid #e8e8e8;
+  }
+
+  .order-table .sep-row {
+    height: 10px;
+  }
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    background: #f5f5f5;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid transparent;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #56a022;
+    border-width: 2px;
+  }
+
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-bottom: 1px solid #e6e6e6;
+  }
+
+  .order-table .order-bd>td {
+    padding: 10px 5px;
+    /*vertical-align: top;*/
+    position: relative;
+    text-align: center;
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 20px;
+  }
+
+  .input-xs, .input-group-xs>.form-control, .input-group-xs>.input-group-addon,
+  .input-group-xs>.input-group-btn>.btn {
+    height: 26px;
+    padding: 0 5px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px;
+  }
+
+  .input-group-xs .form-control:last-child, .input-group-addon:last-child,
+  .input-group-btn:first-child>.btn:not (:first-child ), .input-group-btn:last-child>.btn
+  {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+</style>
+<style>
+  .order-table {
+    background: #fff;
+    width: 100%;
+    /*margin-bottom: 10px;*/
+  }
+  .order-table thead tr {
+    background: #fff;
+  }
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e8e8e8;*/
+    font-size: 14px;
+  }
+
+  /*.order-table .sep-row {*/
+  /*height: 10px;*/
+  /*}*/
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    /*background: #f5f5f5;*/
+    background: #f9f9f9;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-code {
+    font-style: normal;
+    font-family: verdana;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table .order-info {
+    padding-left: 20px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid #e8e8e8;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #3f84f6;
+    border-width: 2px;
+  }
+
+  .order-table>tbody:hover tr.order-bd {
+    background:#f8fafe
+  }
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e6e6e6;*/
+  }
+
+  .order-table .order-bd>td {
+    /*height: 140px;*/
+    vertical-align: middle;
+    position: relative;
+    padding: 25px 0;
+    border-right: 1px solid #e8e8e8;
+  }
+  .order-table .order-bd>td:nth-last-of-type(1) {
+    border-right: 0px
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 31px;
+  }
+
+  .menu .new-dot{
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    font-size: 12px;
+    color: #fff;
+    font-weight: inherit;
+    top: -2px;
+  }
+  .screen .radio-block.date-radio {
+    width: auto
+  }
+  .order-table span,.order-table div {
+    font-size: 14px;
+    color: #333;
+  }
+  .clearfix::after {
+    clear:both;
+    zoom: 1;
+    content: ' ';
+    display: block;
+    visibility: hidden;
+  }
+  .order-table .order-bd .order-number {
+    position: absolute;
+    top: -1px;
+    left: -1px;
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    text-align: center;
+    background: #f9f9f9;
+    font-weight: 500;
+    border: solid 1px #d5d5d5;
+    border-radius: 0 0 10px 0;
+  }
+  .text-trans {
+    top: 30px;
+    right: 25px;
+  }
+  .oder{
+    /*background: #fff;*/
+    /*padding-bottom: 60px;*/
+    position: relative;
+  }
+  .ng-table-pager::after {
+    clear: both;
+    content: ' ';
+    zoom: 1;
+    display: block;
+    visibility: hidden;
+  }
+  .ng-table-pager {
+    padding-right: 20px;
+    padding-top: 50px;
+    margin-right: 0 !important;
+  }
+  .text-mns {
+    padding-right: 15px;
+    position: absolute;
+    bottom: 64px;
+    right: 20px;
+  }
+  .order-table>tbody:hover .operates-status {
+    display: none;
+  }
+  .Boom18 {
+    bottom: 18px
+  }
+</style>
+<div class="block fr user_right"  id="public" style=" position: relative">
+  <div class="pro_management device">
+    <div class="com_tab" style="margin-bottom: 10px">
+      <ul class="fl" style="width: 100%">
+        <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">公司产品库</a></li>
+        <li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>
+        <li ng-class="{'active': tab == 'onSale'}"><a ui-sref="vendor_onSale">在售产品</a></li>
+        <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架历史</a></li>
+        <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
+        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2b客户出入库</a></li>
+        <li class="down-purchase">
+          <span ng-click="exportXls()">
+              <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
+          </span>
+          <form style="display: none;" id="down-load-purchase" method="get" class="ng-pristine ng-valid">
+            <input type="hidden" name="ids" ng-value="localInfo.ids">
+          </form>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <div class="tab_top" style="margin-bottom: 10px">
+    <ul class="fl" style="width: 100%">
+      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
+      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
+      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
+      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
+      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
+      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
+    </ul>
+  </div>
+  <div class="screen check-filter">
+    <div class="radio-block date-radio">
+      时间筛选:
+      <label class="com-check-radio">
+        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+        <label for="oneMonth"></label>
+        30天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+        <label for="threeMonth"></label>
+        90天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+        <label for="sixMonth"></label>
+        180天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+        <label for="autoMonth"></label>
+        自定义
+      </label>
+    </div>
+    <div class="sreach fr">
+      <div ng-show="autoMonth" class="date fl">
+        <div class="data-input">
+          <input type="text" ng-model="condition.dateFrom"
+                 class="form-control select-adder" placeholder="起始时间"
+                 datepicker-popup="yyyy-MM-dd"
+                 is-open="condition.$fromOpened"
+                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+          />
+          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+        </div>
+
+        <em>–</em>
+        <div class="data-input">
+          <input type="text" ng-model="condition.dateTo"
+                 class="form-control select-adder" placeholder="结束时间"
+                 datepicker-popup="yyyy-MM-dd"
+                 is-open="condition.$toOpened"
+                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+          />
+          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+        </div>
+      </div>
+      <div class="sreach-input fr">
+        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch()"/>
+        <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
+      </div>
+    </div>
+  </div>
+
+  <table class="order-table block" ng-table="tableParams">
+    <thead>
+    <tr class="header">
+      <th>产品</th>
+      <th width="120">单价</th>
+      <th width="100">验收数量</th>
+      <th width="120">批号</th>
+      <th width="140">单据信息</th>
+      <th width="70">操作</th>
+    </tr>
+    <!--<tr class="sep-row">-->
+      <!--<td colspan="6"></td>-->
+    <!--</tr>-->
+    <!--<tr class="toolbar toolbar-top">
+      <td colspan="5">
+        <div>
+          &lt;!&ndash; 	<label><input ng-disabled="true" type="checkbox"
+            class="selector select_all" ng-model="selectAll">全选</label> <a
+            ng-disabled="true" href="javascript:void(0)"
+            class="btn btn-default btn-xs">批量处理</a> &ndash;&gt;
+        </div> &lt;!&ndash; 分页 &ndash;&gt;
+      </td>
+      <td class="text-center">
+        <a href="make/accept/xls?_state={{active}}&keyword={{keywordXls.keyword}}&fromDate={{keywordXls.fromDate}}&endDate={{keywordXls.endDate}}"
+        target="_self" class="text-simple" title="导出Excel表格"><i
+          class="fa fa-file-text fa-fw"></i>导出</a></td>
+    </tr>
+    <tr class="sep-row">
+      <td colspan="6"></td>
+    </tr>-->
+    </thead>
+    <tbody ng-repeat="accept in $data">
+    <tr class="order-hd">
+      <td class="first" colspan="4">
+        <div class="order-main">
+          <!--<span><input type="checkbox" class="selector"
+            ng-model="accept.$selected"></span>-->
+          <span
+              class="text-num text-bold"
+              title="{{accept.date | date:'yyyy年MM月dd日hh:mm'}}">
+            日期:{{accept.date | date:'yyyy-MM-dd'}}
+          </span>
+          <span title="客户名称">
+            <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{accept.acceptItems[0].order.enterprise.enName}}
+          </span>
+          <span>流水号:<span
+              class="text-num" ng-bind="accept.code"></span></span>
+        </div>
+      </td>
+      <td colspan="1" class="order-sum">
+        <div class="text-ellipsis" ng-if="accept.sendCode != null"
+             style="width: 120px;" title="送货单号:{{::accept.sendCode}}">
+          <i style="color: #CC9933;" class="fa fa-truck"></i> <span
+            ng-bind="accept.sendCode"></span>
+        </div>
+      </td>
+      <td colspan="1" class="text-center">
+        <div class="operates">
+          <!-- <a href="#" class="text-muted" title="打印">
+          <i class="fa fa-print fa-lg fa-fw"></i>
+        </a> -->
+        </div>
+      </td>
+    </tr>
+    <tr class="order-bd" ng-repeat="item in accept.acceptItems">
+      <td class="product" style="text-align: left">
+        <div class="text-num order-number" class="key" title="第{{$index + 1}}行">{{$index + 1}}</div>
+        <div class="text-num text-bold" title="{{item.order.product.code}}">
+          <span>
+            物料编码:{{item.order.product.code}}
+          </span>
+        </div>
+        <div title="{{item.order.product.title}}">
+          <span  style="color: #666 !important;">
+             物料名称:{{item.order.product.title}}
+          </span>
+        </div>
+        <div class="text-muted" title="{{item.order.product.spec}}"  style="color: #666 !important;">
+          物料规格:{{item.order.product.spec}}
+        </div>
+        <div class="text-bold text-inverse" ng-if="item.order.factory">
+          送货工厂:<span ng-bind="::item.order.factory"></span>
+        </div>
+      </td>
+      <td>
+        <div ng-if="!isUser" class="text-num" title="{{item.orderPrice}}">
+          <span ng-bind="::currency(accept.currency)"></span><span
+            ng-bind="item.orderPrice || 0 | number : 6"></span>
+        </div>
+        <div class="text-muted" title="{{item.taxrate}}%">
+          <br> 税率:<span ng-bind="::item.taxrate + '%'"
+                        class="text-num"></span>
+        </div>
+      </td>
+
+      <td class="text-center">
+        <div class="text-num text-bold" title="{{item.qty}}"
+             ng-bind="item.qty"></div>
+        <div class="text-muted" ng-bind="item.order.product.unit"></div>
+      </td>
+      <td class="text-center br-l">
+        <div class="text-num" ng-bind="item.batchCode"></div>
+      </td>
+      <td class="br-l" colspan="2">
+        <div>
+          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
+                  ng-bind="item.order.code"></a>
+        </div>
+        <div>
+          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="item.order.qty"></span>
+        </div>
+      </td>
+    </tr>
+    </tbody>
+    <tbody ng-if="$data.length === 0">
+    <tr>
+      <td colspan="6">
+        <div id="empty">
+          <div class="left_img">
+            <a href="http://www.ubtob.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
+            <a href="#/index" title="B2B商务首页">B2B 商务</a>
+          </div>
+          <div class="right_link">
+            <p>暂无对应的单据</p>
+            <a href="javascript:location.reload()">点击重新加载<i class="load_icon"></i></a>
+          </div>
+        </div>
+      </td>
+    </tr>
+    </tbody>
+  </table>
+  <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
+    显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
+  </div>
+</div>

+ 487 - 0
src/main/webapp/resources/view/vendor/b2b/sale/sale_make_returns.html

@@ -0,0 +1,487 @@
+<style>
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    border-bottom: 1px solid #e8e8e8;
+  }
+
+  .order-table .sep-row {
+    height: 10px;
+  }
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    background: #f5f5f5;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-code {
+    font-style: normal;
+    font-family: verdana;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid transparent;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #56a022;
+    border-width: 2px;
+  }
+
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-bottom: 1px solid #e6e6e6;
+  }
+
+  .order-table .order-bd>td {
+    padding: 10px 5px;
+    /*vertical-align: top;*/
+    position: relative;
+    text-align: center;
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 20px;
+  }
+
+  .input-xs, .input-group-xs>.form-control, .input-group-xs>.input-group-addon,
+  .input-group-xs>.input-group-btn>.btn {
+    height: 26px;
+    padding: 0 5px;
+    font-size: 12px;
+    line-height: 1.5;
+    border-radius: 3px;
+  }
+
+  .input-group-xs .form-control:last-child, .input-group-addon:last-child,
+  .input-group-btn:first-child>.btn:not (:first-child ), .input-group-btn:last-child>.btn
+  {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+</style>
+<style>
+  .order-table {
+    background: #fff;
+    width: 100%;
+    /*margin-bottom: 10px;*/
+  }
+  .order-table thead tr {
+    background: #fff;
+  }
+  .order-table .header>th {
+    height: 38px;
+    text-align: center;
+    /*background: #f5f5f5;*/
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e8e8e8;*/
+    font-size: 14px;
+  }
+
+  /*.order-table .sep-row {*/
+  /*height: 10px;*/
+  /*}*/
+
+  .order-table .selector {
+    vertical-align: middle;
+    margin: 0 0 2px 0;
+  }
+
+  .toolbar label {
+    margin-right: 10px;
+    margin-bottom: 0;
+  }
+
+  .toolbar .select_all {
+    margin: 0 6px 0 10px;
+    line-height: 20px;
+  }
+
+  .toolbar .btn {
+    -moz-border-radius: 2px;
+    margin-right: 5px;
+    border: 1px solid #dcdcdc;
+    border-radius: 2px;
+    -webkit-border-radius: 2px;
+  }
+
+  .order-table .order-hd {
+    /*background: #f5f5f5;*/
+    background: #f9f9f9;
+    height: 40px;
+    line-height: 40px;
+  }
+
+  .order-table .order-hd td.first {
+    padding-left: 20px;
+  }
+
+  .order-table .order-hd .order-main span {
+    margin-right: 8px;
+  }
+
+  .order-table .order-hd .order-code {
+    font-style: normal;
+    font-family: verdana;
+  }
+
+  .order-table .order-hd .order-sum {
+    padding: 0 5px;
+  }
+
+  .order-table .order-info {
+    padding-left: 20px;
+  }
+
+  .order-table>tbody {
+    border: 1px solid #e8e8e8;
+  }
+
+  .order-table>tbody:hover {
+    border-color: #3f84f6;
+    border-width: 2px;
+  }
+
+  .order-table>tbody:hover tr.order-bd {
+    background:#f8fafe
+  }
+  .order-table .operates {
+    display: none;
+  }
+
+  .order-table>tbody:hover .operates {
+    display: block;
+  }
+
+  .order-table .order-bd {
+    border-top: 1px solid #e8e8e8;
+    /*border-bottom: 1px solid #e6e6e6;*/
+  }
+
+  .order-table .order-bd>td {
+    /*height: 140px;*/
+    vertical-align: middle;
+    position: relative;
+    padding: 25px 0;
+    border-right: 1px solid #e8e8e8;
+  }
+  .order-table .order-bd>td:nth-last-of-type(1) {
+    border-right: 0px
+  }
+
+  .order-table .order-bd .product {
+    padding-left: 31px;
+  }
+
+  .menu .new-dot{
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    font-size: 12px;
+    color: #fff;
+    font-weight: inherit;
+    top: -2px;
+  }
+  .screen .radio-block.date-radio {
+    width: auto
+  }
+  .order-table span,.order-table div {
+    font-size: 14px;
+    color: #333;
+  }
+  .clearfix::after {
+    clear:both;
+    zoom: 1;
+    content: ' ';
+    display: block;
+    visibility: hidden;
+  }
+  .order-table .order-bd .order-number {
+    position: absolute;
+    top: -1px;
+    left: -1px;
+    width: 20px;
+    height: 20px;
+    line-height: 20px;
+    text-align: center;
+    background: #f9f9f9;
+    font-weight: 500;
+    border: solid 1px #d5d5d5;
+    border-radius: 0 0 10px 0;
+  }
+  .text-trans {
+    top: 30px;
+    right: 25px;
+  }
+  .oder{
+    /*background: #fff;*/
+    /*padding-bottom: 60px;*/
+    position: relative;
+  }
+  .ng-table-pager::after {
+    clear: both;
+    content: ' ';
+    zoom: 1;
+    display: block;
+    visibility: hidden;
+  }
+  .ng-table-pager {
+    padding-right: 20px;
+    padding-top: 50px;
+    margin-right: 0 !important;
+  }
+  .text-mns {
+    padding-right: 15px;
+    position: absolute;
+    bottom: 64px;
+    right: 20px;
+  }
+  .order-table>tbody:hover .operates-status {
+    display: none;
+  }
+  .Boom18 {
+    bottom: 18px
+  }
+</style>
+<div class="block fr user_right"  id="public" style=" position: relative">
+  <div class="pro_management device">
+    <div class="com_tab" style="margin-bottom: 10px">
+      <ul class="fl" style="width: 100%">
+        <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">公司产品库</a></li>
+        <li ng-class="{'active': tab == 'material_person'}"><a ui-sref="vendor_material_person">个人产品库</a></li>
+        <li ng-class="{'active': tab == 'onSale'}"><a ui-sref="vendor_onSale">在售产品</a></li>
+        <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架历史</a></li>
+        <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
+        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2b客户出入库</a></li>
+        <li class="down-purchase">
+          <span ng-click="exportXls()">
+              <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
+          </span>
+          <form style="display: none;" id="down-load-purchase" method="get" class="ng-pristine ng-valid">
+            <input type="hidden" name="ids" ng-value="localInfo.ids">
+          </form>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <div class="tab_top" style="margin-bottom: 10px">
+    <ul class="fl" style="width: 100%">
+      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
+      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
+      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
+      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
+      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
+      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
+    </ul>
+  </div>
+  <div class="screen check-filter">
+    <div class="radio-block date-radio">
+      时间筛选:
+      <label class="com-check-radio">
+        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+        <label for="oneMonth"></label>
+        30天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="threeMonth" name="date" ng-click="autoMonth = false;changeDateZone(3);condition.$open=false">
+        <label for="threeMonth"></label>
+        90天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+        <label for="sixMonth"></label>
+        180天
+      </label>
+      <label class="com-check-radio">
+        <input type="radio" id="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+        <label for="autoMonth"></label>
+        自定义
+      </label>
+    </div>
+    <div class="sreach fr">
+      <div ng-show="autoMonth" class="date fl">
+        <div class="data-input">
+          <input type="text" ng-model="condition.dateFrom"
+                 class="form-control select-adder" placeholder="起始时间"
+                 datepicker-popup="yyyy-MM-dd"
+                 is-open="condition.$fromOpened"
+                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
+                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
+                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+          />
+          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+        </div>
+
+        <em>–</em>
+        <div class="data-input">
+          <input type="text" ng-model="condition.dateTo"
+                 class="form-control select-adder" placeholder="结束时间"
+                 datepicker-popup="yyyy-MM-dd"
+                 is-open="condition.$toOpened"
+                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
+                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
+                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                 datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+          />
+          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+        </div>
+      </div>
+      <div class="sreach-input fr">
+        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch()"/>
+        <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
+      </div>
+    </div>
+  </div>
+  <table class="order-table block" ng-table="tableParams">
+    <thead>
+    <tr class="header">
+      <th>产品</th>
+      <th width="120">单价</th>
+      <th width="100">验退数量</th>
+      <th width="120">批号</th>
+      <th width="140">单据信息</th>
+      <th width="70">操作</th>
+    </tr>
+    </thead>
+    <tbody ng-repeat="returns in $data">
+    <tr class="order-hd">
+      <td class="first" colspan="4">
+        <div class="order-main">
+          <span><!--<input type="checkbox" class="selector" ng-model="returns.$selected">--></span>
+          <span class="text-num text-bold"
+                title="{{::returns.date | date: 'yyyy年MM月dd日 hh:mm'}}">
+            日期:{{::returns.date | date:'yyyy-MM-dd'}}
+          </span>
+          <span title="客户名称">
+             <img src="static/img/user/images/shop_home.png" style="margin-right: 5px;">{{::returns.returnItems[0].order.enterprise.enName}}
+          </span>
+          <span>流水号:<span
+              class="text-num" ng-bind="::returns.code"></span></span>
+        </div>
+      </td>
+      <td colspan="1" class="order-sum">
+        <div class="text-ellipsis" ng-if="returns.sendCode != null"
+             style="width: 120px;" title="送货单号:{{::returns.sendCode}}">
+          <i style="color: #CC9933;" class="fa fa-truck"></i> <span
+            ng-bind="returns.sendCode"></span>
+        </div>
+      </td>
+      <td colspan="1" class="text-center">
+        <div class="operates">
+          <!-- <a href="#" class="text-muted" title="打印">
+          <i class="fa fa-print fa-lg fa-fw"></i>
+        </a> -->
+        </div>
+      </td>
+    </tr>
+    <tr class="order-bd" ng-repeat="item in returns.returnItems">
+      <td class="product" style="text-align: left">
+        <div class="text-num text-bold" title="{{::item.order.product.code}}">
+          <span>物料编码:{{::item.order.product.code}}</span>
+        </div>
+        <div title="{{::item.order.product.title}}">
+          <span style="color: #666 !important;">
+            物料名称:{{::item.order.product.title}}
+          </span>
+        </div>
+        <div class="text-muted" title="{{::item.order.product.spec}}" style="color: #666 !important;">
+          物料规格:{{::item.order.product.spec}}
+        </div>
+        <div class="text-bold text-inverse" ng-if="item.order.factory">送货工厂:<span ng-bind="::item.order.factory"></span></div>
+      </td>
+      <td>
+        <div ng-if="!isUser" class="text-num" title="{{::item.orderPrice}}">
+          <span ng-bind="::currency(returns.currency)"></span><span
+            ng-bind="::item.orderPrice | number:6"></span>
+        </div>
+        <div class="text-muted" title="{{item.taxrate}}%">
+          <br> 税率:<span ng-bind="::item.taxrate + '%'"
+                        class="text-num"></span>
+        </div>
+      </td>
+      <td class="text-center">
+        <div class="text-num text-bold" title="{{item.qty}}"
+             ng-bind="item.qty"></div>
+        <div class="text-muted" ng-bind="item.order.product.unit"></div>
+      </td>
+      <td class="text-center br-l">
+        <div class="text-num" ng-bind="item.batchCode"></div>
+      </td>
+      <td class="br-l" colspan="2">
+        <div>
+          单据编号:<a  style="color: #5078cb;" class="order-detail" title="查看采购单详情" ui-sref="sale_makeorder_detail({id:item.order.id})"
+                  ng-bind="::item.order.code"></a>
+        </div>
+        <div>
+          &nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.order.qty"></span>
+        </div>
+      </td>
+    </tr>
+    </tbody>
+    <tbody ng-if="$data.length === 0">
+    <tr>
+      <td colspan="6">
+        <div id="empty">
+          <div class="left_img">
+            <a href="http://www.ubtob.com/" target="_blank" title="优软云首页"><img src="static/img/empty/uas_empty.png"></a>
+            <a href="#/index" title="B2B商务首页">B2B 商务</a>
+          </div>
+          <div class="right_link">
+            <p>暂无对应的单据</p>
+            <a href="javascript:location.reload()">点击重新加载<i class="load_icon"></i></a>
+          </div>
+        </div>
+      </td>
+    </tr>
+    </tbody>
+  </table>
+  <div ng-if="infoCommon.totalElement > 0" class="text-mns text-right" ng-class="infoCommon.totalElement >= 20 ? '': 'Boom18'">
+    显示&nbsp;{{(infoCommon .page - 1 ) * infoCommon.size + 1}}-{{infoCommon.all >= 20 ? infoCommon.page *  infoCommon.size: (infoCommon.page - 1 ) * infoCommon.size + infoCommon.all}}&nbsp;条,共&nbsp;{{infoCommon.totalElement}}&nbsp;条
+  </div>
+</div>

+ 1 - 1
src/main/webapp/resources/view/vendor/b2b/sale/sale_returns.html

@@ -463,7 +463,7 @@
       </td>
       <td class="br-l" colspan="2">
         <div>
-          单据编号:<a class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
+          单据编号:<a  style="color: #5078cb;"  class="order-detail" title="查看采购单详情" ui-sref="sale_order_detail({id:item.orderItem.order.id})"
                   ng-bind="::item.orderItem.order.code"></a>
         </div>
         <div>

+ 1 - 1
src/main/webapp/resources/view/vendor/b2b/sale/sale_returns_details.html

@@ -193,7 +193,7 @@
 </style>
 <div class="pane base-info fr" id="order-detail-list">
   <div class="pub-com_head">
-    <span>客户采购验退单</span>
+    <span>客户采购验退单详情</span>
     <span class="fr"><em>操作员:{{returns.recorder}}</em><time>日期:{{returns.date | date:'yyyy-MM-dd'}}</time></span>
   </div>
   <div class="pane-body">

+ 2 - 2
src/main/webapp/resources/view/vendor/b2b/sale_send.html

@@ -340,7 +340,7 @@
 							<img src="static/img/user/images/shop_home.png" style="margin-right: 5px">
 							{{::send.sendItems[0].orderItem.order.enterprise.enName}}
 						</span>
-						<span><a style="color: #333;font-weight: bold;">发货单号:</a><a class="text-num order-detail" title="查看详情" ng-bind="::send.code" ui-sref="sale_send_detail({id:send.id})"></a></span>
+						<span><a style="color: #333;font-weight: bold;">发货单号:</a><a style="color: #5078cb;" class="text-num order-detail" title="查看详情" ng-bind="::send.code" ui-sref="sale_send_detail({id:send.id})"></a></span>
 					</div>
 				</td>
 				<td colspan="1" class="order-sum">
@@ -418,7 +418,7 @@
 					</div>
 				</td>
 				<td class="br-l" colspan="2" style="padding-left: 20px;">
-					<div>单据编号:<a href="#/sale/order/{{::item.orderItem.order.id}}" ng-bind="::item.orderItem.order.code"></a></div>
+					<div>单据编号:<a style="color: #5078cb;" href="#/sale/order/{{::item.orderItem.order.id}}" ng-bind="::item.orderItem.order.code"></a></div>
 					<div>
 						第 <span ng-bind="::item.orderItem.number"></span> 行
 						&nbsp;&nbsp;&nbsp;&nbsp;数量:<span ng-bind="::item.orderItem.qty"></span>