Browse Source

处理买家录入产品和超级后台产品管理优化

wangcz 7 years ago
parent
commit
762cf65861

+ 3 - 1
src/main/webapp/WEB-INF/views/normal/adminWithNav.html

@@ -100,8 +100,10 @@
 					<!--class="fa fa-home"></i><span> 平台换货出货单管理</span></a></li>-->
 
 			<li class="nav-header">产品管理</li>
-			<li class="nav-node"><a href="#/manage"><i
+			<li class="nav-node"><a href="#/saleManage"><i
 					class="fa fa-flag"></i><span> 产品管理</span></a></li>
+			<li class="nav-node"><a href="#/manage"><i
+					class="fa fa-flag"></i><span> 在售产品管理</span></a></li>
 			<li class="nav-node"><a href="#trade/goodsStatistics"><i
 					class="fa fa-filter"></i><span> 在售产品信息统计</span></a></li>
 			<li class="nav-node"><a href="#product/overtimeBatch"><i

+ 6 - 0
src/main/webapp/resources/js/admin/app.js

@@ -274,6 +274,12 @@
 			templateUrl : 'static/view/admin/product/productManage.html',
 			controller : 'productManageCtrl',
 			controllerUrl : 'app/controllers/product/productManageCtrl'
+        })).state('saleManage', angularAMD.route({
+            // 在售产品管理
+            url: '/saleManage',
+            templateUrl : 'static/view/admin/product/saleProductManage.html',
+            controller : 'saleProductManageCtrl',
+            controllerUrl : 'app/controllers/product/saleProductManageCtrl'
 		})).state('manage_detail', angularAMD.route({
             // 产品详情列表
             url: '/manage/:id',

+ 54 - 43
src/main/webapp/resources/js/admin/controllers/product/productManageCtrl.js

@@ -197,9 +197,11 @@ define(['app/app'], function(app) {
         //获取选中之后的信息
         var getChooseBatch = function () {
             $scope.choosedBatch = [];
+            $scope.ids = [];
             angular.forEach($scope.goodsList, function (goods) {
                 if (goods.isChoosed) {
                     $scope.choosedBatch.push(goods.batchCode);
+                    $scope.ids.push(goods);
                 }
             });
         };
@@ -317,49 +319,58 @@ define(['app/app'], function(app) {
 
         // 产品导出事件
         $scope.exportClick = function () {
-            // 拼装链接
-            var url = "/trade/goods/background/download?page=" + $scope.pageParams.page + "&count=" + $scope.pageParams.count + "&sorting=" + encodeURIComponent(angular.toJson($scope.pageParams.sorting));
-            if (angular.isDefined($scope.startDate) && null != $scope.startDate) {
-                url = url + "&startTime=" + $scope.startDate.getTime();
-            }
-            if (angular.isDefined($scope.endDate) && null != $scope.endDate) {
-                url = url + "&endTime=" + $scope.endDate.getTime();
-            }
-            if (angular.isDefined($scope.goodsFilter.kindUuid)) {
-                url = url + "&kindUuid=" + $scope.goodsFilter.kindUuid;
-            }
-            if (angular.isDefined($scope.goodsFilter.code)) {
-                url = url + "&code=" + $scope.goodsFilter.code
-            }
-            if (angular.isDefined($scope.goodsFilter.brand)) {
-                url = url + "&brand=" + $scope.goodsFilter.brand
-            }
-            if (angular.isDefined($scope.goodsFilter.store)) {
-                url = url + "&store=" + $scope.goodsFilter.store
-            }
-            if (angular.isDefined($scope.goodsFilter.saleStatus)) {
-                url = url + "&saleStatus=" + $scope.goodsFilter.saleStatus
-            }
-            if (angular.isDefined($scope.goodsFilter.saleNum)) {
-                url = url + "&saleNum=" + $scope.goodsFilter.saleNum
-            }
-            if (angular.isDefined($scope.goodsFilter.currency)) {
-                url = url + "&currency=" + $scope.goodsFilter.currency
-            }
-            if (angular.isDefined($scope.goodsFilter.saleSelf)) {
-                url = url + "&saleSelf=" + $scope.goodsFilter.saleSelf
-            }
-            if (angular.isDefined($scope.goodsFilter.bredakUp)) {
-                url = url + "&breakUp=" + $scope.goodsFilter.bredakUp
-            }
-            if (angular.isDefined($scope.goodsFilter.standard)) {
-                url = url + "&standard=" + $scope.goodsFilter.standard
-            }
-            if (angular.isDefined($scope.goodsFilter.audited)) {
-                url = url + "&audited=" + $scope.goodsFilter.audited
-            }
-            if (angular.isDefined($scope.goodsFilter.haveImg)) {
-                url = url + "&haveImg=" + $scope.goodsFilter.haveImg;
+            var url = '';
+            if($scope.choosedBatch.length > 0) {
+                var idList = [];
+                angular.forEach($scope.ids, function(val) {
+                    idList.push(val.id)
+                })
+                url = '/trade/goods/background/downloadByIds?idStr=' + idList
+            } else {
+                // 拼装链接
+                url = "/trade/goods/background/download?page=" + $scope.pageParams.page + "&count=" + $scope.pageParams.count + "&sorting=" + encodeURIComponent(angular.toJson($scope.pageParams.sorting));
+                if (angular.isDefined($scope.startDate) && null != $scope.startDate) {
+                    url = url + "&startTime=" + $scope.startDate.getTime();
+                }
+                if (angular.isDefined($scope.endDate) && null != $scope.endDate) {
+                    url = url + "&endTime=" + $scope.endDate.getTime();
+                }
+                if (angular.isDefined($scope.goodsFilter.kindUuid)) {
+                    url = url + "&kindUuid=" + $scope.goodsFilter.kindUuid;
+                }
+                if (angular.isDefined($scope.goodsFilter.code)) {
+                    url = url + "&code=" + $scope.goodsFilter.code
+                }
+                if (angular.isDefined($scope.goodsFilter.brand)) {
+                    url = url + "&brand=" + $scope.goodsFilter.brand
+                }
+                if (angular.isDefined($scope.goodsFilter.store)) {
+                    url = url + "&store=" + $scope.goodsFilter.store
+                }
+                if (angular.isDefined($scope.goodsFilter.saleStatus)) {
+                    url = url + "&saleStatus=" + $scope.goodsFilter.saleStatus
+                }
+                if (angular.isDefined($scope.goodsFilter.saleNum)) {
+                    url = url + "&saleNum=" + $scope.goodsFilter.saleNum
+                }
+                if (angular.isDefined($scope.goodsFilter.currency)) {
+                    url = url + "&currency=" + $scope.goodsFilter.currency
+                }
+                if (angular.isDefined($scope.goodsFilter.saleSelf)) {
+                    url = url + "&saleSelf=" + $scope.goodsFilter.saleSelf
+                }
+                if (angular.isDefined($scope.goodsFilter.bredakUp)) {
+                    url = url + "&breakUp=" + $scope.goodsFilter.bredakUp
+                }
+                if (angular.isDefined($scope.goodsFilter.standard)) {
+                    url = url + "&standard=" + $scope.goodsFilter.standard
+                }
+                if (angular.isDefined($scope.goodsFilter.audited)) {
+                    url = url + "&audited=" + $scope.goodsFilter.audited
+                }
+                if (angular.isDefined($scope.goodsFilter.haveImg)) {
+                    url = url + "&haveImg=" + $scope.goodsFilter.haveImg;
+                }
             }
             window.open(url);
             /*var modalInstance = $modal.open({

+ 6 - 3
src/main/webapp/resources/js/admin/controllers/product/productManageDetailCtrl.js

@@ -1,9 +1,12 @@
 define(['app/app'], function(app) {
     'use strict';
-    app.register.controller('productManageDetailCtrl', ['$scope', '$stateParams', 'Goods', '$modal', function ($scope, $stateParams, Goods, $modal) {
-        $scope.goodId = $stateParams.id;
+    app.register.controller('productManageDetailCtrl', ['$scope', '$stateParams', 'Goods', '$modal', '$location', function ($scope, $stateParams, Goods, $modal, $location) {
+        $scope.id = $stateParams.id;
         var initGoods = function () {
-            Goods.findOneById({goodsId:$scope.goodId}, function (data) {
+            var url = $location.$$search.type
+            var urlData = (url=== 'goods'? 'findOneById' : 'findProductsOneById')
+            var params = (url=== 'goods'? {goodsId:$scope.id} : {productId:$scope.id})
+            Goods[urlData](params , function (data) {
                 $scope.goods = data;
             })
         };

+ 877 - 0
src/main/webapp/resources/js/admin/controllers/product/saleProductManageCtrl.js

@@ -0,0 +1,877 @@
+define(['app/app'], function(app) {
+    'use strict';
+    app.register.controller('saleProductManageCtrl', ['$scope', '$modal', 'toaster', 'ngTableParams', 'BaseService', '$http', 'Goods', 'BackgroundRecord', 'Commodity', 'GoodsModifyInfo', function($scope, $modal, toaster, ngTableParams, BaseService, $http, Goods, BackgroundRecord, Commodity, GoodsModifyInfo) {
+        $scope.dateArea = 'oneMonth';
+        var _formatDate = function (date, fmt) {
+            if (!date) {
+                return null;
+            }
+            if (typeof date === 'string') {
+                date = new Date(Date.parse(date.replace(/-/g, '/')));
+            }
+            var o = {
+                'M+': date.getMonth() + 1, // 月份
+                'd+': date.getDate(), // 日
+                'h+': date.getHours(), // 小时
+                'm+': date.getMinutes(), // 分
+                's+': date.getSeconds(), // 秒
+                'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
+                'S': date.getMilliseconds() // 毫秒
+            }
+            if (/(y+)/.test(fmt)) {
+                fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
+            }
+            for (var k in o) {
+                if (new RegExp('(' + k + ')').test(fmt)) {
+                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
+                }
+            }
+            return fmt;
+        };
+        var _getClearDay = function (date) {
+            return new Date(_formatDate(date, 'yyyy-MM-dd')).getTime() - 8 * 60 * 60 * 1000
+        };
+
+        var currentTime = _getClearDay(new Date());
+        $scope.startDate = new Date(currentTime - 30 * 24 * 60 * 60 * 1000);
+        $scope.endDate = new Date(currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
+        $scope.startFormatDate = _formatDate($scope.startDate, 'yyyy-MM-dd');
+        $scope.endFormatDate = _formatDate($scope.endDate, 'yyyy-MM-dd');
+        var addStartDate = new Date($scope.startDate.getTime() + 24 * 60 * 60 * 1000)
+        var addEndDate = new Date($scope.endDate.getTime() + 24 * 60 * 60 * 1000)
+        $scope.addStartFormatDate = _formatDate(addStartDate, 'yyyy-MM-dd');
+        $scope.addEndFormatDate = _formatDate(addEndDate, 'yyyy-MM-dd');
+
+        $scope.setFilters = function (type, val) {
+            $scope[type] = val;
+            if (type == 'dateArea') {
+                // 时间筛选
+                var currentTime = _getClearDay(new Date());
+                var endDate = new Date(currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
+                if (val == 'oneMonth') {
+                    $scope.startDate = new Date(currentTime - 30 * 24 * 60 * 60 * 1000 - 24 * 60 * 60 * 1000);
+                    $scope.endDate = endDate;
+                } else if (val == 'threeMonth') {
+                    $scope.startDate = new Date(currentTime - 3 * 30 * 24 * 60 * 60 * 1000 - 24 * 60 * 60 * 1000);
+                    $scope.endDate = endDate;
+                } else if (val == 'sixMonth') {
+                    $scope.startDate = new Date(currentTime - 6 * 30 * 24 * 60 * 60 * 1000 - 24 * 60 * 60 * 1000);
+                    $scope.endDate = endDate;
+                } else if (val == 'allMonth') {
+                    $scope.startDate = null;
+                    $scope.endDate = null;
+                }
+            }
+            $scope.startFormatDate = $scope.startDate ? _formatDate($scope.startDate, 'yyyy-MM-dd') : '';
+            $scope.endFormatDate = $scope.endDate ? _formatDate($scope.endDate, 'yyyy-MM-dd') : '';
+            if (val != 'autoMonth') {
+                $scope.manageTableParams.page(1);
+                $scope.manageTableParams.reload();
+            }
+        };
+
+        $scope.condition = [];
+        var start = {
+            open : false
+        };
+        var end = {
+            open : false
+        };
+        $scope.condition.push(start);
+        $scope.condition.push(end);
+        // 打开日期选择框
+        $scope.openDatePicker = function($event, item, openParam) {
+            $event.preventDefault();
+            $event.stopPropagation();
+            openParam == 0 ? $scope.condition[1].open = false : $scope.condition[0].open = false;
+            item[openParam].open = !item[openParam].open;
+        };
+
+        $scope.onDateCondition = function (bool, date) {
+            if (bool == 1) {
+                $scope.startDate = date;
+            } else {
+                $scope.endDate = date;
+            }
+            var startTime = $scope.startDate ? $scope.startDate.getTime() : null;
+            var endTime = $scope.endDate ? $scope.endDate.getTime() : null;
+            if (startTime && endTime && startTime > endTime) {
+                if (bool == 1) {
+                    toaster.pop('info', '起始时间不能大于结束时间');
+                    $scope.startDate = null;
+                } else {
+                    toaster.pop('info', '结束时间不能小于起始时间');
+                    $scope.endDate = null;
+                }
+            }
+            if ($scope.endDate && bool == 2) {
+                $scope.endDate = new Date($scope.endDate.getFullYear(), $scope.endDate.getMonth(), $scope.endDate.getDate())
+                $scope.endDate = new Date($scope.endDate.getTime() + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000);
+            }
+            $scope.startFormatDate = $scope.startDate ? _formatDate($scope.startDate, 'yyyy-MM-dd') : '';
+            $scope.endFormatDate = $scope.endDate ? _formatDate($scope.endDate, 'yyyy-MM-dd') : '';
+            $scope.manageTableParams.page(1);
+            $scope.manageTableParams.reload();
+        };
+        $scope.goodsFilter = {};
+        $scope.kindPojo = {};
+        var initTitleInfo = function () {
+            BackgroundRecord.getUserTitle({}, function (data) {
+                $scope.tableTabs = data;
+                $scope.titleInShow = {};
+                angular.forEach($scope.tableTabs, function (item) {
+                    $scope.titleInShow[item.titleName] = true;
+                });
+            });
+        };
+        initTitleInfo();
+
+        $scope.saleStatus = {
+            601 : '已上架',
+            602 : '已上架',
+            612 : '已下架',
+            613 : '新品未上架'
+        };
+
+        // 获取分页Goods数据
+        $scope.manageTableParams = new ngTableParams({
+            page: 1,
+            count: 10,
+            sorting: {
+                createTime : 'DESC'
+            }
+        }, {
+            total: 0,
+            counts: [],
+            getData: function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                if($scope.startFormatDate) {
+                    $scope.goodsFilter.startTime = $scope.startFormatDate
+                } else {
+                    delete $scope.goodsFilter.startTime
+                }
+                if($scope.endFormatDate) {
+                    $scope.goodsFilter.endTime = $scope.endFormatDate
+                } else {
+                    delete $scope.goodsFilter.endTime
+                }
+                $scope.pageParams = param;
+                Goods.loadBrandProductsList(param, $scope.goodsFilter, function (data) {
+                    $scope.totalCount = data.totalElements;
+                    $scope.goodsList = data.content;
+                    angular.forEach($scope.goodsList, function (list) {
+                        list.isChoosed = false
+                    });
+                    params.total(data.totalElements);
+                    $defer.resolve(data.content);
+                }, function () {
+                    toaster.pop('error', '获取数据失败')
+                })
+            }
+        });
+
+        // 全选
+        $scope.chooseAll = function () {
+            $scope.isChooseAll = !$scope.isChooseAll;
+            angular.forEach($scope.goodsList, function (list) {
+                list.isChoosed = $scope.isChooseAll;
+            })
+        };
+
+        // 检查是否全选
+        var checkChoosedAll = function () {
+            $scope.isChooseAll = true;
+            angular.forEach($scope.goodsList, function (list) {
+                if(!list.isChoosed) {
+                    $scope.isChooseAll = false;
+                }
+            })
+        };
+
+        // 单选
+        $scope.chooseOne = function (list) {
+            (typeof list.isChoosed === 'undefined' || !list.isChoosed) ? list.isChoosed = true : list.isChoosed = false;
+            checkChoosedAll();
+        };
+
+        //获取选中之后的信息
+        var getChooseBatch = function () {
+            $scope.choosedBatch = [];
+            $scope.ids = [];
+            angular.forEach($scope.goodsList, function (goods) {
+                if (goods.isChoosed) {
+                    $scope.choosedBatch.push(goods.batchCode);
+                    $scope.ids.push(goods);
+                }
+            });
+        };
+
+        $scope.batchDown = function () {
+            getChooseBatch();
+            if (!$scope.choosedBatch || $scope.choosedBatch.length == 0) {
+                toaster.pop("info", "您尚未选中任何产品");
+                return ;
+            }
+            $scope.soldOutProduct($scope.choosedBatch);
+        };
+
+        var initKindDataInfo = function () {
+            Commodity.getAllKindInfo({}, function (data) {
+                $scope.kindInfo = data[0].children;
+            })
+        };
+        initKindDataInfo();
+
+        // 是否打开树型选择
+        $scope.showSecondList = function () {
+            $scope.selectDown = true;
+        };
+        $scope.selectDown = false;
+        $scope.treeOptions = {
+            nodeChildren: "children",
+            dirSelectable: false,
+            injectClasses: {
+                ul: "a1",
+                li: "a2",
+                liSelected: "a7",
+                iExpanded: "a3",
+                iCollapsed: "a4",
+                iLeaf: "a5",
+                label: "a6",
+                labelSelected: "a8"
+            }
+        };
+        $scope.showSelected = function(node) {
+            $scope.leaf = node.nameCn;
+            $scope.selectDown = false;
+        };
+
+        /**
+         * 获取根据当前类目的信息获取所有叶子节点的类目信息
+         *
+         * @param kind
+         */
+        function getAllLeafKindId(kind) {
+            if (!kind) {
+                return null;
+            }
+            if (kind.isLeaf == 1) {
+                return kind.id;
+            }
+            if (kind.isLeaf == 0) {
+                // 获取第一级类目的所有叶子类目ID
+                if (kind.level == 1) {
+                    var leafKindIds = [];
+                    angular.forEach(kind.children, function (kind) {
+                        // 获取第一级类目的直接子类目的所有叶子类目ID
+                        var childrenIds = getAllLeafKindId(kind);
+                        if (Array.isArray(childrenIds)) {
+                            angular.forEach(childrenIds, function (child) {
+                                leafKindIds.push(child);
+                            })
+                        } else {
+                            leafKindIds.push(childrenIds);
+                        }
+                    });
+                    return leafKindIds;
+                } else if (kind.level == 2) {
+                    // 获取第二级类目的所有叶子类目ID
+                    var kindIds = [];
+                    angular.forEach(kind.children, function (kind) {
+                        kindIds.push(kind.id);
+                    });
+                    return kindIds;
+                }
+            }
+        }
+
+        // 清空数据
+        $scope.clearClick = function () {
+            for( var tmp in $scope.goodsFilter) {
+                $scope.goodsFilter[tmp] = '';
+            }
+            for( var tmp in $scope.kindPojo) {
+                $scope.kindPojo[tmp] = '';
+            }
+            $scope.goodsFilter.kindUuid = '';
+            $scope.manageTableParams.page(1);
+            $scope.manageTableParams.reload();
+        };
+
+        // 搜索事件
+        $scope.searchClick = function () {
+            if ($scope.kindPojo && $scope.kindPojo.first) {
+                if (!$scope.kindPojo.second) {
+                    var kind = $scope.kindInfo[$scope.kindPojo.first];
+                    var kindUuid = getAllLeafKindId(kind);
+                    $scope.goodsFilter.kindUuid = kindUuid.join(',')
+                } else if ($scope.kindPojo.second && $scope.kindPojo.third) {
+                    $scope.goodsFilter.kindUuid = getAllLeafKindId($scope.kindPojo.third);
+                } else {
+                    var kind = $scope.kindInfo[$scope.kindPojo.first].children[$scope.kindPojo.second];
+                    var kindUuid = getAllLeafKindId(kind);
+                    $scope.goodsFilter.kindUuid = kindUuid.join(',')
+                }
+            }
+            $scope.manageTableParams.page(1);
+            $scope.manageTableParams.reload();
+        };
+
+        // 产品导出事件
+        $scope.exportClick = function () {
+            var url = '';
+            getChooseBatch();
+            if($scope.ids.length > 0) {
+                var idList = [];
+                angular.forEach($scope.ids, function(val) {
+                    idList.push(val.id)
+                })
+                url = '/trade/products/background/downloadByIds?idStr=' + idList
+            } else {
+                // 拼装链接
+                url = "/trade/products/background/download?page=" + $scope.pageParams.page + "&count=" + $scope.pageParams.count + "&sorting=" + encodeURIComponent(angular.toJson($scope.pageParams.sorting));
+                if (angular.isDefined($scope.startDate) && null != $scope.startDate) {
+                    url = url + "&startTime=" + $scope.startDate.getTime();
+                }
+                if (angular.isDefined($scope.endDate) && null != $scope.endDate) {
+                    url = url + "&endTime=" + $scope.endDate.getTime();
+                }
+                if (angular.isDefined($scope.goodsFilter.kindUuid)) {
+                    url = url + "&kindUuid=" + $scope.goodsFilter.kindUuid;
+                }
+                if (angular.isDefined($scope.goodsFilter.code)) {
+                    url = url + "&code=" + $scope.goodsFilter.code
+                }
+                if (angular.isDefined($scope.goodsFilter.brand)) {
+                    url = url + "&brand=" + $scope.goodsFilter.brand
+                }
+                if (angular.isDefined($scope.goodsFilter.store)) {
+                    url = url + "&store=" + $scope.goodsFilter.store
+                }
+                if (angular.isDefined($scope.goodsFilter.saleStatus)) {
+                    url = url + "&saleStatus=" + $scope.goodsFilter.saleStatus
+                }
+                if (angular.isDefined($scope.goodsFilter.saleNum)) {
+                    url = url + "&saleNum=" + $scope.goodsFilter.saleNum
+                }
+                if (angular.isDefined($scope.goodsFilter.currency)) {
+                    url = url + "&currency=" + $scope.goodsFilter.currency
+                }
+                if (angular.isDefined($scope.goodsFilter.saleSelf)) {
+                    url = url + "&saleSelf=" + $scope.goodsFilter.saleSelf
+                }
+                if (angular.isDefined($scope.goodsFilter.bredakUp)) {
+                    url = url + "&breakUp=" + $scope.goodsFilter.bredakUp
+                }
+                if (angular.isDefined($scope.goodsFilter.standard)) {
+                    url = url + "&standard=" + $scope.goodsFilter.standard
+                }
+                if (angular.isDefined($scope.goodsFilter.audited)) {
+                    url = url + "&audited=" + $scope.goodsFilter.audited
+                }
+                if (angular.isDefined($scope.goodsFilter.haveImg)) {
+                    url = url + "&haveImg=" + $scope.goodsFilter.haveImg;
+                }
+            }
+            window.open(url);
+            /*var modalInstance = $modal.open({
+                templateUrl: 'static/view/admin/modal/manage/exportProduct_modal.html',
+                controller: 'exportProductCtrl',
+                resolve: {
+                    account: function () {
+                        return angular.copy(data);
+                    }
+                }
+            });
+            modalInstance.result.then(function (account) {
+
+            }, function () {
+
+            })*/
+        };
+
+        // 更多信息事件
+        $scope.moreInfo = function () {
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/admin/modal/manage/moreInfo_modal.html',
+                controller: 'moreInfoCtrl',
+                resolve: {
+                    titleInShow: function () {
+                        return angular.copy($scope.titleInShow);
+                    }
+                }
+            });
+            modalInstance.result.then(function (data) {
+                if (data) {
+                    BackgroundRecord.updateUserTitle({}, data, function (data) {
+                        if (data.success) {
+                            if (data.data) {
+                                initTitleInfo();
+                            }
+                        } else {
+                            toaster.pop("info", data.message);
+                        }
+                    })
+                }
+            })
+        };
+
+        // 审核事件
+        $scope.auditProduct = function (goods) {
+            // 分页获取修改历史记录
+            // $scope.modifyTableParams = new ngTableParams({
+            //     page: 1,
+            //     count: 3
+            // }, {
+            //     total: 0,
+            //     getData: function ($defer, params) {
+            //         var param = BaseService.parseParams(params.url());
+            //         param.batchCode = goods.batchCode;
+            //         GoodsModifyInfo.getPageModifyInfo(param, function (data) {
+            //             var modalInstance = $modal.open({
+            //                 templateUrl: 'static/view/admin/modal/manage/manageAudit.html',
+            //                 controller: 'AuditCtrl',
+            //                 resolve: {
+            //                     goods: function () {
+            //                         return angular.copy(goods);
+            //                     },
+            //                     info: function () {
+            //                         return angular.copy(data.content);
+            //                     }
+            //                 }
+            //             });
+            //             modalInstance.result.then(function (result) {
+            //
+            //             }, function () {
+            //
+            //             })
+            //             params.total(data.totalElements);
+            //             $defer.resolve(data.content);
+            //         }, function () {
+            //             toaster.pop('error', '获取数据失败')
+            //         })
+            //     }
+            // });
+            GoodsModifyInfo.getModifyInfoByBatchCode({batchCode:goods.batchCode}, function (data) {
+                if (data) {
+                    var modalInstance = $modal.open({
+                        templateUrl: 'static/view/admin/modal/manage/manageAudit.html',
+                        controller: 'AuditCtrl',
+                        resolve: {
+                            goods: function () {
+                                return angular.copy(goods);
+                            },
+                            info: function () {
+                                return angular.copy(data);
+                            }
+                        }
+                    });
+                    modalInstance.result.then(function () {
+                        $scope.manageTableParams.reload();
+                    }, function () {
+
+                    })
+                }
+            }, function (error) {
+                toaster.pop("error", error.data);
+            });
+
+        };
+        // 日志点击事件
+        $scope.journalProduct = function (goods) {
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/admin/modal/manage/journal_modal.html',
+                controller: 'journalCtrl',
+                resolve: {
+                    goods: function () {
+                        return angular.copy(goods);
+                    }
+                }
+            });
+            modalInstance.result.then(function (account) {
+
+            }, function () {
+
+            })
+        };
+
+        // 下架事件
+        $scope.soldOutProduct = function (batchArray) {
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/admin/modal/manage/ManageSoldOut.html',
+                controller: 'soleOutCtrl',
+                resolve: {
+                    batchArray: function () {
+                        return angular.copy(batchArray);
+                    }
+                }
+            });
+            modalInstance.result.then(function () {
+                $scope.manageTableParams.reload();
+            }, function () {
+
+            })
+        };
+        // 显示对比图片信息
+        $scope.showImg = function (data) {
+            var modalInstance = $modal.open({
+                templateUrl: 'static/view/admin/modal/manage/showContrastImg_modal.html',
+                controller: 'showContrastImgCtrl',
+                resolve: {
+                    img: function () {
+                        return angular.copy(data);
+                    }
+                }
+            })
+            modalInstance.result.then(function (account) {
+
+            }, function () {
+
+            })
+        }
+
+    }]);
+
+    app.register.controller('exportProductCtrl', ['$scope', '$modalInstance', 'account', function($scope, $modalInstance, account) {
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    app.register.controller('moreInfoCtrl', ['$scope', '$modalInstance', 'titleInShow', function ($scope, $modalInstance, titleInShow) {
+
+        $scope.allTitle = [{titleName : '商家ID'}, {titleName : '商家名称'}, {titleName : '产品信息'}, {titleName : 'SKU编码'},
+            {titleName : '产品编号'}, {titleName : '封装'}, {titleName : '梯度'}, {titleName : '单价'}, {titleName : '交期(天)'},
+            {titleName : '包装'}, {titleName : '包装数量'}, {titleName : '起订量'}, {titleName : '拆包售卖'}, {titleName : '在售数量'},
+            {titleName : '锁库数'}, {titleName : '冻结数量'}, {titleName : '库存总数'}, {titleName : '在售状态'}, {titleName : '销售方式'},
+            {titleName : '创建人'}, {titleName : '创建时间'}, {titleName : '产品类型'}, {titleName : '图片类型'}, {titleName : '产品图片'}];
+
+        var initTitleInfo = function () {
+            angular.forEach($scope.allTitle, function (item) {
+                if (titleInShow[item.titleName]) {
+                    item.choosed = true;
+                }
+            })
+        };
+        initTitleInfo();
+
+        var getChooseInfo = function () {
+            $scope.titleSet = [];
+            angular.forEach($scope.allTitle, function (item) {
+                if (item.choosed) {
+                    $scope.titleSet.push(item);
+                }
+            })
+        };
+
+        $scope.ensureAddAccount = function () {
+            getChooseInfo();
+            $modalInstance.close($scope.titleSet);
+        };
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    app.register.controller('AuditCtrl', ['$scope', 'goods', 'info', 'toaster', '$modalInstance', 'GoodsModifyInfo', function($scope, goods, info, toaster, $modalInstance, GoodsModifyInfo) {
+        $scope.auditGoods = goods;
+        $scope.modifyList = info;
+        $scope.hasAuditTwo = false;
+        $scope.errorMsg = '';
+        $scope.otherMessage = '';
+        $scope.errorArray = ['价格异常', '图片违规', '基本信息有误', '断缺货'];
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        };
+
+        $scope.toggleAudit = function (type) {
+            $scope.hasAuditTwo = type
+        };
+        
+        $scope.changeType = function (type) {
+            $scope.errorType = type;
+        };
+
+        var countLength = function (string) {
+            return string.replace(/[^\x00-\xff]/g, '**').length;
+        };
+
+        var cutOutString = function (str, length) {
+            for (var i = 1; i <= str.length; i++) {
+                if (countLength(str.substr(0, i)) > length){
+                    str = str.substr(0, i-1);
+                    break;
+                }
+            }
+            return str;
+        };
+
+        $scope.inputMessage = function () {
+            if ($scope.otherMessage) {
+                $scope.otherMessage = cutOutString($scope.otherMessage, 30);
+            }
+        };
+
+        $scope.ensureAudit = function (pass) {
+            if (!pass) {
+                if (!$scope.errorType) {
+                    toaster.pop("info", "您尚未选择下架原因");
+                    return;
+                }
+                if ($scope.errorType == 5) {
+                    if (!$scope.otherMessage || countLength($scope.otherMessage) < 2) {
+                        toaster.pop("info", "原因至少要填写2个字");
+                        return;
+                    }
+                }
+                if ($scope.errorType == 5) {
+                    $scope.errorMsg = $scope.otherMessage;
+                } else {
+                    $scope.errorMsg = $scope.errorArray[$scope.errorType - 1];
+                }
+            }
+            GoodsModifyInfo.auditedGoods({batchCode:goods.batchCode,pass:pass,message:$scope.errorMsg}, {}, function () {
+                toaster.pop("info", "审核完毕");
+                $modalInstance.close();
+            })
+        };
+
+    }]);
+
+    app.register.controller('journalCtrl', ['$scope', 'goods', 'toaster', 'ngTableParams', 'BaseService', 'GoodsHistory', 'GoodsModifyInfo', '$modalInstance', function($scope, goods, toaster, ngTableParams, BaseService, GoodsHistory, GoodsModifyInfo, $modalInstance) {
+        $scope.tabs = 'basic';
+
+        // 日期选择框部分
+        $scope.condition = [{open: false},{open: false} ];
+        $scope.openDatePicker = function ($event, item, openParam) {
+            $event.preventDefault();
+            $event.stopPropagation();
+            openParam === 0 ? $scope.condition[1].open = false : $scope.condition[0].open = false;
+            item[openParam].open = !item[openParam].open;
+        };
+        $scope.onDateCondition = function (bool) {
+            if (bool === 1) {
+               if ($scope.startDate && !$scope.endDate) {
+                   var nowTime = new Date();
+                   $scope.endDate = new Date(nowTime.getFullYear(), nowTime.getMonth(), nowTime.getDate());
+                   if ($scope.endDate.getTime() == $scope.startDate.getTime()) {
+                       $scope.endDate = new Date($scope.endDate.getTime() + 86400000);
+                   }
+               }
+               if ($scope.startDate && $scope.endDate) {
+                   if($scope.startDate.getTime() > $scope.endDate) {
+                       $scope.endDate = new Date($scope.startDate.getTime() + 86400000)
+                   }
+               }
+            } else if (bool === 2) {
+                if ($scope.startDate && $scope.endDate) {
+                   $scope.startDate = new Date($scope.endDate.getTime() - 86400000);
+                }
+            }
+        };
+
+        $scope.convertTab = function (tab) {
+            $scope.tabs = tab;
+            $scope.startDate = null;
+            $scope.endDate = null;
+            $scope.keyword = null;
+        };
+
+        $scope.search = function (tab) {
+            switch (tab) {
+                case 'basic':
+                    $scope.ModifyDetailTableParams.page(1);
+                    $scope.ModifyDetailTableParams.reload();
+                    break;
+                case 'sell':
+                    $scope.ModifyDetailTableParams.page(1);
+                    $scope.ModifyDetailTableParams.reload();
+                    break;
+                case 'smt':
+                    $scope.historyTableParams.page(1);
+                    $scope.historyTableParams.reload();
+                    break;
+                case 'audit':
+                    $scope.auditedTableParams.page(1);
+                    $scope.auditedTableParams.reload();
+                    break;
+            }
+        };
+
+        $scope.historyStatus = {
+            '上架' : '上架',
+            '发布商品' : '上架',
+            '下架商品' : '下架',
+            '批量下架公司产品' : '下架'
+        };
+
+        var initQueryParams = function (param) {
+            if ($scope.startDate) {
+                param.startDate = $scope.startDate.getTime();
+            }
+            if ($scope.endDate) {
+                param.endDate = $scope.endDate.getTime();
+            }
+            if ($scope.keyword) {
+                param.keyword = $scope.keyword;
+            }
+        };
+
+        // 获取分页GoodsHistory数据
+        $scope.historyTableParams = new ngTableParams({
+            page: 1,
+            count: 3,
+            sorting: {
+                operateDate : 'DESC'
+            }
+        }, {
+            total: 0,
+            getData: function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                param.batchCode = goods.batchCode;
+                initQueryParams(param);
+                GoodsHistory.findDataOfUpAndDown(param, function (data) {
+                    $scope.historyList = data.content;
+                    params.total(data.totalElements);
+                    $defer.resolve(data.content);
+                }, function () {
+                    toaster.pop('error', '获取数据失败')
+                })
+            }
+        });
+
+        $scope.auditedTableParams = new ngTableParams({
+            page: 1,
+            count: 3,
+            sorting: {
+                updateTime : 'DESC'
+            }
+        }, {
+            total: 0,
+            getData: function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                param.batchCode = goods.batchCode;
+                initQueryParams(param);
+                GoodsModifyInfo.getPageModifyInfo(param, function (data) {
+                    $scope.auditedList = data.content;
+                    params.total(data.totalElements);
+                    $defer.resolve(data.content);
+                }, function () {
+                    toaster.pop('error', '获取数据失败')
+                })
+            }
+        });
+
+        $scope.ModifyDetailTableParams = new ngTableParams({
+            page: 1,
+            count: 3,
+            sorting: {
+                updateTime : 'DESC'
+            }
+        }, {
+            total: 0,
+            getData: function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                param.batchCode = goods.batchCode;
+                initQueryParams(param);
+
+                GoodsModifyInfo.getPageModifyDetail(param, function (data) {
+                    $scope.detailList = data.content;
+                    params.total(data.totalElements);
+                    $defer.resolve(data.content);
+                }, function () {
+                    toaster.pop('error', '获取数据失败')
+                })
+            }
+        });
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    app.register.controller('soleOutCtrl', ['$scope', 'batchArray', 'Goods', 'toaster', '$modalInstance', function($scope, batchArray, Goods, toaster, $modalInstance) {
+        $scope.errorMsg = '';
+        $scope.otherMessage = '';
+        $scope.errorArray = ['价格异常', '图片违规', '基本信息有误', '短缺货'];
+
+        var countLength = function (string) {
+            return string.replace(/[^\x00-\xff]/g, '**').length;
+        };
+
+        var cutOutString = function (str, length) {
+            for (var i = 1; i <= str.length; i++) {
+                if (countLength(str.substr(0, i)) > length){
+                    str = str.substr(0, i-1);
+                    break;
+                }
+            }
+            return str;
+        };
+
+        $scope.inputMessage = function () {
+            if ($scope.otherMessage) {
+                $scope.otherMessage = cutOutString($scope.otherMessage, 30);
+            }
+        };
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        };
+
+        $scope.changeType = function (type) {
+            $scope.errorType = type;
+        };
+
+        $scope.ensureDown = function () {
+            if (!$scope.errorType) {
+                toaster.pop("info", "您尚未选择下架原因");
+                return;
+            }
+            if ($scope.errorType == 5) {
+                if (!$scope.otherMessage || countLength($scope.otherMessage) < 2) {
+                    toaster.pop("info", "原因至少要填写2个字");
+                    return;
+                }
+            }
+            if ($scope.errorType == 5) {
+                $scope.errorMsg = $scope.otherMessage;
+            } else {
+                $scope.errorMsg = $scope.errorArray[$scope.errorType - 1];
+            }
+
+            if (!$scope.errorMsg || $scope.errorMsg.length == 0) {
+                toaster.pop("info", "您尚未选择下架原因");
+                return;
+            }
+            var batchs = batchArray.join(",");
+            Goods.offShelfGoodsByProvider({batchCodes:batchs, downMsg:$scope.errorMsg}, {}, function(map){
+                if (map.success) {
+                    toaster.pop('success', '下架成功');
+                    $modalInstance.close();
+                } else {
+                    toaster.pop('error', map.message);
+                }
+            }, function() {
+                toaster.pop('error', '下架失败');
+            });
+        };
+
+    }]);
+    app.register.controller('showContrastImgCtrl', ['$scope', 'img', '$modalInstance', function ($scope, img, $modalInstance) {
+        $scope.showImgs = img;
+        $scope.cancel = function () {
+            $modalInstance.dismiss();
+        }
+    }]);
+
+    //器件选择功能方法
+    app.register.factory('TreeData', function() {
+        return function (tree) {
+            var me = this;
+            me.$data = tree;
+        }
+    })
+})

+ 13 - 1
src/main/webapp/resources/js/common/query/goods.js

@@ -7,10 +7,16 @@ define([ 'ngResource' ], function() {
 			* 获取分页面的GOODS数据(后台数据 产品管理部分)
 			 * start wangcz
 			* */
+            // 获取超级后台在售产品管理数据
 			loadGoodsList: {
-				url: 'trade/goods/background/page',
+				url: '/trade/goods/background/page',
 				method: 'POST'
 			},
+			// 获取超级后台产品管理数据
+            loadBrandProductsList: {
+                url: '/trade/products/background/page',
+                method: 'POST'
+            },
 			// 获取商家产品详情列表数据
 			loadUploadProductDetail: {
 				url: '/store-service/storeinfo',
@@ -48,10 +54,16 @@ define([ 'ngResource' ], function() {
 				method : 'GET',
 				isArray : true
 			},
+			// 查询在售产品详情接口
 			findOneById : {
 				url : 'trade/goods/one',
 				method : 'GET'
 			},
+			// 查询产品详情接口
+            findProductsOneById : {
+                url : 'trade/products/one',
+                method : 'GET'
+            },
 			//取得有效的简化的消息
 			findSimpleAvailableByUuid : {
 				url : 'trade/goods/simple/byUuidAndCurrency',

+ 72 - 72
src/main/webapp/resources/js/usercenter/controllers/forstore/single_entry_ctrl.js

@@ -15,7 +15,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         iniUrlImg: 'static/img/vendor/images/upload.png',
         RegulImg: 'static/img/vendor/images/upload.png',
         prices: [{'start': 1, rMBPrice: ''}],
-        minPackQty: 1,
+        // minPackQty: 1,
         minDelivery: 1,
         maxDelivery: 10,
         dateArea: 'formMe',
@@ -30,9 +30,9 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         pcmpcode: false,
         spec: false,
         minDelivery: false,
-        maxDelivery: false,
-        OnePrice: false,
-        minPackQty: false
+        maxDelivery: false
+        // OnePrice: false
+        // minPackQty: false
       }
       for (var i = 0; i < $scope.Regul.prices.length; i++) {
         $scope.Regul.prices[i].priceInvalid = false
@@ -250,35 +250,35 @@ define(['app/app', 'jquery-uploadify'], function(app) {
       goods.packaging = item;
     }
 
-    $scope.setPriceMinPackAmount = function(num) {
-      $rootScope.singleEntryInfo = true
-      if (num && num.indexOf('.') > -1) {
-        toaster.pop('warning', '提示', '最小包装数不能存在小数点')
-        $scope.Regul.minPackQty = 1
-      } else {
-        $scope.Regul.minPackQty = num
-      }
-      $scope.objError.minPackQty = false
-    }
+    // $scope.setPriceMinPackAmount = function(num) {
+    //   $rootScope.singleEntryInfo = true
+    //   if (num && num.indexOf('.') > -1) {
+    //     toaster.pop('warning', '提示', '最小包装数不能存在小数点')
+    //     $scope.Regul.minPackQty = 1
+    //   } else {
+    //     $scope.Regul.minPackQty = num
+    //   }
+    //   $scope.objError.minPackQty = false
+    // }
 
 
 
-    $scope.setReserve = function(num) {
-      $rootScope.singleEntryInfo = true
-      if (num && num.indexOf('.') > -1) {
-        toaster.pop('warning', '提示', '库存数量不能存在小数点')
-        $scope.Regul.reserve = 1
-      } else {
-        $scope.Regul.reserve = num
-      }
-      $scope.objError.reserve = false
-    }
+    // $scope.setReserve = function(num) {
+    //   $rootScope.singleEntryInfo = true
+    //   if (num && num.indexOf('.') > -1) {
+    //     toaster.pop('warning', '提示', '库存数量不能存在小数点')
+    //     $scope.Regul.reserve = 1
+    //   } else {
+    //     $scope.Regul.reserve = num
+    //   }
+    //   $scope.objError.reserve = false
+    // }
 
-    $scope.setOnePrice = function(num) {
-      $rootScope.singleEntryInfo = true
-      $scope.Regul.OnePrice = num
-      $scope.objError.OnePrice = false
-    }
+    // $scope.setOnePrice = function(num) {
+    //   $rootScope.singleEntryInfo = true
+    //   $scope.Regul.OnePrice = num
+    //   $scope.objError.OnePrice = false
+    // }
     // 修改规格书
     $scope.onUploadSuccess = function(data) {
       $rootScope.singleEntryInfo = true
@@ -313,10 +313,10 @@ define(['app/app', 'jquery-uploadify'], function(app) {
 
     // 最小起订量修改 梯度1的值等于最小起订量
     $scope.ProductupdateStartNumber = function(productUpOff) {
-      if (parseInt(productUpOff) >= parseInt($scope.Regul.prices[0].start)) {
-        $scope.Regul.prices[0].start = $scope.Regul.minPackQty
-        return false
-      }
+      // if (parseInt(productUpOff) >= parseInt($scope.Regul.prices[0].start)) {
+      //   $scope.Regul.prices[0].start = $scope.Regul.minPackQty
+      //   return false
+      // }
       $scope.Regul.prices[0].start = parseInt(productUpOff)
     }
     // 最小起订量失去焦点
@@ -327,13 +327,13 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         return
       }
       $rootScope.singleEntryInfo = true
-      if (!$scope.Regul.breakUp && $scope.Regul.minBuyQty !== $scope.Regul.minPackQty) {
-        if ($scope.Regul.minBuyQty % $scope.Regul.minPackQty !== 0) {
-          $scope.Regul.minBuyQty = $scope.Regul.minPackQty
-          toaster.pop('warning', '提示', '不可拆卖时,起订量必须是包装数量的倍数');
-          $scope.ProductupdateStartNumber($scope.Regul.minBuyQty)
-        }
-      }
+      // if (!$scope.Regul.breakUp && $scope.Regul.minBuyQty !== $scope.Regul.minPackQty) {
+      //   if ($scope.Regul.minBuyQty % $scope.Regul.minPackQty !== 0) {
+      //     $scope.Regul.minBuyQty = $scope.Regul.minPackQty
+      //     toaster.pop('warning', '提示', '不可拆卖时,起订量必须是包装数量的倍数');
+      //     $scope.ProductupdateStartNumber($scope.Regul.minBuyQty)
+      //   }
+      // }
     }
 
     /**
@@ -521,35 +521,35 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         $scope.objError.pcmpcode = true
         return;
       }
-      if ($scope.Regul.reserve === '' || !$scope.Regul.reserve) {
-        toaster.pop('warning','提示', '库存数量不能为空')
-        $scope.objError.reserve = true
-        return;
-      }
-
-      if ($scope.Regul.reserve <= 0) {
-        toaster.pop('warning','提示', '库存数量必须大于等于1')
-        $scope.objError.reserve = true
-        return;
-      }
-
-      if (/\D/.test($scope.Regul.reserve)) {
-        toaster.pop('warning','提示', '库存数量只能为正整数')
-        $scope.objError.reserve = true
-        return;
-      }
-
-      if ($scope.Regul.minPackQty && /\D/.test($scope.Regul.minPackQty)) {
-        toaster.pop('warning','提示', '最小包装数输入不正确')
-        $scope.objError.minPackQty = true
-        return;
-      }
-
-      if ($scope.Regul.OnePrice && !/^\d+(\.\d+)?$/.test($scope.Regul.OnePrice.trim())) {
-        toaster.pop('warning','提示', '成本单价输入不正确')
-        $scope.objError.OnePrice = true
-        return;
-      }
+      // if ($scope.Regul.reserve === '' || !$scope.Regul.reserve) {
+      //   toaster.pop('warning','提示', '库存数量不能为空')
+      //   $scope.objError.reserve = true
+      //   return;
+      // }
+
+      // if ($scope.Regul.reserve <= 0) {
+      //   toaster.pop('warning','提示', '库存数量必须大于等于1')
+      //   $scope.objError.reserve = true
+      //   return;
+      // }
+
+      // if (/\D/.test($scope.Regul.reserve)) {
+      //   toaster.pop('warning','提示', '库存数量只能为正整数')
+      //   $scope.objError.reserve = true
+      //   return;
+      // }
+
+      // if ($scope.Regul.minPackQty && /\D/.test($scope.Regul.minPackQty)) {
+      //   toaster.pop('warning','提示', '最小包装数输入不正确')
+      //   $scope.objError.minPackQty = true
+      //   return;
+      // }
+
+      // if ($scope.Regul.OnePrice && !/^\d+(\.\d+)?$/.test($scope.Regul.OnePrice.trim())) {
+      //   toaster.pop('warning','提示', '成本单价输入不正确')
+      //   $scope.objError.OnePrice = true
+      //   return;
+      // }
 
       if (!$scope.Regul.minBuyQty || $scope.Regul.minBuyQty === 0) {
         toaster.pop('warning','提示', '最小起订量必须是大于0的数字')
@@ -636,12 +636,12 @@ define(['app/app', 'jquery-uploadify'], function(app) {
       }
       jsonObject.product = {
         spec: $scope.Regul.spec, // 规格
-        minPackQty: $scope.Regul.minPackQty, // 最小包装量
-        erpReserve:  $scope.Regul.reserve, //库存
+        // minPackQty: $scope.Regul.minPackQty, // 最小包装量
+        erpReserve:  0, //库存
         cmpCode: $scope.Regul.pcmpcode, //型号
         brand: $scope.Regul.pbranden,//品牌
         prodName: $scope.Regul.kind, // 名称
-        price: $scope.Regul.OnePrice, // 成本单价
+        // price: $scope.Regul.OnePrice, // 成本单价
         attachment: $scope.Regul.Ischange ? $scope.Regul.Regulpic : '', // 规格书
         cmpImg: $scope.Regul.RegulImg !== $scope.Regul.iniUrlImg ? $scope.Regul.RegulImg : '',// 图片
         packaging: $scope.Regul.packaging // 包装方式

+ 6 - 5
src/main/webapp/resources/view/admin/product/productManage.html

@@ -115,8 +115,8 @@
                         <select name="" id="1" class="form-control" ng-model="goodsFilter.saleStatus">
                             <option value="">全部</option>
                             <option value="601">已上架</option>
-                            <option value="613">新品未上架</option>
-                            <option value="612">已下架</option>
+                            <!--<option value="613">新品未上架</option>-->
+                            <option value="612">未上架</option>
                         </select>
                     </label>
                 </div>
@@ -220,6 +220,7 @@
                 <a ng-click="batchDown()">批量下架</a>
                 <!--<a title="此功能没有开放">产品导出</a>-->
                 <a ng-click="exportClick()">产品导出</a>
+                <strong>请注意:当无选择项时,默认导出所有前1000条数据!</strong>
             </span>
             <span style="float: right;font-size: 14px">共<span style="color: red;" ng-bind="totalCount">3424</span>个产品</span>
         </div>
@@ -228,9 +229,9 @@
         <table class="table" ng-table="manageTableParams">
             <thead>
             <tr>
-                <th width="80">
+                <th width="120">
                     <label>
-                        <input id="AllChoose" type="checkbox" ng-checked="isChooseAll" ng-click="chooseAll()">全选
+                        <input id="AllChoose" type="checkbox" ng-checked="isChooseAll" ng-click="chooseAll()">全选当前页
                     </label>
                 </th>
                 <th width="120">操作</th>
@@ -266,7 +267,7 @@
                     <input id="{{$index+1}}" type="checkbox" ng-checked="list.isChoosed" ng-click="chooseOne(list)">
                 </td>
                 <td>
-                    <a target="_blank" href="admin#/manage/{{list.id}}">详情</a>
+                    <a target="_blank" href="admin#/manage/{{list.id}}?type=goods">详情</a>
                     <a ng-if="list.audited == 0" ng-click="auditProduct(list)">审核</a>
                     <br/>
                     <a ng-click="journalProduct(list)" style="margin-left:-1px;">日志</a>

+ 583 - 0
src/main/webapp/resources/view/admin/product/saleProductManage.html

@@ -0,0 +1,583 @@
+<div id="manage">
+    <div class="manage-form">
+        <div class="form-item">
+            <span class="item-title">物料录入时间:</span>
+            <div class="screen">
+                <div class="radio-block fl">
+                    <label class="com-check-radio">
+                        <input type="radio" id="oneMonth" name="date" ng-click="setFilters('dateArea', 'oneMonth')" ng-checked="dateArea == 'oneMonth'">
+                        <label for="oneMonth"></label>
+                        30天
+                    </label>
+                    <label class="com-check-radio">
+                        <input type="radio" id="threeMonth" name="date" ng-click="setFilters('dateArea', 'threeMonth')" ng-checked="dateArea == 'threeMonth'">
+                        <label for="threeMonth"></label>
+                        90天
+                    </label>
+                    <label class="com-check-radio">
+                        <input type="radio" id="sixMonth" name="date" ng-click="setFilters('dateArea', 'sixMonth')" ng-checked="dateArea == 'sixMonth'">
+                        <label for="sixMonth"></label>
+                        180天
+                    </label>
+                    <label class="com-check-radio">
+                        <input type="radio" id="allMonth" name="date" ng-click="setFilters('dateArea', 'allMonth')" ng-checked="dateArea == 'allMonth'">
+                        <label for="allMonth"></label>
+                        不限
+                    </label>
+                    <label class="com-check-radio">
+                        <input type="radio" id="autoMonth" name="date" ng-click="setFilters('dateArea', 'autoMonth')" ng-checked="dateArea == 'autoMonth'">
+                        <label for="autoMonth"></label>
+                        自定义
+                    </label>
+                </div>
+                <div class="sreach fr">
+                    <div  ng-show="dateArea == 'autoMonth'" class="date fl">
+                        <div class="data-input">
+                            <input id="start" type="text" ng-model="startDate" readonly="readonly"
+                                   class="form-control select-adder" placeholder="起始时间"
+                                   datepicker-popup="yyyy-MM-dd"
+                                   is-open="condition[0].open"
+                                   current-text="今天" clear-text="清除" close-text="关闭"
+                                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                                   ng-click="openDatePicker($event, condition, 0,1)"
+                                   ng-change="onDateCondition(1, startDate)"/>
+                            <button class="open" ng-click="openDatePicker($event, condition, 0)"></button>
+                        </div>
+                        <strong>–</strong>
+                        <div class="data-input">
+                            <input id="end" type="text" ng-model="endDate" readonly="readonly"
+                                   class="form-control select-adder" placeholder="结束时间"
+                                   datepicker-popup="yyyy-MM-dd"
+                                   is-open="condition[1].open"
+                                   current-text="今天" clear-text="清除" close-text="关闭"
+                                   datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
+                                   ng-click="openDatePicker($event, condition, 1, 2)"
+                                   ng-change="onDateCondition(2, endDate)"/>
+                            <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        <div class="form-item" style="background:#f5f5f5;">
+            <span class="item-title">条件筛选:</span>
+            <span>
+                <a ng-click="clearClick()">清空条件</a>
+                <a ng-click="searchClick()">确认筛选</a>
+            </span>
+            <span style="float:right">
+                <a ng-click="moreInfo()">更多信息</a>
+            </span>
+        </div>
+        <div class="form-top">
+            <div class="form-inline">
+                <div class="form-group form-group-sm">
+                    <label class="control-label">
+                        <span>物料名称:</span>
+                    </label>
+                    <div class="select-three">
+                        <select class="form-control"
+                                ng-model="kindPojo.first"
+                                ng-options="key as value.nameCn for (key,value) in kindInfo"
+                                ng-change="kindPojo.second='';kindPojo.third='';"
+                                style="opacity: 1;">
+                            <option value="">一级类目</option>
+                        </select>
+                        <select class="form-control" ng-model="kindPojo.second"
+                                ng-options="key as value.nameCn for (key,value) in kindInfo[kindPojo.first].children"
+                                ng-change="kindPojo.third='';"
+                                style="opacity: 1;">
+                            <option value="">二级类目</option>
+                        </select>
+                        <select class="form-control" ng-model="kindPojo.third" style="opacity: 1;"
+                                ng-options="value as value.nameCn for value in kindInfo[kindPojo.first].children[kindPojo.second].children">
+                            <option value="">三级类目</option>
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="form-inline">
+                <div class="form-group form-group-sm">
+                    <label class="control-label">
+                        <span>型号:</span>
+                        <input class="form-control" type="text" ng-model="goodsFilter.code" placeholder="型号">
+                    </label>
+                </div>
+                <div class="form-group form-group-sm">
+                    <label class="control-label">
+                        <span>品牌:</span>
+                        <input type="text" placeholder="品牌中英文名称" class="form-control" ng-model="goodsFilter.brand">
+                    </label>
+                </div>
+                <div class="form-group form-group-sm">
+                    <label class="control-label">
+                        <span>产品类型:</span>
+                        <select name="" id="8" ng-model="goodsFilter.standard" class="form-control">
+                            <option value="">全部</option>
+                            <option value="true">标准产品</option>
+                            <option value="false">非标准产品</option>
+                        </select>
+                    </label>
+                </div>
+                <div class="form-group form-group-sm">
+                    <label class="control-label">
+                        <span>图片类型:</span>
+                        <select name="" id="9" ng-model="goodsFilter.haveImg" class="form-control">
+                            <option value="">全部</option>
+                            <option value="true">自有图片</option>
+                            <option value="false">默认图片</option>
+                        </select>
+                    </label>
+                </div>
+            </div>
+        </div>
+        <div class="form-item">
+            <span class="item-title">查看报表:</span>
+            <span ng-if="startFormatDate">
+                <a ng-href="#/merchantProducts?startDate={{startFormatDate}}&endDate={{endFormatDate}}">商家产品数</a>
+                <a ng-href="#/brandProductsCount?startDate={{startFormatDate}}&endDate={{endFormatDate}}">品牌产品数</a>
+                <a ng-href="#/categoryNumber?startDate={{startFormatDate}}&endDate={{endFormatDate}}">品类产品数</a>
+            </span>
+            <span ng-if="!startFormatDate">
+                <a ng-href="#/merchantProducts">商家产品数</a>
+                <a ng-href="#/brandProductsCount">品牌产品数</a>
+                <a ng-href="#/categoryNumber">品类产品数</a>
+            </span>
+        </div>
+        <div class="form-item">
+            <span class="item-title">更多操作:</span>
+            <span>
+                <a ng-click="batchDown()">批量下架</a>
+                <!--<a title="此功能没有开放">产品导出</a>-->
+                <a ng-click="exportClick()">产品导出</a>
+                <strong>请注意:当无选择项时,默认导出所有前1000条数据!</strong>
+            </span>
+            <span style="float: right;font-size: 14px">共<span style="color: red;" ng-bind="totalCount">3424</span>个产品</span>
+        </div>
+    </div>
+    <div class="manage-table">
+        <table class="table" ng-table="manageTableParams">
+            <thead>
+            <tr>
+                <th width="120">
+                    <label>
+                        <input id="AllChoose" type="checkbox" ng-checked="isChooseAll" ng-click="chooseAll()">全选当前页
+                    </label>
+                </th>
+                <th width="120">操作</th>
+                <th width="160" ng-if="titleInShow['商家ID']">商家ID</th>
+                <th width="160" ng-if="titleInShow['商家名称']">商家名称</th>
+                <th width="160">产品信息</th>
+                <th width="160" ng-if="titleInShow['SKU编码']">SKU编码</th>
+                <th width="160" ng-if="titleInShow['产品编号']">产品编号</th>
+                <th width="160" ng-if="titleInShow['封装']">封装</th>
+                <th width="160" ng-if="titleInShow['梯度']">梯度</th>
+                <th width="160" ng-if="titleInShow['单价']">单价</th>
+                <th width="160" ng-if="titleInShow['交期(天)']">交期(天)</th>
+                <th width="160" ng-if="titleInShow['包装']">包装</th>
+                <th width="160" ng-if="titleInShow['包装数量']">包装数量</th>
+                <th width="160" ng-if="titleInShow['起订量']">起订量</th>
+                <th width="160" ng-if="titleInShow['拆包售卖']">拆包售卖</th>
+                <th width="160" ng-if="titleInShow['在售数量']">在售数量</th>
+                <th width="160" ng-if="titleInShow['锁库数']">锁库数</th>
+                <th width="160" ng-if="titleInShow['冻结数量']">冻结数量</th>
+                <th width="160" ng-if="titleInShow['库存总数']">库存总数</th>
+                <th width="160" ng-if="titleInShow['在售状态']">在售状态</th>
+                <th width="160" ng-if="titleInShow['销售方式']">销售方式</th>
+                <th width="160" ng-if="titleInShow['创建人']">创建人</th>
+                <th width="160" ng-if="titleInShow['创建时间']">创建时间</th>
+                <th width="160" ng-if="titleInShow['产品类型']">产品类型</th>
+                <th width="160" ng-if="titleInShow['图片类型']">图片类型</th>
+                <th width="160" ng-if="titleInShow['产品图片']">产品图片</th>
+            </tr>
+            </thead>
+            <tbody>
+            <tr ng-repeat="list in goodsList">
+                <td>
+                    <input id="{{$index+1}}" type="checkbox" ng-checked="list.isChoosed" ng-click="chooseOne(list)">
+                </td>
+                <td>
+                    <a target="_blank" href="admin#/manage/{{list.id}}?type=product">详情</a>
+                    <a ng-if="list.audited == 0" ng-click="auditProduct(list)">审核</a>
+                    <br/>
+                    <a ng-click="journalProduct(list)" style="margin-left:-1px;">日志</a>
+                    <a ng-if="list.status == 601 || list.status == 602" ng-click="soldOutProduct([list.batchCode])">下架</a>
+                </td>
+                <td ng-if="titleInShow['商家ID']">
+                    <span ng-if="list.goods" ng-bind="list.goods.enUU || '-'">商家ID</span>
+                    <span ng-if="!list.goods" ng-bind="list.enUU || '-'">商家ID</span>
+                </td>
+                <td ng-if="titleInShow['商家名称']">
+                    <span ng-if="list.goods" ng-bind="list.goods.storeName || '-'">商家名称</span>
+                    <span ng-if="!list.goods" ng-bind="list.storeName || '-'">商家名称</span>
+                </td>
+                <td>
+                    <p ng-if="list.goods">物料名称:<span ng-bind="list.goods.kindNameCn || '-'">****</span></p>
+                    <p ng-if="!list.goods">物料名称:<span ng-bind="list.kindNameCn || '-'">****</span></p>
+                    <p ng-if="list.goods">型号:<span ng-bind="list.goods.code || '-'">****</span></p>
+                    <p ng-if="!list.goods">型号:<span ng-bind="list.code || '-'">****</span></p>
+                    <p ng-if="list.goods">品牌:<span ng-bind="list.goods.brandNameEn || '-'">****</span></p>
+                    <p ng-if="!list.goods">品牌:<span ng-bind="list.brandNameEn || '-'">****</span></p>
+                </td>
+                <td ng-if="titleInShow['SKU编码']">
+                    <span ng-if="list.goods" ng-bind="list.goods.batchCode || '-'">SKU编码</span>
+                    <span ng-if="!list.goods" ng-bind="list.batchCode || '-'">SKU编码</span>
+                </td>
+                <td ng-if="titleInShow['产品编号']">
+                    <span ng-if="list.goods" ng-bind="list.goods.prodNum || '-'">产品编号</span>
+                    <span ng-if="!list.goods" ng-bind="list.prodNum || '-'">产品编号</span>
+                </td>
+                <td ng-if="titleInShow['封装']">
+                    <span ng-if="list.goods" ng-bind="list.goods.encapsulation || '-'">封装</span>
+                    <span ng-if="!list.goods" ng-bind="list.encapsulation || '-'">封装</span>
+                </td>
+                <td ng-if="titleInShow['梯度']">
+                    <div ng-repeat="qty in list.goods.prices" ng-if="list.goods">
+                          <span ng-if="!$last">
+                              <span ng-bind="qty.start"></span>-<span ng-bind="qty.end"></span>
+                          </span>
+                        <span ng-if="$last">
+                              <span ng-bind="qty.start"></span>以上
+                          </span>
+                    </div>
+                    <div ng-repeat="qty in list.prices" ng-if="!list.goods">
+                          <span ng-if="!$last">
+                              <span ng-bind="qty.start"></span>-<span ng-bind="qty.end"></span>
+                          </span>
+                        <span ng-if="$last">
+                              <span ng-bind="qty.start"></span>以上
+                          </span>
+                    </div>
+                </td>
+                <td ng-if="titleInShow['单价']">
+                    <div ng-repeat="price in list.goods.prices" ng-if="list.goods">
+                        <span ng-bind="list.currencyName == 'RMB' ? '¥' : '$'"></span>
+                        <span ng-bind="list.currencyName == 'RMB' ? price.rMBPrice : price.uSDPrice"></span>
+                    </div>
+                    <div ng-repeat="price in list.prices" ng-if="!list.goods">
+                        <span ng-bind="list.currencyName == 'RMB' ? '¥' : '$'"></span>
+                        <span ng-bind="list.currencyName == 'RMB' ? price.rMBPrice : price.uSDPrice"></span>
+                    </div>
+                </td>
+                <td ng-if="titleInShow['交期(天)']">
+                    <div ng-if="list.goods && list.goods.b2cMinDelivery != list.goods.b2cMaxDelivery">
+                        <span ng-bind="list.goods.b2cMinDelivery || '-'">交期(天)</span>-
+                        <span ng-bind="list.goods.b2cMaxDelivery || '-'">交期(天)</span>
+                    </div>
+                    <div ng-if="!list.goods && list.b2cMinDelivery != list.b2cMaxDelivery">
+                        <span ng-bind="list.b2cMinDelivery || '-'">交期(天)</span>-
+                        <span ng-bind="list.b2cMaxDelivery || '-'">交期(天)</span>
+                    </div>
+                    <span ng-if="list.goods && list.goods.b2cMinDelivery == list.goods.b2cMaxDelivery" ng-bind="list.goods.b2cMinDelivery || '-'">交期(天)</span>
+                    <span ng-if="!list.goods && list.b2cMinDelivery == list.b2cMaxDelivery" ng-bind="list.b2cMinDelivery || '-'">交期(天)</span>
+                </td>
+                <td ng-if="titleInShow['包装']">
+                    <span ng-if="list.goods" ng-bind="list.goods.packaging || '-'">包装</span>
+                    <span ng-if="!list.goods" ng-bind="list.packaging || '-'">包装</span>
+                </td>
+                <td ng-if="titleInShow['包装数量']">
+                    <span ng-if="list.goods" ng-bind="list.goods.minPackQty || '-'">包装</span>
+                    <span ng-if="!list.goods" ng-bind="list.minPackQty || '-'">包装</span>
+                </td>
+                <td ng-if="titleInShow['起订量']">
+                    <span ng-if="list.goods" ng-bind="list.goods.minBuyQty || '-'">起订量</span>
+                    <span ng-if="!list.goods" ng-bind="list.minBuyQty || '-'">起订量</span>
+                </td>
+                <td ng-if="titleInShow['拆包售卖']">
+                    <span ng-if="list.breakUp">可拆卖</span>
+                    <span ng-if="!list.breakUp">不可拆卖</span>
+                </td>
+                <td ng-if="titleInShow['在售数量']">
+                    <span ng-if="list.goods" ng-bind="list.goods.reserve">在售数量</span>
+                    <span ng-if="!list.goods" ng-bind="list.reserve">在售数量</span>
+                </td>
+                <td ng-if="titleInShow['锁库数']">
+                    <span ng-bind="'-'">锁库数</span>
+                </td>
+                <td ng-if="titleInShow['冻结数量']">
+                    <span ng-if="list.goods" ng-bind="list.goods.frozen">冻结数量</span>
+                    <span ng-if="!list.goods" ng-bind="list.frozen">冻结数量</span>
+                </td>
+                <td ng-if="titleInShow['库存总数']">
+                    <span ng-if="list.goods" ng-bind="list.goods.reserve + list.goods.frozen">库存总数</span>
+                    <span ng-if="!list.goods" ng-bind="list.reserve + list.frozen">库存总数</span>
+                </td>
+                <td ng-if="titleInShow['在售状态']">
+                    <span ng-if="list.goods" ng-bind="saleStatus[list.goods.status] || '-'">在售状态</span>
+                    <span ng-if="!list.goods" ng-bind="saleStatus[list.status] || '-'">在售状态</span>
+                </td>
+                <td ng-if="titleInShow['销售方式']">
+                    <span ng-if="list.goods" ng-bind="list.goods.selfSale || '-'">销售方式</span>
+                    <span ng-if="!list.goods" ng-bind="list.selfSale || '-'">销售方式</span>
+                </td>
+                <td ng-if="titleInShow['创建人']">
+                    <span ng-if="list.goods" ng-bind="list.goods.publisherName || '-'">创建人</span>
+                    <span ng-if="!list.goods" ng-bind="list.publisherName || '-'">创建人</span>
+                </td>
+                <td ng-if="titleInShow['创建时间']">
+                    <span ng-if="list.goods" ng-bind="list.goods.createdDate | date: 'yyyy-MM-dd HH:mm:ss' || '-'">创建时间</span>
+                    <span ng-if="!list.goods" ng-bind="list.createdDate | date: 'yyyy-MM-dd HH:mm:ss' || '-'">创建时间</span>
+                </td>
+                <td ng-if="titleInShow['产品类型']">
+                    <span ng-if="list.goods" ng-bind="list.goods.uuid ? '标准' : '非标'"></span>
+                    <span ng-if="!list.goods" ng-bind="list.uuid ? '标准' : '非标'"></span>
+                </td>
+                <td ng-if="titleInShow['图片类型']">
+                    <span ng-if="list.goods" ng-bind="list.goods.img ? '自有图片' : '默认图片'"></span>
+                    <span ng-if="!list.goods" ng-bind="list.img ? '自有图片' : '默认图片'"></span>
+                </td>
+                <td ng-if="titleInShow['产品图片']">
+                    <img ng-if="list.goods" ng-src="{{list.goods.img || 'static/img/store/common/default.png'}}" ng-click="showImg(list.img)" alt="产品图片">
+                    <img ng-if="!list.goods" ng-src="{{list.img || 'static/img/store/common/default.png'}}" ng-click="showImg(list.img)" alt="产品图片">
+                </td>
+            </tr>
+            </tbody>
+        </table>
+    </div>
+</div>
+<style>
+    .ng-table-pager {
+        position: absolute;
+        right: 0;
+        margin-top: 20px;
+    }
+    #manage input[type=checkbox]{
+        position:relative;
+        top:3px;
+        left:-3px;
+    }
+
+    .manage-form .form-top{
+        padding-top:15px;
+        border:1px solid #f5f5f5;
+    }
+    .manage-form .form-top .form-inline{
+        display: inline-block;
+        margin-bottom:10px;
+    }
+    .manage-form .form-top .form-group{
+        display: inline-block;
+        margin:0 5px;
+        vertical-align: middle;
+        line-height: 30px;
+    }
+
+    .manage-form .form-top label{
+        text-align: right;
+        font-size: 14px;
+        color:#666;
+    }
+
+    .manage-form .form-top label span{
+        display:inline-block;
+        width:80px;
+        font-weight:bold;
+        color:#2fa4e7;
+    }
+
+    .manage-form .form-top label input, .manage-form .form-top label select{
+        display: inline-block;
+        width:110px;
+        height:25px;
+        line-height: 25px;
+        padding:0 2px;
+        margin:0;
+    }
+    .manage-form .form-top .select-three {
+        display: inline-block;
+        margin:0;
+    }
+    .manage-form .form-top .select-three select{
+        display: inline-block;
+        min-width:140px;
+        height:25px;
+        line-height: 25px;
+        padding:0 2px;
+        margin:0;
+    }
+
+    .manage-table{
+        overflow-y: auto;
+    }
+
+    .manage-table table{
+        table-layout: fixed;
+        font-size: 14px;
+        color:#666;
+        border-collapse:separate;
+        border-spacing:0 5px;
+    }
+    .manage-table table thead tr{
+        height:50px;
+        line-height: 50px;
+        background: #f5f5f5;
+    }
+    .manage-table table thead tr label{
+        margin:0;
+    }
+    .form-control{
+        border-radius: 3px;
+    }
+    .manage-table table thead th{
+        text-align: center;
+        border:none;
+    }
+    .manage-table table thead th:first-child{
+        text-align: left;
+        padding-left:20px;
+    }
+    .manage-table table tbody{}
+    .manage-table table tbody tr{
+        height:72px;
+        margin-bottom:10px;
+        background: #fff;
+    }
+    .manage-table table tbody tr:hover{
+        position:relative;
+        top:2px;
+        left:2px;
+        cursor:pointer;
+        box-shadow:0 0 10px #e0e0e0;
+        background: #fff;
+    }
+    .manage-table table tbody td{
+        height:74px;
+        border:none;
+        vertical-align: middle;
+        text-align: center;
+    }
+    .manage-table table tbody td:first-child{
+        text-align: left;
+        padding-left:20px;
+    }
+    .manage-table table tbody td:nth-child(2){
+        padding:0;
+    }
+    .manage-table table tbody td p{
+        margin:0;
+        text-align: left;
+        font-size: 14px;
+        line-height: 18px;
+        width:100%;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space:nowrap;
+    }
+    .select-adder{
+        background:url("static/img/user/images/xiala.png") right no-repeat ;
+        background-position-x: 180px;
+    }
+    .manage-table table tbody td img{
+        margin:0;
+        width:50%;
+    }
+    .manage-table table tbody td p span{
+        margin:0;
+        font-size: 14px;
+        line-height: 18px;
+    }
+    .manage-table table tbody td a{
+        display:inline-block;
+        padding:0 8px;
+        margin:2px;
+        line-height: 18px;
+        height:20px;
+        border:1px solid #35a6e8;
+        border-radius:3px;
+        font-size: 12px;
+        color:#666;
+        background: #fff;
+        text-decoration: none;
+    }
+    .manage-table table tbody td a:hover{
+        background: #35a6e8;
+        cursor:pointer;
+        color:#fff;
+    }
+</style>
+<style>
+    .fr{
+        float:right;
+    }
+    .fl{
+        float:left;
+    }
+    /*搜索时间筛选 start*/
+    .manage-form .form-item .screen {
+        display: inline-block;
+        padding: 0;
+        vertical-align: middle;
+    }
+    .manage-form .com-check-radio{
+        font-size: 14px;
+        font-weight: normal;
+        line-height: 32px;
+        margin-right: 10px;
+        cursor:pointer;
+    }
+    .manage-form .screen .sreach .date{
+        margin:0 20px;
+    }
+    .manage-form .screen .sreach .date input{
+        width: 117px;
+        text-align: left;
+        border: 1px solid #5078cb;
+    }
+    .manage-form .screen .sreach .date input:hover{
+        cursor: pointer;
+    }
+    .manage-form .screen .sreach .date strong{
+        float: left;
+        line-height: 32px;
+        color: #999;
+        margin: 0 5px;
+    }
+    .manage-form .data-input{
+        float: left;
+        position: relative;
+    }
+    .manage-form .data-input button.open{
+        position: absolute;
+        right: 1px;
+        top: 1px;
+        width: 20px;
+        height: 30px;
+        background: url('static/img/user/images/xiala.png') right no-repeat #fff !important;
+        background-position-x: 100% !important;
+        border: none;
+    }
+    .manage-form .screen .sreach .date input.form-control{
+        padding: 6px 6px;
+        border-radius: 2px;
+        height:32px;
+    }
+    .manage-form .screen .radio-block {
+        width: auto;
+    }
+    .manage-form .form-item{
+        font-size:14px;
+        vertical-align: top;
+        line-height:40px;
+    }
+    .manage-form .form-item span{}
+    .manage-form .form-item span a{
+        display:inline-block;
+        text-decoration:none;
+        height:26px;
+        line-height:26px;
+        color:#2fa4e7;
+        border:1px solid #2fa4e7;
+        border-radius:4px;
+        padding:0 10px;
+        margin:0 10px;
+    }
+    .manage-form .form-item span a:hover{
+        cursor:pointer;
+        background: #2fa4e7;
+        color:#fff;
+    }
+    .manage-form .form-item .item-title{
+        margin-left:5px;
+        font-weight:bold;
+    }
+</style>

+ 1 - 1
src/main/webapp/resources/view/sso/left_nav.html

@@ -51,7 +51,7 @@
 		<li ng-class="{'active' : active == 'sso_invoice'}"><span ui-sref="ssoInvoice">开票信息</span></li>
 		<li ng-class="{'active' : active == 'vendor_pay_center'}" ng-if="userInfo.enterprise.uu && userInfo.enterprise.isVendor == 313"><span ui-sref="gatheringAccount({'tab': 'accountTab'})">收款账户</span></li>
 		<li ng-class="{'active' : active == 'buyer_pay_center'}"><span ui-sref="payAccount({'status': 'pay-info'})">付款账户</span></li>
-		<li ng-class="{'active' : active == 'baseInfo_myRequest'}"><span ui-sref="baseInfo_myRequest">企业圈</span></li>
+		<li ng-if="personage" ng-class="{'active' : active == 'baseInfo_myRequest'}"><span ui-sref="baseInfo_myRequest">企业圈</span></li>
 		<li ng-class="{'active' : active == 'approvalflow_log'}"><span ui-sref="approvalflow_log">操作日志</span></li>
 		<!--<li ng-class="{'active' : active == 'approvalflow_flow'}"><span ui-sref="approvalflow_flow">审批流</span></li>-->
 		<!--<li ng-class="{'active' : active == 'vendor_logistics'}">-->

+ 57 - 166
src/main/webapp/resources/view/usercenter/forstore/single_entry.html

@@ -258,62 +258,63 @@
             {{Regul.packaging || '-'}}
           </div>
         </div>
-        <div class="clearfix w50 fl list">
-          <div class="fl name">
-            最小包装数(PCS):
-          </div>
-          <div class="fl input" ng-show="!showProductInfo">
-            <!-- 可编辑状态 -->
-            <input type="text"
-                   oninput="if(value.length>6)value=value.slice(0,6)"
-                   placeholder="请输入最小包装数"
-                   ng-model="Regul.minPackQty"
-                   onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste="this.value=this.value.replace(/\D|^0/g,'')"
-                   ng-blur="setPriceMinPackAmount(Regul.minPackQty)"
-                   class="form-control inputText" maxlength="50"
-                   ng-class="objError.minPackQty ? 'danger' : '' "
-            />
-          </div>
-          <div class="fl textinput" ng-show="showProductInfo">
-            {{Regul.minPackQty || '-'}}
-          </div>
-        </div>
-        <div class="clearfix w50 fl list">
-          <div class="fl name">
-            <span class="red">*</span>库存数量(PCS):
-          </div>
-          <div class="fl input" ng-show="!showProductInfo">
-            <!-- 可编辑状态 oninput="if(value.length>6)value=value.slice(0,6)" -->
-            <input type="text"
-                   placeholder="请输入库存数量"
-                   ng-model="Regul.reserve"
-                   ng-blur="setReserve(Regul.reserve)"
-                   class="form-control inputText" maxlength="9"
-                   ng-class="objError.reserve ? 'danger' : '' "/>
-          </div>
-          <div class="fl textinput" ng-show="showProductInfo">
-            {{Regul.reserve || '-'}}
-          </div>
-        </div>
-        <div class="clearfix w50 fl list">
-          <div class="fl name">
-            成本单价({{(!storeInfo.enType || storeInfo.enType === 'MAINLAND') ? '¥' : '$'}}):
-          </div>
-          <div class="fl input" ng-show="!showProductInfo">
-            <!-- 可编辑状态 oninput="if(value.length>6)value=value.slice(0,6)" -->
-            <input type="text"
-                   placeholder="请输入成本单价"
-                   ng-model="Regul.OnePrice"
-                   ng-blur="setOnePrice(Regul.OnePrice)"
-                   class="form-control inputText" maxlength="12" validata-price
-                   oninput="if(value.length>11)value=value.slice(0,11)"
-                   ng-class="objError.OnePrice ? 'danger' : '' "
-            />
-          </div>
-          <div class="fl textinput" ng-show="showProductInfo">
-            {{Regul.OnePrice || '-'}}
-          </div>
-        </div>
+        <div class="clearfix w50 fl list" style="height:40px;"></div>
+        <!--<div class="clearfix w50 fl list">-->
+          <!--<div class="fl name">-->
+            <!--最小包装数(PCS):-->
+          <!--</div>-->
+          <!--<div class="fl input" ng-show="!showProductInfo">-->
+            <!--&lt;!&ndash; 可编辑状态 &ndash;&gt;-->
+            <!--<input type="text"-->
+                   <!--oninput="if(value.length>6)value=value.slice(0,6)"-->
+                   <!--placeholder="请输入最小包装数"-->
+                   <!--ng-model="Regul.minPackQty"-->
+                   <!--onkeyup="this.value=this.value.replace(/\D|^0/g,'')" onafterpaste="this.value=this.value.replace(/\D|^0/g,'')"-->
+                   <!--ng-blur="setPriceMinPackAmount(Regul.minPackQty)"-->
+                   <!--class="form-control inputText" maxlength="50"-->
+                   <!--ng-class="objError.minPackQty ? 'danger' : '' "-->
+            <!--/>-->
+          <!--</div>-->
+          <!--<div class="fl textinput" ng-show="showProductInfo">-->
+            <!--{{Regul.minPackQty || '-'}}-->
+          <!--</div>-->
+        <!--</div>-->
+        <!--<div class="clearfix w50 fl list">-->
+          <!--<div class="fl name">-->
+            <!--<span class="red">*</span>库存数量(PCS):-->
+          <!--</div>-->
+          <!--<div class="fl input" ng-show="!showProductInfo">-->
+            <!--&lt;!&ndash; 可编辑状态 oninput="if(value.length>6)value=value.slice(0,6)" &ndash;&gt;-->
+            <!--<input type="text"-->
+                   <!--placeholder="请输入库存数量"-->
+                   <!--ng-model="Regul.reserve"-->
+                   <!--ng-blur="setReserve(Regul.reserve)"-->
+                   <!--class="form-control inputText" maxlength="9"-->
+                   <!--ng-class="objError.reserve ? 'danger' : '' "/>-->
+          <!--</div>-->
+          <!--<div class="fl textinput" ng-show="showProductInfo">-->
+            <!--{{Regul.reserve || '-'}}-->
+          <!--</div>-->
+        <!--</div>-->
+        <!--<div class="clearfix w50 fl list">-->
+          <!--<div class="fl name">-->
+            <!--成本单价({{(!storeInfo.enType || storeInfo.enType === 'MAINLAND') ? '¥' : '$'}}):-->
+          <!--</div>-->
+          <!--<div class="fl input" ng-show="!showProductInfo">-->
+            <!--&lt;!&ndash; 可编辑状态 oninput="if(value.length>6)value=value.slice(0,6)" &ndash;&gt;-->
+            <!--<input type="text"-->
+                   <!--placeholder="请输入成本单价"-->
+                   <!--ng-model="Regul.OnePrice"-->
+                   <!--ng-blur="setOnePrice(Regul.OnePrice)"-->
+                   <!--class="form-control inputText" maxlength="12" validata-price-->
+                   <!--oninput="if(value.length>11)value=value.slice(0,11)"-->
+                   <!--ng-class="objError.OnePrice ? 'danger' : '' "-->
+            <!--/>-->
+          <!--</div>-->
+          <!--<div class="fl textinput" ng-show="showProductInfo">-->
+            <!--{{Regul.OnePrice || '-'}}-->
+          <!--</div>-->
+        <!--</div>-->
         <div class="clearfix w50 fl list">
           <div class="fl name">
             规格书:
@@ -367,116 +368,6 @@
       </div>
     </div>
     <div class="single_middle">
-      <!--<div class="title-div" style="margin-top: 20px;">销售信息</div>
-      <div class="single_middle single_top_wrapper clearfix">
-        <div class="w50 fl list">
-          <div class="clearfix marginBottom14">
-            <div class="fl name">最小起订量(PCS):
-            </div>
-            <div class="fl input" style="position: relative" ng-show="!showProductInfo">
-              <input type="text"
-                     placeholder="请输入最小起订量"
-                     maxlength="6"
-                     class="form-control inputText"
-                     oninput="if(value.length>6)value=value.slice(0,6)"
-                     ng-model="Regul.minBuyQty"
-                     ng-change="ProductupdateStartNumber(Regul.minBuyQty)"
-                     ng-blur="ProductblurMinBuyQty(Regul.minBuyQty)"
-                     ng-class="{'danger': objError.minBuyQty}"
-              />
-            </div>
-            <div class="fl textinput" ng-show="showProductInfo">
-              {{Regul.minBuyQty || '-'}}
-            </div>
-          </div>
-          <div class="clearfix marginBottom14">
-            <div class="fl name">交期(天):</div>
-            <div class="fl input" ng-show="!showProductInfo">
-              <input type="text"
-                     placeholder="天数"
-                     maxlength="3"
-                     class="form-control inputText"
-                     oninput="if(value.length>3)value=value.slice(0,3)"
-                     ng-model="Regul.minDelivery"
-                     ng-blur="changeDelivery(Regul.minDelivery, Regul.maxDelivery, true, productUpOff)"
-                     ng-class="{'error' : objError.minDelivery}"
-                     style="width: 144px;display: inline-block;"
-              />&nbsp;-&nbsp;<input type="text"
-                                    style="width: 144px;display: inline-block;"
-                                    placeholder="天数"
-                                    maxlength="3"
-                                    class="form-control inputText"
-                                    oninput="if(value.length>3)value=value.slice(0,3)"
-                                    ng-model="Regul.maxDelivery"
-                                    ng-blur="changeDelivery(Regul.minDelivery, Regul.maxDelivery, true, productUpOff)"
-                                    ng-class="{'danger' : objError.maxDelivery}"
-            />
-            </div>
-            <div class="fl textinput" ng-show="showProductInfo">
-              {{Regul.minDelivery}} - {{Regul.maxDelivery}}
-            </div>
-          </div>
-          <div class="clearfix marginBottom14">
-            <div class="fl name">可拆卖:</div>
-            <div class="fl" ng-show="!showProductInfo">
-              <span class="switch"><button ng-class="{'active' : Regul.breakUp}" ng-click="productToggleIsBreadUp('breakUp', false)"></button></span>
-            </div>
-            <div class="fl textinput" ng-show="showProductInfo">
-              {{Regul.breakUp ? '是': '否'}}
-            </div>
-          </div>
-          <div class="clearfix">
-            <div class="fl name">销售方式:</div>
-            <div class="fl" style="line-height: 34px;"  ng-show="!showProductInfo">
-              <label class="com-check-radio" style="margin-left: 5px;font-size: 14px">
-                <input type="radio" id="autoMonth0" ng-click="productChangeSelfType(1, 'formMe')" name="date" ng-model="Regul.dateArea" value="formMe">
-                <label style="vertical-align: middle;top:0px !important;" for="autoMonth0"></label>
-                自营
-              </label>
-              <label class="com-check-radio" style="margin-left: 10px;font-size: 14px">
-                <input type="radio" id="autoMonth1" ng-click="productChangeSelfType(2, 'autoMonth')" name="date"  ng-model="Regul.dateArea" value="autoMonth">
-                <label style="vertical-align: middle;top:0px !important;" for="autoMonth1"></label>
-                寄售
-              </label>
-            </div>
-            <div class="fl textinput" ng-show="showProductInfo">
-              {{Regul.dateArea === 'formMe' ? '自营': '寄售'}}
-            </div>
-          </div>
-        </div>
-        <div class="w50 fl list">
-          <li class="wuliao_list clearfix">
-            <div class="name pull-left">价格梯度:</div>
-            <div class="list pull-left" style="width: 280px;border: 1px solid #dcdcdc;margin-top: 0px">
-              <div style="background: #f1f3f6;font-size: 14px;color: #333;text-align: center;line-height: 34px;">
-                <span class="fl w50" style="width: 50%">分段数量(PCS)</span>
-                <span class="fl w50" style="width: 50%">分段价格({{storeInfo.enType !== 'HK' ? '¥' : '$'}})</span>
-                <div style="clear:both"></div>
-              </div>
-              <div class="plusBtn" style="font-size: 14px;color: #333;background: #fff;border-top: 1px solid #dcdcdc;position:relative" ng-repeat="price in Regul.prices">
-                <span class="fl w50" style="width: 50%;border-right:1px solid #dcdcdc" ng-show="!showProductInfo">
-                  <input text="text" style="width: 100%;outline: 0;border: 0;text-align: center;height: 30px" maxlength="9" ng-disabled="$index === 0" ng-readonly="$index === 0" ng-model="price.start" ng-blur="productPriceInfoBlur($index, price.start)" />
-                </span>
-                <span class="fl w50" style="text-align: center;border-right:1px solid #dcdcdc" ng-show="showProductInfo">
-                  {{price.start}}+
-                </span>
-                <span class="fl w50" style="width: 50%" ng-show="!showProductInfo">
-                  <input ng-show="storeInfo.enType !== 'HK'" type="text" autocomplete="off" validata-price ng-blur="changePrices(Regul.prices, price.rMBPrice, $index)" oninput="if(value.length>11)value=value.slice(0,11)" style="width: 100%;outline: 0;border: 0;text-align: center;height: 30px" ng-model="price.rMBPrice" />
-                  <input ng-show="storeInfo.enType === 'HK'" type="text" autocomplete="off" validata-price ng-blur="changePrices(Regul.prices, price.uSDPrice, $index)" oninput="if(value.length>11)value=value.slice(0,11)" style="width: 100%;outline: 0;border: 0;text-align: center;height: 30px" ng-model="price.uSDPrice" />
-                </span>
-                <span class="fl w50" ng-show="showProductInfo" style="text-align: center">
-                  {{price.rMBPrice || price.uSDPrice || '-'}}
-                </span>
-                <div style="clear:both"></div>
-                <div class="input-list ng-scope" style="height: 24px;line-height: 24px;position: absolute;right: -38px;top: 3px" ng-show="!showProductInfo">
-                  <a class="reduce" ng-disabled="Regul.prices.length < 2" ng-click="productDeleteFragment(Regul.prices, $index)" disabled="disabled"><i class="fa fa-minus-circle restrict-color" ng-class="{ 'restrict-color':Regul.prices.length === 1 }"></i></a>
-                  <a class="add" ng-click="productAddFragment(Regul.prices)" ng-disabled="Regul.prices.length >= 3"><i class="fa fa-plus-circle" ng-class="{ 'restrict-color': $index === 2 }"></i></a>
-                </div>
-              </div>
-            </div>
-          </li>
-        </div>
-      </div>-->
       <div class="editRegulControll">
         <div ng-click="clearCheckBox()" ng-show="!showProductInfo">取消</div>
         <div ng-click="productSave()"  ng-show="!showProductInfo">确定</div>