Browse Source

卖家求购上架模态框表单验证逻辑

yangc 8 years ago
parent
commit
b9557bc399

+ 1 - 1
src/main/webapp/resources/js/usercenter/app.js

@@ -731,7 +731,7 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
 	// 币别filter
 	app.filter('currencyStr', function () {
 		return function (str) {
-			return str != 'RMB' && str != 'USD' ? str.startsWith('RMB') ? '¥' + str.substring(3, str.length) : '$' + str.substring(3, str.length) : '-';
+			return str && str != 'RMB' && str != 'USD' ? str.startsWith('RMB') ? '¥' + str.substring(3, str.length) : '$' + str.substring(3, str.length) : '-';
 		}
 	});
 

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

@@ -1035,7 +1035,7 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 
 	app.filter('currencyStr', function () {
 		return function (str) {
-			return str != 'RMB' && str != 'USD' ? str.startsWith('RMB') ? '¥' + str.substring(3, str.length) : '$' + str.substring(3, str.length) : '-';
+			return str && str != 'RMB' && str != 'USD' ? str.startsWith('RMB') ? '¥' + str.substring(3, str.length) : '$' + str.substring(3, str.length) : '-';
 		}
 	});
 

+ 65 - 2
src/main/webapp/resources/js/vendor/controllers/forstore/purchase_offer_ctrl.js

@@ -1,6 +1,6 @@
 define(['app/app'], function(app) {
     app.register.controller('purchaseOfferCtrl', ['$scope', '$rootScope', '$stateParams', '$state', 'toaster', 'seekPurchase', 'BaseService', 'ngTableParams', '$modal', function ($scope, $rootScope, $stateParams, $state, toaster, seekPurchase, BaseService, ngTableParams, $modal) {
-        document.title = '我的报价询价-优软商城';
+        document.title = '我的报价-优软商城';
         $rootScope.active = 'vendor_seek_purchase';
         $scope.seekPurchaseRate = {};
         $scope.offer = {};
@@ -139,9 +139,72 @@ define(['app/app'], function(app) {
 
     }]);
     app.register.controller('groundingSeekCtrl', ['$scope', 'toaster', 'seek', '$modalInstance', function ($scope, toaster, seek, $modalInstance) {
-        $scope.seek = seek;
+        $scope.seek = angular.copy(seek);
         $scope.cancel = function () {
             $modalInstance.dismiss();
         }
+
+        $scope.formData = {
+            minPackQty: 1,
+            breakUp: true
+        };
+
+        $scope.prices = [{}];
+        
+        // 库存校验
+        $scope.checkReserve = function () {
+            if ($scope.formData.reserve) {
+                $scope.formData.reserve = $scope.formData.reserve < 1 ? 1 : $scope.formData.reserve > 99999999 ? 99999999 : $scope.formData.reserve;
+            }
+        }
+
+        // 起订量校验
+        $scope.checkMinBuyQty = function () {
+            if ($scope.formData.minBuyQty < 1) {
+                $scope.formData.minBuyQty = 1
+            } else if ($scope.formData.reserve && $scope.formData.minBuyQty > $scope.formData.reserve) {
+                $scope.formData.minBuyQty = $scope.formData.reserve
+            } else if (!$scope.formData.breakUp) {
+                if ($scope.formData.minBuyQty < $scope.formData.minPackQty) {
+                    $scope.formData.minBuyQty = $scope.formData.minPackQty;
+                } else if ($scope.formData.minBuyQty % $scope.formData.minPackQty != 0) {
+                    $scope.formData.minBuyQty = $scope.formData.minBuyQty - $scope.formData.minBuyQty % $scope.formData.minPackQty;
+                }
+            }
+        }
+        
+        // 最小包装数量校验
+        $scope.checkMinPacyQty = function () {
+            if ($scope.formData.minPackQty) {
+                $scope.formData.minPackQty = $scope.formData.minPackQty < 1 ? 1 : $scope.formData.minPackQty > 99999 ? 99999 : $scope.formData.minPackQty;
+            }
+        }
+
+        $scope.checkMinDate = function () {
+            $scope.formData.minDate = $scope.formData.minDate < 1 ? 1 : $scope.formData.minDate > 31 ? 31 : $scope.formData.minDate;
+            if ($scope.formData.maxDate && $scope.formData.minDate > $scope.formData.maxDate) {
+                $scope.formData.minDate = $scope.formData.maxDate;
+            }
+        }
+
+        $scope.checkMaxDate = function () {
+            $scope.formData.maxDate = $scope.formData.maxDate < 1 ? 1 : $scope.formData.maxDate > 31 ? 31 : $scope.formData.maxDate;
+            if ($scope.formData.minDate && $scope.formData.minDate > $scope.formData.maxDate) {
+                $scope.formData.maxDate = $scope.formData.minDate;
+            }
+        }
+
+        $scope.addPrices = function () {
+            if ($scope.prices.length < 3) {
+                $scope.prices.push({});
+            }
+        }
+
+        $scope.subPrices = function (index) {
+            if ($scope.prices.length > 1) {
+                $scope.prices.splice(index, 1);
+            }
+        }
+
     }]);
 });

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

@@ -463,9 +463,13 @@
             <tr class="expand-row">
                 <td colspan="10">
                     <div style="width: 173px;">历史报价</div>
-                    <div style="width: 180px;">单价:<span ng-bind="(seek.seekPurchaseOffer.currency=='RMB'?'¥':'$')+seek.seekPurchaseOffer.unitPrice"></span></div>
-                    <div style="width: 182px;">交期:<span ng-bind="seek.seekPurchaseOffer.minDay+'-'"></span><span ng-bind="seek.seekPurchaseOffer.maxDay+'天'"></span></div>
-                    <div style="width: 271px;">生产时间:{{seek.seekPurchaseOffer.produceDate}}</div>
+                    <div style="width: 180px;">单价:<span>{{seek.seekPurchaseOffer.currency + seek.seekPurchaseOffer.unitPrice | currencyStr}}</span></div>
+                    <div style="width: 182px;">交期:<span ng-bind="seek.seekPurchaseOffer.minDay"></span>
+                        -
+                        <span ng-bind="seek.seekPurchaseOffer.maxDay"></span>
+                        <span ng-if="seek.seekPurchaseOffer.minDay && seek.seekPurchaseOffer.maxDay">天</span>
+                    </div>
+                    <div style="width: 271px;">生产时间:{{seek.seekPurchaseOffer.produceDate || '-'}}</div>
                 </td>
             </tr>
             </tbody>

+ 2 - 5
src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

@@ -199,9 +199,6 @@
         background: #fffbf0;
         border: 1px solid #dae5fd;
     }
-    .seek-purchase .seek-purchase-content >table tbody.hover tr.expand-row {
-        display: table-row;
-    }
     .seek-purchase .seek-purchase-content table tbody tr.expand-row td {
         font-size: 14px;
         text-align: center;
@@ -380,8 +377,8 @@
                     <th width="92">操作</th>
                 </tr>
             </thead>
-            <tbody ng-repeat="seek in $data" ng-class="{'active': seek.$active, 'hover': seek.$hover && seek.status == 201}">
-                <tr class="default-row" ng-mouseenter="seek.$hover = true;" ng-mouseleave="seek.$hover = false;" >
+            <tbody ng-repeat="seek in $data" ng-class="{'active': seek.$active}">
+                <tr class="default-row">
                     <td class="release-time">
                         <span ng-bind="seek.releaseDate | date:'yyyy-MM-dd'"></span>
                         <span ng-bind="seek.releaseDate | date:'HH:mm:ss'"></span>

+ 18 - 14
src/main/webapp/resources/view/vendor/modal/groundingSeek.html

@@ -65,9 +65,12 @@
     .modal-dialog .modal-body .delivery-time {
         font-size: 16px !important;
     }
-    .modal-dialog .modal-body .delivery-time input {
+    .modal-dialog .modal-body .fr .delivery-time input {
         width: 46px;
     }
+    .modal-dialog .modal-body .expand-form .fl .delivery-time input {
+        width: 64px;
+    }
     .modal-dialog .modal-body .fr .com-switch-green .checkbox,
     .modal-dialog .modal-body .fr .com-switch-green .checkbox span{
         width: 34px;
@@ -75,6 +78,7 @@
     }
     .modal-dialog .modal-body .expand-form{
         clear: both;
+        height: 32px;
     }
     .modal-dialog .modal-body .expand-form .fr {
         position: relative;
@@ -99,19 +103,19 @@
     }
 </style>
 <div class="modal-header">
-    <div>型号:<span ng-bind="seek.seekPurchase.code"></span></div>
-    <div>品牌:<span ng-bind="seek.seekPurchase.brand"></span></div>
+    <div>型号:<span ng-bind="seek.code"></span></div>
+    <div>品牌:<span ng-bind="seek.brand"></span></div>
     <a ng-click="cancel()" class="close">&times;</a>
 </div>
 <div class="modal-body">
     <div class="fl">
         <div class="form-row">
             <span><i>*</i>库存:</span>
-            <input type="text" class="form-control">
+            <input type="number" ng-model="formData.reserve" ng-blur="checkReserve()" class="form-control">
         </div>
         <div class="form-row">
             <span>最小包装数量:</span>
-            <input type="text" class="form-control">
+            <input type="number" ng-modal="formData.minPackQty" ng-blur="checkMinPacyQty()" class="form-control">
         </div>
         <div class="form-row">
             <span><i>*</i>包装方式:</span>
@@ -125,11 +129,11 @@
     <div class="fr">
         <div class="form-row">
             <span>起拍:</span>
-            <input type="text" class="form-control">
+            <input type="number" ng-model="formData.minBuyQty" ng-blur="checkMinBuyQty()" class="form-control">
         </div>
         <div class="delivery-time form-row">
             <span><i>*</i>交期:</span>
-            <input type="text" class="form-control">-<input type="text" class="form-control">
+            <input type="number" ng-model="formData.minDate" ng-blur="checkMinDate()" class="form-control">-<input type="number" ng-model="formData.maxDate" ng-blur="checkMaxDate()" class="form-control">
         </div>
         <div class="form-row">
             <span>自营/寄售:</span>
@@ -140,29 +144,29 @@
         </div>
         <div class="com-switch-green form-row">
             <span>可拆卖:</span>
-            <span class="checkbox active">
+            <span class="checkbox" ng-class="{'active': formData.breakUp}" ng-click="formData.breakUp = !formData.breakUp">
                 <span><em></em></span>
             </span>
         </div>
     </div>
-    <div class="expand-form">
+    <div class="expand-form" ng-repeat="price in prices track by $index">
         <div class="fl">
             <div class="delivery-time form-row">
                 <span><i>*</i>价格梯度:</span>
-                <input type="text" class="form-control">-<input type="text" class="form-control">
+                <input type="number" class="form-control">-<input type="number" class="form-control">
             </div>
         </div>
         <div class="fr">
             <div class="form-row">
                 <span><i>*</i>单价:</span>
-                <input type="text" class="form-control">
+                <input type="number" class="form-control">
             </div>
-            <i class="fa fa-plus-circle"></i>
-            <i class="fa fa-minus-circle"></i>
+            <i class="fa fa-plus-circle" ng-click="addPrices()"></i>
+            <i class="fa fa-minus-circle" ng-click="subPrices($index)"></i>
         </div>
     </div>
 </div>
 <div class="modal-footer">
-    <span class="com-btn-cancel com-btn-level1">取消</span>
+    <span class="com-btn-cancel com-btn-level1" ng-click="cancel()">取消</span>
     <span class="com-btn-submit com-btn-level1">确定</span>
 </div>