Browse Source

卖家物流管理模块

hulh 8 years ago
parent
commit
681e837a8c

+ 13 - 13
src/main/java/com/uas/platform/b2c/logistics/service/impl/DistributorSellerServiceImpl.java

@@ -35,22 +35,22 @@ public class DistributorSellerServiceImpl implements DistributorSellerService {
 		List<DistributorSeller> savaList = new ArrayList<>();
 		Long enuu = SystemSession.getUser().getEnterprise().getUu();
 		Long useruu = SystemSession.getUser().getUserUU();
-		List<String> chooseList = distributorSellerDao.findAllChooseName(enuu);
+		System.out.println(new Date().getTime());
+		distributorSellerDao.deleteAllInBatch();//保存前先清空表
+		System.out.println(new Date().getTime());
 		for (JSONObject object : objects){
-			if (!chooseList.contains(object.getString("companyName"))){
-				DistributorSeller distributor = new DistributorSeller();
-				if (object.getString("code") != null){
-					distributor.setIsKdn((short)1);
-				}else {
-					distributor.setIsKdn((short)0);
-				}
+			DistributorSeller distributor = new DistributorSeller();
+			if (object.getString("code") != null){
+				distributor.setIsKdn((short)1);
 				distributor.setCode(object.getString("code"));
-				distributor.setCompanyName(object.getString("companyName"));
-				distributor.setUseruu(useruu);
-				distributor.setEnuu(enuu);
-				distributor.setCreatetime(new Date());
-				savaList.add(distributor);
+			}else {
+				distributor.setIsKdn((short)0);
 			}
+			distributor.setCompanyName(object.getString("companyName"));
+			distributor.setUseruu(useruu);
+			distributor.setEnuu(enuu);
+			distributor.setCreatetime(new Date());
+			savaList.add(distributor);
 		}
 		return distributorSellerDao.save(savaList);
 	}

+ 66 - 37
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_distributor_ctrl.js

@@ -4,16 +4,7 @@ define([ 'app/app' ], function(app) {
         $scope.tab = 'distributor';
         $rootScope.active = 'vendor_logistics';
         $scope.title = '配送商';
-        // $scope.data_list = [
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'},
-        //     {name: '顺丰快递'}
-        // ];
+
         $scope.initData = function () {
             Distributor.findAllSelected({},function (data) {
                 if (data){
@@ -76,6 +67,9 @@ define([ 'app/app' ], function(app) {
                 resolve : {
                     allKdnList : function () {
                         return $scope.allKdnList;
+                    },
+                    selectedList : function () {
+                        return $scope.data_list;
                     }
                 }
             }).result.then(function(data){
@@ -88,11 +82,28 @@ define([ 'app/app' ], function(app) {
         }
     }]);
 
-    app.register.controller('vendorDistributorManageCtrl', ['$scope','$rootScope','$modal','toaster','KdnLogistics','Distributor','BaseService','ngTableParams','allKdnList','$modalInstance', function ($scope, $rootScope, $modal, toaster, KdnLogistics, Distributor, BaseService, ngTableParams, allKdnList, $modalInstance) {
+    app.register.controller('vendorDistributorManageCtrl', ['$scope','$rootScope','$modal','toaster','KdnLogistics','Distributor','BaseService','ngTableParams','allKdnList','selectedList','$modalInstance', function ($scope, $rootScope, $modal, toaster, KdnLogistics, Distributor, BaseService, ngTableParams, allKdnList, selectedList, $modalInstance) {
         //获取快递鸟信息
         $scope.$$kdnData = {};
         $scope.allKdnList = allKdnList;
         $scope.chooseList = [];
+        $scope.selectFlag = [];
+
+        $scope.initArrayData = function () {
+            angular.forEach(allKdnList, function (data) {
+                $scope.selectFlag[data.code] = {};
+                $scope.selectFlag[data.code].isChoosed = false;
+            });
+            angular.forEach(selectedList, function (data, index) {
+                $scope.chooseList[index] = {};
+                if (data.code){
+                    $scope.chooseList[index].code = data.code;
+                    $scope.selectFlag[data.code].isChoosed = true;
+                }
+                $scope.chooseList[index].companyName = data.companyName;
+            });
+        };
+        $scope.initArrayData();
 
         $scope.distributorTableParams = new ngTableParams({
             page : 1,
@@ -109,6 +120,7 @@ define([ 'app/app' ], function(app) {
                         $scope.$$kdnData.start = 0;
                     }
                     $scope.$$kdnData.end = Number(page.size) * (Number(page.number) - 1) + Number(page.numberOfElements);
+                    $scope.pageList = page.content;
                     params.total(page.totalElements);
                     $defer.resolve(page.content);
                     //划分数据
@@ -118,7 +130,9 @@ define([ 'app/app' ], function(app) {
                     for (var i = 0; i<row; i++){
                         $scope.showList[i] = [];
                         for (var j = 0; j<6; j++){
-                            $scope.showList[i].push($scope.allKdnList[count+$scope.$$kdnData.start-1]);
+                            // var code = $scope.pageList[count].code;
+                            // $scope.pageList[count].isChoosed = $scope.selectFlag[code].isChoosed;
+                            $scope.showList[i].push($scope.pageList[count]);
                             count++;
                             if (count == page.numberOfElements){
                                 return;
@@ -218,7 +232,7 @@ define([ 'app/app' ], function(app) {
                         dom.scrollTop = 2400;
                         $scope.downIndex = 5;
                     }
-                    $scope.inputObject = $scope.allKdnList[$scope.selectIndex];
+                    $scope.inputObject = $scope.resultList[$scope.selectIndex];
                     $scope.keyword = $scope.inputObject.companyName;
                     $scope.containsAttr($scope.keyword);
                 } else if(event.keyCode == 13) { //确定键
@@ -228,7 +242,7 @@ define([ 'app/app' ], function(app) {
         };
 
         $scope.clickItem = function (data) {
-            $scope.inputObject = data;
+            // $scope.inputObject = data;
             $scope.keyword = data.companyName;
             $scope.containsAttr($scope.keyword);
             $scope.showDownFrame = false;
@@ -256,38 +270,55 @@ define([ 'app/app' ], function(app) {
         };
 
         $scope.addItemInSelected = function () {
-            if ($scope.inputObject){
-                $scope.ChooseDistributor($scope.inputObject);
+            if ($scope.containsItem){
+                angular.forEach($scope.allKdnList, function (data) {
+                    if (data.companyName == $scope.keyword){
+                        if ($scope.selectFlag[data.code].isChoosed){
+                            var indexItem = null;
+                            if ($scope.chooseList){
+                                angular.forEach($scope.chooseList, function (item, index) {
+                                    if (item.code == data.code){
+                                        indexItem = index;
+                                    }
+                                });
+                            }
+                            $scope.chooseList.splice(indexItem, 1);
+                            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+                        }
+                        $scope.ChooseDistributor(data);
+                    }
+                });
             }else {
+                var indexItem = null;
+                angular.forEach($scope.chooseList, function (item, index) {
+                    if (item.companyName == $scope.keyword){
+                        indexItem = index;
+                    }
+                });
+                if (indexItem){
+                    $scope.chooseList.splice(indexItem, 1);
+                }
                 var item = {};
-                console.log($scope.keyword);
                 item.companyName = $scope.keyword;
-                item.isChoosed = true;
                 $scope.chooseList.push(item);
             }
             $scope.keyword = "";
-            $scope.inputObject = null;
         };
 
         $scope.ChooseDistributor = function (data) {
-            if ($scope.chooseList){
-                angular.forEach($scope.chooseList, function (item, index) {
-                    if (item.code == data.code){
-                        $scope.index = index;
-                    }
-                });
-            }
-            if (!data.isChoosed){
-                $scope.chooseList.push(data);
-            }else{
+            if ($scope.selectFlag[data.code].isChoosed){
+                if ($scope.chooseList){
+                    angular.forEach($scope.chooseList, function (item, index) {
+                        if (item.code == data.code){
+                            $scope.index = index;
+                        }
+                    });
+                }
                 $scope.chooseList.splice($scope.index, 1);
+            }else {
+                $scope.chooseList.push(data);
             }
-            data.isChoosed = !data.isChoosed;
-            angular.forEach($scope.allKdnList, function (item) {
-                if (item.code == data.code){
-                    item.isChoosed = data.isChoosed;
-                }
-            });
+            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
         };
 
         $scope.saveChooseList = function () {
@@ -295,7 +326,6 @@ define([ 'app/app' ], function(app) {
                 if(data){
                     toaster.pop('success', '成功', '保存配送商成功');
                 }
-                $scope.chooseList = [];
                 $modalInstance.close(data);
             },function (error) {
                 toaster.pop('error', '成功', '保存配送商失败');
@@ -303,7 +333,6 @@ define([ 'app/app' ], function(app) {
         };
 
         $scope.cancel = function() {
-            $scope.chooseList = [];
             $modalInstance.dismiss();
         };
     }]);

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

@@ -160,7 +160,7 @@
 		<div class="distributor-content">
 			<div class="title-wrap">
 				<span class="content-title">我的配送商</span>
-				<span class="add-btn"  ng-click="addDistributor()"><i class="fa fa-plus-circle"></i>   新增配送商</span>
+				<span class="add-btn"  ng-click="addDistributor()"><i class="fa fa-plus-circle"></i>   设置配送商</span>
 			</div>
 			<ul class="send-list">
 				<li ng-repeat="data in data_list track by $index" class="send-item" ng-mouseenter="hover_distributor($index)" ng-mouseleave="leave_distributor($index)">

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

@@ -8,9 +8,9 @@
 	<div class="count_center">
 		<div class="com_tab">
 			<ul class="fl">
-				<!--<li ng-class="{'active': tab=='deliverRule'}"><a ui-sref="vendor_deliveryRule">配送规则</a></li>-->
-				<!--<li ng-class="{'active': tab=='distributor'}"><a ui-sref="vendor_distributor">配送商</a></li>-->
-				<!--<li ng-class="{'active': tab=='takeSelf'}"><a ui-sref="vendor_takeSelf">自提点</a></li>-->
+				<li ng-class="{'active': tab=='deliverRule'}"><a ui-sref="vendor_deliveryRule">配送规则</a></li>
+				<li ng-class="{'active': tab=='distributor'}"><a ui-sref="vendor_distributor">配送商</a></li>
+				<li ng-class="{'active': tab=='takeSelf'}"><a ui-sref="vendor_takeSelf">自提点</a></li>
 				<li ng-class="{'active': tab=='logistic'}"><a ui-sref="vendor_logistics">发货地址</a></li>
 			</ul>
 		</div>

+ 105 - 104
src/main/webapp/resources/view/vendor/modal/vendor_distributor_manage.html

@@ -65,6 +65,7 @@
         line-height: 34px;
         display: inline-block;
         padding-left: 10px;
+        font-size: 14px;
     }
     .dis-manage-middle-search {
         position: absolute;
@@ -114,12 +115,12 @@
         padding-right: 10px;
     }
     .dis-manage-middle .dropdown-menu {
-        top: 13%;
-        left: 1%;
+        top: 200px;
+        left: 10px;
         line-height: 23px;
         max-height: 120px;
         overflow-y: auto;
-        width: 402px;
+        width: 400px;
         display: block;
         overflow-x: hidden;
         border-radius: 0;
@@ -155,7 +156,7 @@
         padding: 0 18px;
     }
     /*.dis-manage-bgwhite {*/
-        /*background: white;*/
+    /*background: white;*/
     /*}*/
     .dis-manage-footer-table tr:nth-child(even){
         background: #f1f1f1;
@@ -176,6 +177,8 @@
     }
     .dis-manage-middle button{
         border-radius: 0;
+        position: relative;
+        left: -3px;
     }
     .dis-manage-footer-cancel {
         background: #b4b5b9;
@@ -233,86 +236,86 @@
         background-position: -31px 0;
     }
     /*分页样式*/
-   /* ul.pagination.ng-table-pagination > li > a > span {
-        height: 17px;
-        line-height: 17px;
-    }
-    div.ng-table-pager {
-        margin-right: 42px!important;
-        float: right;
-    }
-    div.ng-table-pager  input.page-number {
-        vertical-align: inherit;
-        display: inline-block;
-        width: 40px;
-        height: 31px;
-        padding: 6px 6px;
-        font-size: 14px;
-        line-height: 1.42857143;
-        color: #9B9792;
-        text-align: center;
-        background-color: #F6F5F4;
-        background-image: none;
-        border: 1px solid #ccc;
-        border-top-left-radius: 4px;
-        border-bottom-left-radius: 4px;
-        box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
-        transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
-    }
+    /* ul.pagination.ng-table-pagination > li > a > span {
+         height: 17px;
+         line-height: 17px;
+     }
+     div.ng-table-pager {
+         margin-right: 42px!important;
+         float: right;
+     }
+     div.ng-table-pager  input.page-number {
+         vertical-align: inherit;
+         display: inline-block;
+         width: 40px;
+         height: 31px;
+         padding: 6px 6px;
+         font-size: 14px;
+         line-height: 1.42857143;
+         color: #9B9792;
+         text-align: center;
+         background-color: #F6F5F4;
+         background-image: none;
+         border: 1px solid #ccc;
+         border-top-left-radius: 4px;
+         border-bottom-left-radius: 4px;
+         box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
+         transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
+     }
 
-    div.ng-table-pager a.page-a {
-        color: #fff!important;
-        cursor: pointer;
-        background-color: #4574E8;
-        border-color: #4574E8;
-        padding: 6px 6px;
-        font-size: 14px;
-        border-top-right-radius: 4px;
-        border-bottom-right-radius: 4px;
-        text-decoration: none;
-        height: 31px;
-    }
-    div.ng-table-pager a.page-a:hover{
-        color: #fff!important;
-        background-color: #4574E8!important;
-    }
-    div.ng-table-pager div.page-go-block {
-        float: right;
-        margin-left: 20px;
-        margin-top: 20px;
-        font-size: 0px;
-        height: 31px;
-        line-height: 31px;
-    }
+     div.ng-table-pager a.page-a {
+         color: #fff!important;
+         cursor: pointer;
+         background-color: #4574E8;
+         border-color: #4574E8;
+         padding: 6px 6px;
+         font-size: 14px;
+         border-top-right-radius: 4px;
+         border-bottom-right-radius: 4px;
+         text-decoration: none;
+         height: 31px;
+     }
+     div.ng-table-pager a.page-a:hover{
+         color: #fff!important;
+         background-color: #4574E8!important;
+     }
+     div.ng-table-pager div.page-go-block {
+         float: right;
+         margin-left: 20px;
+         margin-top: 20px;
+         font-size: 0px;
+         height: 31px;
+         line-height: 31px;
+     }
 
-    .seller-contact-info {
-        position: absolute;
-        z-index: 2;
-        height: 210px;<!--506-->
-        border: 1px solid #E7E5E2;
-        opacity: 1;
-        background-color: white;
-        width: 600px;
-        top: 40px;
-        left: -549px;
-        border: 1px solid #E7E5E2;
-        -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
-        box-shadow: 0 5px 15px rgba(0,0,0,.5);
-    }
+     .seller-contact-info {
+         position: absolute;
+         z-index: 2;
+         height: 210px;<!--506-->
+         border: 1px solid #E7E5E2;
+         opacity: 1;
+         background-color: white;
+         width: 600px;
+         top: 40px;
+         left: -549px;
+         border: 1px solid #E7E5E2;
+         -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
+         box-shadow: 0 5px 15px rgba(0,0,0,.5);
+     }
 
-    .display-none {
-        display: none;
-    }
+     .display-none {
+         display: none;
+     }
 
-    .ng-table-pager .ng-table-pagination a{
-        color: #4574E8 !important;
-        height: 31px;
-    }
+     .ng-table-pager .ng-table-pagination a{
+         color: #4574E8 !important;
+         height: 31px;
+     }
 
-    .ng-table-pager .ng-table-pagination li.active a {
-        background-color: #4574E8;
-        color: white !important;
-    }*/
+     .ng-table-pager .ng-table-pagination li.active a {
+         background-color: #4574E8;
+         color: white !important;
+     }*/
     .dis-manage-footer .check-act label:hover{
         cursor: pointer;
     }
@@ -330,6 +333,22 @@
         float: right;
         margin-right: 10px;
     }
+    span.text-span{
+        float: left;
+        max-width: 82px;
+        text-overflow: ellipsis;
+        overflow: hidden;
+        white-space: nowrap;
+    }
+    .btn-success[disabled] {
+        background: #b4b5b9!important;
+        color: #333!important;
+        border-color: #b4b5b9!important;
+        /* border: none; */
+    }
+    .btn-success:hover {
+        border-color: #5078cb;
+    }
 </style>
 
 <div class="dis-content">
@@ -345,11 +364,11 @@
     <div class="dis-manage-middle">
         <input class="dis-manage-middle-input" type="text" placeholder="请输入配送商名称" ng-change="inputContent()" ng-model="keyword" ng-keydown="onKeyDown()" ng-blur="onBlur()" ng-focus="getFocus()">
         <button ng-disabled="!keyword || keyword.length==0 || companyError" class="btn btn-success" ng-click="addItemInSelected()" type="button">新增</button>
-        <span class="dis-manage-middle-message" ng-if="!companyError && !containsItem"><i class="fa fa-info-circle"></i>系统无法提供此物流信息,请根据物流单号到相应的官网查询</span>
+        <span class="dis-manage-middle-message" ng-if="!companyError && !containsItem && keyword.length > 0"><i class="fa fa-info-circle"></i>系统无法提供此物流信息,请根据物流单号到相应的官网查询</span>
         <span class="dis-manage-middle-message" ng-if="companyError && keyword.length > 0">请输入正确的物流公司</span>
-            <!--<ul id="ulContent">-->
-                <!--<li ng-repeat="data in resultList" ng-click="clickItem(data)" ng-class="{'active': $index==selectIndex}">{{data.companyName}}</li>-->
-            <!--</ul>-->
+        <!--<ul id="ulContent">-->
+        <!--<li ng-repeat="data in resultList" ng-click="clickItem(data)" ng-class="{'active': $index==selectIndex}">{{data.companyName}}</li>-->
+        <!--</ul>-->
         <ul id="ulContent"  ng-if="showDownFrame && matchData" class="dropdown-menu">
             <li ng-click="clickItem(data)" ng-repeat="data in resultList" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
         </ul>
@@ -359,12 +378,9 @@
         <table class="dis-manage-footer-table" ng-table="distributorTableParams">
             <tr class="dis-manage-footer-table-tr dis-manage-bgwhite" ng-repeat="value in showList">
                 <td class="dis-manage-footer-table-tr-td" ng-repeat="data in value" width="120">
-                    <span ng-bind="data.companyName" style="float: left;max-width: 120px;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;"></span>
+                    <span ng-bind="data.companyName" style="float: left;max-width: 120px;text-overflow: ellipsis;overflow: hidden; white-space: nowrap;"></span>
                     <label class="check-act" style=" float: right;">
-                        <input type="checkbox" id="{{data.code}}" ng-click="ChooseDistributor(data)" ng-checked="data.isChoosed"/>
+                        <input type="checkbox" id="{{data.code}}" ng-click="ChooseDistributor(data)" ng-checked="selectFlag[data.code].isChoosed"/>
                         <label for="{{data.code}}"></label>
                     </label>
                 </td>
@@ -375,22 +391,7 @@
                 </td>
             </tr>
         </table>
-        <!--<div class="ng-cloak ng-table-pager" style="float: right;margin-right: 60px;">-->
-            <!--<ul class="pagination ng-table-pagination">-->
-                <!--<li ng-class="{'disabled': !page.active && !page.current, 'active': page.current}" ng-repeat="page in pages" ng-switch="page.type">-->
-                    <!--<a ng-switch-when="prev" ng-click="setPage(page.type, -1)" >&laquo;</a>-->
-                    <!--<a ng-switch-when="first" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>-->
-                    <!--<a ng-switch-when="page" ng-click="setPage(page.type, page.number)" ><span ng-bind="page.number"></span></a>-->
-                    <!--<a ng-switch-when="more" ng-click="setPage(page.type, -1)" >&#8230;</a>-->
-                    <!--<a ng-switch-when="last" ng-click="setPage(page.type, page.number)" ><span ng-bind="page.number"></span></a>-->
-                    <!--<a ng-switch-when="next" ng-click="setPage(page.type, -1)" >&raquo;</a>-->
-                <!--</li>-->
-            <!--</ul>-->
-            <!--<div class="page-go-block">-->
-                <!--<input class="page-number" type="text" ng-model="param.currentPage" ng-keydown="listenEnter()"/>-->
-                <!--<a class="page-a" ng-click="setPage('page', param.currentPage)" href="">GO</a>-->
-            <!--</div>-->
-        <!--</div>-->
+
         <div class="dis-manage-footer-btn">
             <span class="dis-manage-footer-save" ng-click="saveChooseList()">保存</span>
             <span class="dis-manage-footer-cancel" ng-click="cancel()">取消</span>