wangcz 7 лет назад
Родитель
Сommit
82d3ec7cef

+ 12 - 0
src/main/webapp/resources/js/usercenter/app.js

@@ -465,6 +465,18 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'commo
             templateUrl : 'static/view/usercenter/forstore/buyer_material.html',
             controllerUrl : "app/controllers/forstore/buyer_materialCtrl",
             controller : 'buyer_materialCtrl'
+        })).state('buyer_storage', angularAMD.route({
+            title : '物料资料产品管理入库部分',
+            url : '/buyer_storage',
+            templateUrl : 'static/view/usercenter/forstore/buyer_storage.html',
+            controllerUrl : "app/controllers/forstore/buyer_storageCtrl",
+            controller : 'buyer_storageCtrl'
+        })).state('sale_badIn', angularAMD.route({
+            url: '/badIn',
+            title: 'b2b客户出入库-不良品入库单',
+            templateUrl: 'static/view/usercenter/b2b/sale_badIn.html',
+            controller: 'SaleBadInCtrl',
+            controllerUrl: 'app/controllers/b2b/sale_badIn'
 		})).state('purc_vendor', angularAMD.route({
 			url: "/purc/vendor",
 			templateUrl: "static/view/usercenter/b2b/Purc/vendor.html",

+ 5 - 3
src/main/webapp/resources/js/vendor/controllers/b2b/sale/sale_badIn.js → src/main/webapp/resources/js/usercenter/controllers/b2b/sale_badIn.js

@@ -8,14 +8,16 @@ define(['app/app'], function (app) {
     CurrentRole.isUser({}, {}, function (data) {
       $scope.isUser = data.isUser;
     });
-    $scope.tab = 'B2b';
-    $scope.storeType = 'badIn'
-    $rootScope.active = "vendor_material"
+    $scope.tab = 'storage';
+    $rootScope.active = "buyer_material"
     $scope.active = 'all';
     $scope.agreedText = '全部';
     $scope.dateZoneText = '一个月内';
     $scope.condition = {dateZone: 1};
 
+    $scope.toggleType = function(type) {
+      window.location.href = '/user#/buyer_storage?type=' + type
+    };
     /* 时间筛选初始化*/
     var fromDate = new Date();
     var toDate = new Date();

+ 993 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_storageCtrl.js

@@ -0,0 +1,993 @@
+define([ 'app/app' ], function(app) {
+    'use strict';
+    app.register.controller('buyer_storageCtrl', ['$location', '$scope', '$rootScope', '$stateParams', 'BaseService', 'Goods', 'KdnLogistics', '$modal', 'toaster', 'Loading', 'AuthenticationService', '$q', '$upload', '$http', 'ngTableParams', 'InvoiceFPurchase', 'ShippingAddress', 'Enterprise', function ($location, $scope, $rootScope, $stateParams, BaseService, Goods, KdnLogistics, $modal, toaster, Loading, AuthenticationService, $q, $upload, $http, ngTableParams, InvoiceFPurchase, ShippingAddress, Enterprise) {
+        $rootScope.active = 'buyer_material';
+        $scope.keyword = '';
+        $scope.type = '';
+        $scope.tab = 'storage';
+        $scope.isInt = /^[0-9]*[1-9][0-9]*$/;
+        document.title = '买家入库-优软商城';
+        $scope.storage_tab = 'inBound';
+        $scope.countData = 10;
+        $scope.userInfo = $rootScope.userInfo || {};
+
+
+        // 更多操作数据和记录
+        $scope.handleLink = [
+            {name: '查看入库记录', tab: 'inBound', id: 0},
+            {name: '采购入库', tab: 'inBound', id: 2},
+            {name: '其它入库', tab: 'inBound', id: 1},
+            {name: '查看出库记录', tab: 'outBound', id: 0},
+            {name: '销售出库', tab: 'outBound', id: 2},
+            {name: '其它出库', tab: 'outBound', id: 1}];
+        $scope.handleItem = $stateParams.type;
+
+        // 销售方式数据
+        $scope.boundType = {
+            INBOUND: '全部类型',
+            OTHER_INBOUND: '其它入库',
+            PURCHASE_INBOUND: '采购入库',
+            OUTBOUND: '全部类型',
+            OTHER_OUTBOUND: '其它出库',
+            SELL_OUTBOUND: '销售出库'
+        };
+        // 时间格式化
+        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() + 4) / 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 getRealLen = function (str) {
+            var len = 0;
+            for (var i = 0; i < str.length; i++) {
+                if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {
+                    len += 2;
+                } else {
+                    len++;
+                }
+            }
+            return len;
+        }
+        var cutOutString = function (str, length) {
+            for (var i = 1; i <= str.length; i++) {
+                if (getRealLen(str.substr(0, i)) > length){
+                    str = str.substr(0, i-1);
+                    break;
+                }
+            }
+            return str;
+        };
+
+        // 清空数据初始化数据
+        var clearRecordParams = function () {
+            $scope.dateArea = 'oneMonth'
+            $scope.keyword = null;
+            $scope.type = $scope.storage_tab === 'inBound'? 'INBOUND' : 'OUTBOUND'
+            $scope.selfSupport = $scope.storage_tab === 'inBound'? $scope.boundType.INBOUND : $scope.boundType.OUTBOUND;
+            var currentTime = _getClearDay(new Date());
+            var endDate = currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+            $scope.startDate = currentTime - 30 * 24 * 60 * 60 * 1000;
+            $scope.endDate = endDate;
+        };
+        clearRecordParams();
+
+        //获取币别信息
+        Enterprise.getCurrencyByRegisterAddress(null, function (data) {
+            if(data.code === 1) {
+                $scope.currency = data.data;
+            }else {
+                toaster.pop('info', '提示', '您公司的注册地址为空,无法确定币别,系统默认为人民币');
+                $scope.currency = 'RMB';
+            }
+        }, function (response) {
+            toaster.pop('info', '提示', '获取不到公司的币别信息');
+        });
+
+        // 其它出入库默认数据
+        $scope.othenParam = {
+            enName: '',
+            detail: []
+        };
+        var initOtherData = function () {
+            $scope.othenParam = {
+                enName: '',
+                detail: []
+            }
+            $scope.newDate = _formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
+            $scope.otherData = [];
+            if($stateParams.ids){
+                Goods.findAllProduct({ids: $stateParams.ids}, function(data) {
+                    $scope.otherData = data;
+                })
+            } else {
+                for (var i = 0; i< $scope.countData; i++) {
+                    $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true})
+                }
+            }
+        }
+        initOtherData();
+
+        //出入库切换
+        $scope.toggleStorage = function (type) {
+            $scope.storage_tab = type;
+            $scope.type = $scope.storage_tab === 'inBound'? 'INBOUND' : 'OUTBOUND';
+            getLoadStorageData();
+            initOtherData();
+        };
+
+        // 操作类型切换
+        $scope.toggleType = function (type) {
+            $scope.handleItem = type;
+            if(type !== 1) {
+                getLoadStorageData();
+            }
+            initOtherData();
+            clearRecordParams();
+            // window.location.href = '#/vendor_storage?type=' + type
+        };
+        // 销售方式筛选
+        $scope.changeSupportType = function (type) {
+            if (!type) return ;
+            $scope.selfSupport = $scope.boundType[type];
+            $scope.type = type;
+            getLoadStorageData();
+        };
+
+        // 时间选择操作
+        $scope.setFilters = function (type, val) {
+            $scope[type] = val;
+            if (type === 'dateArea') {
+                // 时间筛选
+                var currentTime = _getClearDay(new Date());
+                var endDate = currentTime + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+                if (val === 'oneMonth') {
+                    $scope.startDate = currentTime - 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else if (val === 'threeMonth') {
+                    $scope.startDate = currentTime - 3 * 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else if (val === 'sixMonth') {
+                    $scope.startDate = currentTime - 6 * 30 * 24 * 60 * 60 * 1000;
+                    $scope.endDate = endDate;
+                } else {
+                    $scope.startDate = null;
+                    $scope.endDate = null;
+                }
+            }
+            if(val !== 'autoMonth') {
+                getLoadStorageData();
+            }
+        };
+
+        // 初始化时间变量
+        $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, autoStartDate, autoEndDate) {
+            $scope.startDate = autoStartDate ? autoStartDate.getTime() : null;
+            $scope.endDate = autoEndDate ? autoEndDate.getTime() + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000 : null;
+            if ($scope.startDate && $scope.endDate && $scope.startDate > $scope.endDate) {
+                if (bool === 1) {
+                    toaster.pop('info', '起始时间不能大于结束时间')
+                    $scope.startDate = null;
+                } else {
+                    toaster.pop('info', '结束时间不能小于起始时间');
+                    $scope.endDate = null;
+                }
+            }
+            /*   if ($scope.endDate && bool === 2) {
+             $scope.endDate = $scope.endDate + 23 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000;
+             }*/
+            getLoadStorageData();
+        };
+
+        // 获取查看出入库记录
+        var getUrl = function() {
+            if($scope.handleItem === 0) {
+                return 'getLoadStorageData'
+            } else if($scope.handleItem === 2) {
+                if($scope.storage_tab === 'inBound') {
+                    return 'getByEnterpriseData'
+                } else {
+                    return 'getByStatusAndInternal'
+                }
+            }
+        };
+        var getLoadStorageData = function () {
+            $scope.storageTableParams = new ngTableParams({
+                page: 1,
+                count:10
+            }, {
+                total: 0,
+                getData: function ($defer, params) {
+                    var param = BaseService.parseParams(params.url())
+                    if($scope.keyword){
+                        param.keyword = $scope.keyword
+                    }
+                    if($scope.handleItem === 0) {
+                        param.type = $scope.type;
+                    }
+                    // 出库
+                    if($scope.storage_tab === 'outBound' && $scope.handleItem === 2) {
+                        param.sorting = {"createtime":"DESC"};
+                        param.status = '502-406';
+                        param.startMils = $scope.startDate;
+                        param.endMils = $scope.endDate;
+                    } else {
+                        // 入库
+                        param.fromDate = $scope.startDate;
+                        param.toDate = $scope.endDate;
+                    }
+                    if ($scope.handleItem !== 1) {
+                        // 不等于其他出库或者入库
+                        Goods[getUrl()](param, function(data) {
+                            $scope.storageList = data.content
+                            params.total(data.totalElements);
+                            $defer.resolve(data.content);
+                        }, function(err) {
+                            toaster.pop('error', '获取信息失败')
+                        })
+                    }
+                }
+            })
+        };
+
+        if ($location.$$search.type !== undefined) {
+            $scope.toggleType(Number($location.$$search.type))
+        } else {
+            getLoadStorageData();
+        }
+
+        // 搜索功能
+        $scope.onSearch = function (type) {
+            $scope.keyword = type;
+            getLoadStorageData();
+        };
+
+        // 展开收起
+        $scope.unfoldClick = function (data, type) {
+            $scope.logistics.number = '';
+            $scope.logistics.companyName = '';
+            angular.forEach(data, function(key) {
+                type.id !== key.id ? key.seleted = false : key.seleted = true;
+            })
+        };
+
+        // 点击外面清除弹窗
+        $scope.clearOtherData = function() {
+            angular.forEach($scope.otherData, function(val) {
+                val.show = false;
+                if(!val.id){
+                    val.pbranden = '';
+                    val.key = '';
+                    val.kind = '';
+                    val.spec = '';
+                    val.qty = '';
+                    val.price = '';
+                    val.erpReserve = '';
+                }
+            })
+        }
+
+        $scope.chickAmountBlur = function (item, num) {
+            if($scope.storage_tab === 'outBound') {
+                if(num === 0) {
+                    toaster.pop('info', '提示', '该型号在产品库中库存数量为0,不能出库!');
+                } else if(item.erpReserve && (num > item.erpReserve)) {
+                    toaster.pop('info', '提示', '出库量数量不能大于库存数!');
+                }
+            }
+        }
+
+        $scope.onChange = function (type) {
+            angular.forEach($scope.otherData, function(val) {
+                val.show = false;
+            })
+            type.show = true;
+            Goods.getKeywordToProductId({keyword: type.key}, function(data) {
+                if(data.length <= 0) {
+                    toaster.pop('info', '提示', '该型号不存在你的产品库中!');
+                    type.pbranden = '';
+                    type.key = '';
+                    type.kind = '';
+                    type.spec = '';
+                    type.qty = '';
+                    type.price = '';
+                    type.erpReserve = '',
+                    $scope.listData = [];
+                    type.show = false;
+                } else {
+                    $scope.listData = data
+                }
+            }, function (res) {
+                $scope.listData = [];
+                type.show = false;
+                toaster.pop('info', '提示', '该型号不存在你的产品库中!');
+            })
+        };
+        $scope.addProductId = function (key, type) {
+            type.show = false;
+            type.key = key.pcmpcode;
+            type.pbranden = key.pbranden;
+            type.kind = key.kind;
+            type.spec = key.spec;
+            type.id = key.id;
+            type.price = key.price;
+            type.erpReserve = key.erpReserve;
+            if((type.erpReserve <= 0) && $scope.storage_tab === 'outBound'){
+                toaster.pop('info', '提示', '该型号在产品库中库存数量为0,不能出库!');
+            }
+        };
+
+        $scope.addOneTable = function (type) {
+            if(type === 'clear') {
+                initOtherData()
+            } else if(type === 'one') {
+                $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true});
+            } else if(type === 'ten') {
+                for (var i = 0; i< 10; i++) {
+                    $scope.otherData.push({qty: '', id: '', price: '', key: '', erpReserve: '', show: false, newId: true})
+                }
+            }
+        };
+
+        // 确认提交
+        $scope.otherAddClick = function (type) {
+            if(type === 'clear'){
+                $scope.toggleType(0);
+                return false
+            }
+            $scope.othenParam.detail = [];
+            var flag = 0;
+            angular.forEach($scope.otherData, function(val) {
+                if(val.id) {
+                    if((val.erpReserve <= 0) && $scope.storage_tab === 'outBound'){
+                        flag = 1
+                    } else if((val.erpReserve < val.qty) && $scope.storage_tab === 'outBound') {
+                        flag = 2
+                    } else if(val.qty && Number(val.qty) <= 0) {
+                        flag = 4
+                    } else if(val.qty) {
+                        val.price ?
+                            $scope.othenParam.detail.push({productId: val.id, qty: Number(val.qty), price: Number(val.price)}) :
+                            $scope.othenParam.detail.push({productId: val.id, qty: Number(val.qty)});
+                    } else {
+                        flag = 3
+                    }
+                }
+            })
+            if(flag === 1) {
+                toaster.pop('info', '提示', '产品库中库存数量为0将不能出库!');
+                return;
+            }
+            if(flag === 2) {
+                toaster.pop('info', '提示', '出库量数量不能大于库存数!');
+                return;
+            }
+            if(flag === 3) {
+                toaster.pop('info', '提示', '请填写数量!');
+                return;
+            }
+            if(flag === 4) {
+                toaster.pop('info', '提示', '填写的数量不能小于0!');
+                return;
+            }
+            if($scope.othenParam.detail.length <= 0) {
+                toaster.pop('info', '提示', '至少填写一条数据!');
+                return;
+            }
+            Goods.saveOtherProductData({storage_tab: $scope.storage_tab, enName: $scope.othenParam.enName ? $scope.othenParam.enName : null}, $scope.othenParam.detail, function(data) {
+                if(data.code === 1) {
+                    toaster.pop('success', '申请成功!');
+                    initOtherData();
+                    $scope.toggleType(0);
+                }
+            }, function(res) {
+                toaster.pop('error', '申请失败,请检查再试')
+            })
+        };
+
+
+        //加载发货地址
+        var loadAddrs = function() {
+            ShippingAddress.getListEnterprise({ship : false}, function(data) {
+                $scope.addresss = data;
+                $scope.total = $scope.addresss.length;
+                $scope.jsonSdAddress = {};
+                if($scope.addresss.length > 0) {
+                    $scope.jsonSdAddress = $scope.addresss[0];
+                    $scope.jsonSdAddress.area = $scope.jsonSdAddress.area.replace(/,/g,' ');
+                }
+            }, function(res) {
+                toaster.pop('error', '错误', res.data);
+            });
+        };
+
+        loadAddrs();
+
+        // 获取物流公司信息
+        $scope.initData = function () {
+            Goods.findAllSelected({},function (data) {
+                if (data){
+                    $scope.data_list = data;
+                }
+                angular.forEach($scope.data_list, function (data) {
+                    data.isOpen = false;
+                })
+            })
+        };
+        $scope.initData();
+
+        $scope.findAllKdnList = function () {
+            KdnLogistics.getCompanyName({}, function (data) {
+                if (data){
+                    $scope.allKdnList = data;
+                }
+                angular.forEach($scope.allKdnList, function (data) {
+                    data.isChoosed = false;
+                });
+            }, function (error) {
+
+            })
+        };
+        $scope.findAllKdnList();
+
+        $scope.logistics = {};
+        $scope.showText = function (data) {
+            $scope.logistics.companyName = data.companyName;
+            $scope.companyObject = data;
+            $scope.showCompanyName = false;
+        };
+
+        //显示默认的选项
+        $scope.showDefaultText = function () {
+            $scope.logistics.companyName = '请选择物流公司';
+            $scope.companyObject = {};
+        };
+
+        // 物流管理公司选择功能部分
+        var initIndex = function () {
+            $scope.selectIndex = -1;
+            $scope.downIndex = 0;
+        };
+
+        // 表单获取焦点,显示下拉框
+        $scope.getItemFocus = function() {
+            $scope.showCompanyName = true;
+            initIndex();
+        };
+
+        //表单失去焦点
+        $scope.onItemBlur = function() {
+            if($scope.time) {
+                clearTimeout($scope.time);
+            }
+            $scope.time = setTimeout(function() {
+                $scope.$apply(function() {
+                    $scope.showCompanyName = false;
+                })
+            }, 200)
+        };
+
+        // 按键操作功能
+        $scope.onKeyup = function() {
+            var dom = document.getElementById("ulContent");
+            if($scope.showCompanyName){
+                if(event.keyCode === 40){
+                    $scope.selectIndex++;
+                    if($scope.downIndex === 5){
+                        dom.scrollTop += 23;
+                    } else if($scope.downIndex <=4){
+                        $scope.selectIndex++;
+                    } else if($scope.selectIndex >= $scope.data_list.length){
+                        $scope.selectIndex = 0;
+                        $scope.downIndex =1;
+                        dom.scrollTop = 0;
+                    }
+                    $scope.logistics.companyName = $scope.data_list[$scope.selectIndex].companyName;
+                } else if(event.keyCode === 38) {
+                    $scope.selectIndex --;
+                    if ($scope.downIndex === 1){
+                        dom.scrollTop -= 22.67;
+                    }
+                    if ($scope.downIndex >= 2){
+                        $scope.downIndex--;
+                    }
+                    if($scope.selectIndex < 0){
+                        $scope.selectIndex = $scope.data_list.length - 1;
+                        dom.scrollTop = 2400;
+                        $scope.downIndex = 5;
+                    }
+                    $scope.logistics.companyName = $scope.data_list[$scope.selectIndex].companyName;
+                } else if(event.keyCode === 13){
+                    $scope.showCompanyName = false;
+                }
+            }
+        };
+        $scope.addDistributor = function () {
+            $modal.open({
+                templateUrl : $rootScope.rootPath + '/static/view/vendor/modal/vendor_distributor_manage.html',
+                controller : 'vendorDistributorModalCtrl',
+                size : 'lg',
+                resolve : {
+                    allKdnList : function () {
+                        return $scope.allKdnList;
+                    },
+                    selectedList : function () {
+                        return $scope.data_list;
+                    }
+                }
+            }).result.then(function(data){
+                if (data) {
+                    $scope.initData();
+                }
+            }, function(){
+                // toaster.pop('info', '提示 ' + '您已取消配送商的编辑');
+            });
+        };
+
+        //数量进行验证
+        $scope.onAmountChange = function (item, val, type, key, deg) {
+            if (deg) {
+                if (angular.isNumber(Number(val))) {
+                    if (val >= 10000) {
+                        item[type] = Number(val.toString().substring(0, key));
+                    } else if (val.toString().indexOf('.') > -1) {
+                        var arr = val.toString().split(".");
+                        if (arr[0].length > key) {
+                            item[type] = Number(arr[0].substring(0, key) + '.' + arr[1]);
+                        } else if (arr[1].length > deg) {
+                            item[type] = Number(arr[0] + '.' + arr[1].substring(0, deg));
+                        }
+                    }
+                } else {
+                    item[type] = ''
+                }
+            } else {
+                if (!(/^[0-9]*$/).test(val)) {
+                    var chineseIndex = -1;
+                    for (var i = 0; i < val.length; i++) {
+                        if (!(/^[0-9]*$/).test(val.charAt(i))) {
+                            chineseIndex = i;
+                            break;
+                        }
+                    }
+                    item[type] = cutOutString(val, chineseIndex);
+                } else if (val.length > key) {
+                    item[type] = cutOutString(val, key);
+                }
+            }
+        };
+
+        $scope.checkAmount = function (item, val, type) {
+            $scope.validObj.amount = $scope.applyObj.amount === '' ? true
+                : $scope.applyObj.amount > 0 && $scope.applyObj.amount
+                < 1000000000;
+            return $scope.validObj.amount;
+        }
+
+        $scope.outBlurSendCount = function(details, val) {
+            var newShipQty = details.shipQty ? details.shipQty : 0
+            if (val > details.number - newShipQty) {
+                toaster.pop('warning', '提示', '本次发货数量不能大于已剩数量')
+                val = details.number - newShipQty
+            }
+            details.sendCount = val
+        };
+
+        var inSaveOtherCheck = function(type) {
+            Goods.getByEnterpriseId({invoiceId: type.invoiceid}, null, function(data) {
+                if(data.code === 1) {
+                    toaster.pop("success", "信息保存成功");
+                    getLoadStorageData();
+                }
+            }, function(response) {
+                toaster.pop('error', '错误', response.data);
+            })
+        };
+
+        var outSaveOtherCheck = function (data) {
+            if(!$scope.jsonSdAddress || angular.equals({}, $scope.jsonSdAddress)) {
+                toaster.pop("info", "提示", "发货地址不能为空,请前往物流管理新增发货地址");
+                return ;
+            }
+            var sendInfo = {};
+            sendInfo.sendType = data.sendType;
+            if ($scope.logistics.companyName && $scope.logistics.number){
+                sendInfo.logisticsInfo = {};
+                sendInfo.logisticsInfo.companyName = $scope.logistics.companyName;
+                sendInfo.logisticsInfo.number = $scope.logistics.number;
+            }
+            var HasCount = false
+            var _obj = []
+            for (var i = 0; i < data.purchaseDetails.length; i++) {
+                if (Math.abs(data.purchaseDetails[i].sendCount) > 0) {
+                    HasCount = true
+                    var _id = data.purchaseDetails[i].id
+                    _obj.push({
+                        id: _id,
+                        qty: Number(data.purchaseDetails[i].sendCount)
+                    })
+                }
+            }
+            if (!HasCount) {
+                toaster.pop("info", "提示", "最少填写一个发货数量");
+                return ;
+            }
+            sendInfo.map = _obj
+            sendInfo.jsonSdAddress = angular.toJson($scope.jsonSdAddress);
+            InvoiceFPurchase.saveInvoiceFPurchase({id : data.id}, sendInfo, function(res) {
+
+                // TODO 这边要停5秒钟之后,在跳转到出货单管理界面
+                /*var fromPage = window.sessionStorage.getItem("orderAdmin");
+                 if(fromPage == "invoiceProofing") {
+                 $state.go('invoiceProofing');
+                 }else {
+                 $state.go('invoice');
+                 }*/
+                // TODO huxz 跳转到订单管理页面
+                if (res.success) {
+                    toaster.pop("success", "信息", "发货成功");
+                    getLoadStorageData();
+                } else {
+                    toaster.pop("error", res.message);
+                }
+            }, function(response) {
+                toaster.pop('error', '错误', response.data);
+            });
+        };
+
+        // 采购入库与销售出库确认发货
+        $scope.saveOtherCheck = function (data, tab) {
+            if (tab === 'inBound') {
+                inSaveOtherCheck(data);
+            } else {
+                outSaveOtherCheck(data);
+            }
+        };
+
+        //获取登录的信息
+        var getAuthentication = function () {
+            return AuthenticationService.getAuthentication().success(function(data) {
+                if(data && data.enterprises) {
+                    data.enterprise = data.enterprises[data.enterprises.length - 1];
+                    if(data.enterprises.length > 1) {
+                        var enSelect = [];
+                        angular.forEach(data.enterprises, function(e){
+                            if(e.current)
+                                data.enterprise = e;
+                            else
+                                enSelect.push(e);
+                        });
+                        data.enSelect = enSelect;
+                    }
+                }
+                $rootScope.userInfo = data;
+            }).error(function(response) {
+                toaster.pop('info', '获取定单的信息' + response);
+            });
+        };
+    }]);
+
+    // 设置物流公司
+    app.register.controller('vendorDistributorModalCtrl', ['$scope','$rootScope','$modal','toaster','KdnLogistics','Distributor','BaseService','ngTableParams','$modalInstance','$q','selectedList','allKdnList', function ($scope, $rootScope, $modal, toaster, KdnLogistics, Distributor, BaseService, ngTableParams, $modalInstance, $q, selectedList, allKdnList) {
+        //获取快递鸟信息
+        $scope.$$kdnData = {};
+        $scope.selectedList = selectedList;
+        $scope.allKdnList = allKdnList;
+        $scope.chooseList = [];
+        $scope.selectFlag = [];
+
+        $scope.initArrayData = function () {
+            angular.forEach(allKdnList, function (data) {
+                $scope.selectFlag[data.code] = {};
+                $scope.selectFlag[data.code].isChoosed = false;
+            });
+            angular.forEach(selectedList, function (data, index) {
+                $scope.chooseList[index] = {};
+                if (data.code){
+                    $scope.chooseList[index].code = data.code;
+                    $scope.selectFlag[data.code].isChoosed = true;
+                }
+                $scope.chooseList[index].companyName = data.companyName;
+            });
+        };
+        $scope.initArrayData();
+
+        $scope.distributorTableParams = new ngTableParams({
+            page : 1,
+            count : 30
+        },{
+            total : 0,
+            getData : function ($defer, params) {
+                var param = BaseService.parseParams(params.url());
+                KdnLogistics.findKdnPage(param, function (page) {
+                    $scope.$$kdnData.totalElements = page.totalElements;
+                    if(Number(page.totalElements) > 0) {
+                        $scope.$$kdnData.start = Number(page.size) * (Number(page.number) - 1) + 1;
+                    }else {
+                        $scope.$$kdnData.start = 0;
+                    }
+                    $scope.$$kdnData.end = Number(page.size) * (Number(page.number) - 1) + Number(page.numberOfElements);
+                    $scope.pageList = page.content;
+                    params.total(page.totalElements);
+                    $defer.resolve(page.content);
+                    //划分数据
+                    var row = Math.ceil(page.numberOfElements/6.0);
+                    $scope.showList = [];
+                    var count = 0;
+                    for (var i = 0; i<row; i++){
+                        $scope.showList[i] = [];
+                        for (var j = 0; j<6; j++){
+                            // var code = $scope.pageList[count].code;
+                            // $scope.pageList[count].isChoosed = $scope.selectFlag[code].isChoosed;
+                            $scope.showList[i].push($scope.pageList[count]);
+                            count++;
+                            if (count == page.numberOfElements){
+                                return;
+                            }
+                        }
+                    }
+                }, function () {
+                    toaster.pop('error', '获取快递鸟信息失败');
+                });
+            }
+        });
+
+        var countLength = function (string) {
+            return string.replace(/[^x00-xFF]/g,'**').length;
+        };
+
+        $scope.inputContent = function () {
+            for (var i=0; i<$scope.keyword.length;i++){
+                if (countLength($scope.keyword.substr(0, i)) >= 26){
+                    $scope.keyword = $scope.keyword.substr(0, i);
+                    break;
+                }
+            }
+            var addrPatt = new RegExp("^[A-Za-z0-9\u4e00-\u9fa5]+$");
+            if (!addrPatt.test($scope.keyword) && $scope.keyword.length > 0){
+                $scope.companyError = true;
+            }else {
+                $scope.companyError = false;
+            }
+            initIndex();
+            $scope.showDownFrame = true;
+            matchArray();
+            $scope.containsAttr($scope.keyword);
+        };
+
+        var initIndex = function () {
+            $scope.selectIndex = -1;
+            $scope.downIndex = 0;
+        };
+
+        $scope.getFocus = function() {
+            initIndex();
+        };
+
+        /**
+         * 根据输入内容获取匹配数据的长度
+         */
+        var matchArray = function () {
+            $scope.resultList = $scope.allKdnList.filter(function (data) {
+                if (data.companyName.indexOf($scope.keyword) >= 0){
+                    return data;
+                }
+            });
+            if ($scope.resultList.length > 0){
+                $scope.matchData = true;
+            }else{
+                $scope.matchData = false;
+            }
+        };
+
+        $scope.onBlur = function () {
+            setTimeout(function () {
+                $scope.showDownFrame = false;
+            }, 120);
+        };
+
+        $scope.onKeyDown = function () {
+            var dom = document.getElementById("ulContent");
+            if ($scope.showDownFrame && $scope.matchData){
+                if(event.keyCode == 40) { //监听到按下键
+                    $scope.selectIndex ++;
+                    if ($scope.downIndex == 5){
+                        dom.scrollTop += 23;
+                    }
+                    if ($scope.downIndex <= 4){
+                        $scope.downIndex++;
+                    }
+                    if($scope.selectIndex >= $scope.resultList.length){
+                        $scope.selectIndex = 0;
+                        dom.scrollTop = 0;
+                        $scope.downIndex = 1;
+                    }
+                    $scope.inputObject = $scope.resultList[$scope.selectIndex];
+                    $scope.keyword = $scope.inputObject.companyName;
+                    $scope.containsAttr($scope.keyword);
+                } else if(event.keyCode == 38) { //监听到按上键
+                    $scope.selectIndex --;
+                    if ($scope.downIndex == 1){
+                        dom.scrollTop -= 22.67 ;
+                    }
+                    if ($scope.downIndex >= 2){
+                        $scope.downIndex--;
+                    }
+                    if($scope.selectIndex < 0){
+                        $scope.selectIndex = $scope.resultList.length - 1;
+                        dom.scrollTop = 2400;
+                        $scope.downIndex = 5;
+                    }
+                    $scope.inputObject = $scope.resultList[$scope.selectIndex];
+                    $scope.keyword = $scope.inputObject.companyName;
+                    $scope.containsAttr($scope.keyword);
+                } else if(event.keyCode == 13) { //确定键
+                    $scope.showDownFrame = false;
+                }
+            }
+        };
+
+        $scope.clickItem = function (data) {
+            // $scope.inputObject = data;
+            $scope.keyword = data.companyName;
+            $scope.containsAttr($scope.keyword);
+            $scope.showDownFrame = false;
+        };
+
+        /**
+         * 判断快递鸟是否包含输入的快递
+         * @param value
+         */
+        $scope.containsAttr = function (value) {
+            var key = 1;
+            if (value){
+                angular.forEach($scope.allKdnList, function (data) {
+                    if (data.companyName == value){
+                        key = 0;
+                        return;
+                    }
+                });
+                if (key == 1){
+                    $scope.containsItem = false;
+                }else {
+                    $scope.containsItem = true;
+                }
+            }
+        };
+
+        $scope.addItemInSelected = function () {
+            if ($scope.containsItem){
+                angular.forEach($scope.allKdnList, function (data) {
+                    if (data.companyName == $scope.keyword){
+                        if ($scope.selectFlag[data.code].isChoosed){
+                            var indexItem = null;
+                            if ($scope.chooseList){
+                                angular.forEach($scope.chooseList, function (item, index) {
+                                    if (item.code == data.code){
+                                        indexItem = index;
+                                    }
+                                });
+                            }
+                            $scope.chooseList.splice(indexItem, 1);
+                            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+                        }
+                        $scope.ChooseDistributor(data);
+                    }
+                });
+            }else {
+                var indexItem = null;
+                angular.forEach($scope.chooseList, function (item, index) {
+                    if (item.companyName == $scope.keyword){
+                        indexItem = index;
+                    }
+                });
+                if (indexItem){
+                    $scope.chooseList.splice(indexItem, 1);
+                }
+                var item = {};
+                item.companyName = $scope.keyword;
+                $scope.chooseList.push(item);
+            }
+            $scope.keyword = "";
+        };
+
+        $scope.removeDistributor = function (data, index) {
+            $scope.chooseList.splice(index, 1);
+            if (data.code){
+                $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+            }
+        };
+
+        $scope.ChooseDistributor = function (data) {
+            if ($scope.selectFlag[data.code].isChoosed){
+                if ($scope.chooseList){
+                    angular.forEach($scope.chooseList, function (item, index) {
+                        if (item.code == data.code){
+                            $scope.index = index;
+                        }
+                    });
+                }
+                $scope.chooseList.splice($scope.index, 1);
+            }else {
+                $scope.chooseList.push(data);
+            }
+            $scope.selectFlag[data.code].isChoosed = !$scope.selectFlag[data.code].isChoosed;
+        };
+
+        $scope.saveChooseList = function () {
+            Distributor.saveDistributor({}, $scope.chooseList ,function (data) {
+                if(data){
+                    toaster.pop('success', '成功', '保存配送商成功');
+                }
+                $modalInstance.close(data);
+            },function (error) {
+                toaster.pop('error', '成功', '保存配送商失败 '+ error);
+            });
+        };
+
+        $scope.cancel = function() {
+            $modalInstance.dismiss();
+        };
+    }]);
+    // 上传批次图片
+    app.register.controller('editPictureCtrl', ['$scope', 'pic', '$modalInstance', function ($scope, pic, $modalInstance) {
+        $scope.pic = pic;
+        $scope.cancel = function () {
+            $modalInstance.close();
+        };
+
+        // 图片上传成功之后
+        $scope.onUploadSuccess = function(data){
+            $scope.pic = data.path;
+        };
+
+        $scope.confirm = function() {
+            $modalInstance.close($scope.pic);
+        }
+    }]);
+
+});

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

@@ -798,12 +798,6 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
       templateUrl: 'static/view/vendor/b2b/sale/sale_badOut.html',
       controller: 'SaleBadOutCtrl',
       controllerUrl: 'app/controllers/b2b/sale/sale_badOut'
-    })).state('sale_badIn', angularAMD.route({
-      url: '/badIn',
-      title: 'b2b客户出入库-不良品入库单',
-      templateUrl: 'static/view/vendor/b2b/sale/sale_badIn.html',
-      controller: 'SaleBadInCtrl',
-      controllerUrl: 'app/controllers/b2b/sale/sale_badIn'
     })).state('sale_accept', angularAMD.route({
       url: '/accept',
       title: 'b2b客户出入库-客户采购验收单',

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

@@ -7,7 +7,7 @@ define([ 'app/app' ], function(app) {
         $scope.tab = 'storage';
         $scope.isInt = /^[0-9]*[1-9][0-9]*$/;
         document.title = '卖家出入库-优软商城';
-        $scope.storage_tab = $stateParams.storage_tab ? $stateParams.storage_tab : 'outBound';
+        $scope.storage_tab = 'outBound';
         $scope.countData = 10;
         $scope.userInfo = $rootScope.userInfo || {};
 
@@ -20,7 +20,7 @@ define([ 'app/app' ], function(app) {
             {name: '查看出库记录', tab: 'outBound', id: 0},
             {name: '销售出库', tab: 'outBound', id: 2},
             {name: '其它出库', tab: 'outBound', id: 1}];
-        $scope.handleItem = $stateParams.storage_tab ? 1 : ($scope.storage_tab === 'inBound'? $scope.handleLink[0].id : $scope.handleLink[3].id);
+        $scope.handleItem = $stateParams.type;
 
         // 销售方式数据
         $scope.boundType = {

+ 40 - 43
src/main/webapp/resources/view/vendor/b2b/sale/sale_badIn.html → src/main/webapp/resources/view/usercenter/b2b/sale_badIn.html

@@ -291,11 +291,8 @@
   <div class="pro_management device">
     <div class="com_tab">
       <ul class="fl">
-        <li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>
-        <li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>
-        <li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>
-        <li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>
+        <li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+        <li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
         <li class="down-purchase">
           <span ng-click="exportXls()" style="cursor:pointer">
               <i class="fa fa-file-excel-o fa-fw"></i>导出Excel
@@ -307,72 +304,72 @@
       </ul>
     </div>
   </div>
-  <div class="com_tab tab_top">
-    <ul class="fl">
-      <li ng-class="{'active': storeType=='badOut'}"><a ui-sref="sale_badOut">不良品出库单</a></li>
-      <li ng-class="{'active': storeType=='badIn'}"><a ui-sref="sale_badIn">不良品入库单</a></li>
-      <li ng-class="{'active': storeType=='accept'}"><a ui-sref="sale_accept">客户采购验收单</a></li>
-      <li ng-class="{'active': storeType=='returns'}"><a ui-sref="sale_returns">客户采购验退单</a></li>
-      <li ng-class="{'active': storeType=='makeaccept'}"><a ui-sref="sale_makeaccept">客户委外验收单</a></li>
-      <li ng-class="{'active': storeType=='makereturns'}"><a ui-sref="sale_makereturns">客户委外验退单</a></li>
-    </ul>
-  </div>
-  <div class="screen check-filter">
-    <div class="radio-block date-radio">
-      时间筛选:
+  <div class="search-check">
+    <div class="radio-block">
+      业务:
+      <ul class="radio-btn list-inline">
+        <li ng-click="toggleType(0)">查看入库记录</li>
+        <li ng-click="toggleType(2)">采购入库</li>
+        <li class="active" ui-sref="sale_badIn">不良品入库单</li>
+        <li ng-click="toggleType(1)">其它入库</li>
+        <!--<li ng-repeat="item in handleLink"-->
+        <!--ng-bind="item.name"-->
+        <!--ng-class="{'active': handleItem === item.id}"-->
+        <!--ng-if="item.tab === storage_tab"-->
+        <!--ng-click="toggleType(item.id)"></li>-->
+      </ul>
+    </div>
+    <div class="radio-block" ng-if="handleItem !== 1" style="margin-top: 20px">
+      筛选:
       <label class="com-check-radio">
-        <input type="radio" id="oneMonth" name="date" ng-click="autoMonth = false;changeDateZone(1);condition.$open=false" checked>
+        <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="autoMonth = false;changeDateZone(3);condition.$open=false">
+        <input type="radio" id="threeMonth" name="date" ng-click="setFilters('dateArea', 'threeMonth')" ng-checked="dateArea == 'threeMonth'">
         <label for="threeMonth"></label>
-        90天
+        60天
       </label>
       <label class="com-check-radio">
-        <input type="radio" id="sixMonth" name="date" ng-click="autoMonth = false;changeDateZone(6);condition.$open=false">
+        <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="autoMonth" name="date" ng-click="autoMonth = true;condition.$open=!condition.$open;changeDateZone(-1)">
+        <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="autoMonth" class="date fl">
+      <div class="radio-date" ng-show="dateArea === 'autoMonth'">
         <div class="data-input">
-          <input type="text" ng-model="condition.dateFrom"
+          <input id="start" type="text" ng-model="startDate" readonly="readonly"
                  class="form-control select-adder" placeholder="起始时间"
                  datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$fromOpened"
-                 max-date="condition.dateTo" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$fromOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$fromOpened')"
+                 is-open="condition[0].open"
+                 current-text="今天" clear-text="清除" close-text="关闭"
                  datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$fromOpened')"></button>
+                 ng-click="openDatePicker($event, condition, 0,1)"
+                 ng-change="onDateCondition(1, startDate, endDate)"/>
+          <button class="open" ng-click="openDatePicker($event, condition, 0)"></button>
         </div>
 
         <em>–</em>
         <div class="data-input">
-          <input type="text" ng-model="condition.dateTo"
+          <input id="end" type="text" ng-model="endDate" readonly="readonly"
                  class="form-control select-adder" placeholder="结束时间"
                  datepicker-popup="yyyy-MM-dd"
-                 is-open="condition.$toOpened"
-                 min-date="condition.dateFrom" current-text="今天" clear-text="清除" close-text="关闭"
-                 ng-click="openFilterDatePicker($event, condition, '$toOpened')"
-                 ng-focus="openFilterDatePicker($event, condition, '$toOpened')"
+                 is-open="condition[1].open"
+                 current-text="今天" clear-text="清除" close-text="关闭"
                  datepicker-options="{formatDayTitle: 'yyyy年M月', formatMonth: 'M月', showWeeks: false}"
-          />
-          <button class="open" ng-click="openFilterDatePicker($event, condition, '$toOpened')"></button>
+                 ng-click="openDatePicker($event, condition, 1, 2)"
+                 ng-change="onDateCondition(2, startDate, endDate)"/>
+          <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
         </div>
       </div>
-      <div class="sreach-input fr">
-        <input type="search" placeholder="单据编号/客户名称/物料名称" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)"/>
-        <a class="seek" href="javascript:void(0)" ng-click="onSearch(keyword)">搜索</a>
+      <div class="search fr check" ng-if="handleItem !== 1">
+        <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="{{storage_tab =='outBound' ? ( handleItem === 0 ? '出库单号/买家名称':'订单号/买家名称') : ( handleItem === 0 ? '入库单号/卖家名称':'发货单/卖家名称')}}"/>
+        <button ng-click="onSearch(keyword)" style="float: left;">搜索</button>
       </div>
     </div>
   </div>

+ 2 - 2
src/main/webapp/resources/view/usercenter/forstore/buyer_material.html

@@ -1058,8 +1058,8 @@
 	<div class="pro_management device">
 		<div class="com_tab">
 			<ul class="fl" style="width: 100%">
-				<li ng-class="{'active': tab == 'material'}"><a ui-sref="vendor_material">产品库</a></li>
-				<!--<li ng-class="{'active': tab == 'storage'}"><a ui-sref="vendor_storage">出入库</a></li>-->
+				<li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+				<li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
 				<!--<li ng-class="{'active': tab == 'undercarriage'}"><a ui-sref="vendor_undercarriage">上下架记录</a></li>-->
 				<!--<li ng-if="isPcbStore"><a ui-sref="vendor_upload">产品导入</a></li>-->
 				<!--<li ng-class="{'active': tab == 'B2b'}"><a ui-sref="sale_badOut">B2B客户出入库</a></li>-->

+ 1645 - 0
src/main/webapp/resources/view/usercenter/forstore/buyer_storage.html

@@ -0,0 +1,1645 @@
+<!--右侧主体部分-->
+<style>
+    *{-webkit-box-sizing: border-box;  -moz-box-sizing: border-box;  box-sizing: border-box;}
+    label[disabled] {
+        cursor: not-allowed;
+    }
+
+    ul.pagination.ng-table-pagination > li > a > span {
+        height: 17px;
+        line-height: 17px;
+    }
+
+    div.ng-table-pager  input.page-number {
+        vertical-align: inherit;
+        display: inline-block;
+        width: 40px;
+        height: 31px;
+        padding: 6px 6px;
+        font-size: 14px;
+        line-height: 1.42857143;
+        color: #9B9792;
+        text-align: center;
+        background-color: #F6F5F4;
+        background-image: none;
+        border: 1px solid #ccc;
+        border-top-left-radius: 4px;
+        border-bottom-left-radius: 4px;
+        box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
+        transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
+    }
+
+    div.ng-table-pager a.page-a {
+        color: #fff;
+        cursor: pointer;
+        background-color: #4574E8;
+        border-color: #4574E8;
+        padding: 6px 6px;
+        font-size: 14px;
+        border-top-right-radius: 4px;
+        border-bottom-right-radius: 4px;
+        text-decoration: none;
+        height: 31px;
+    }
+
+    div.ng-table-pager div.page-go-block {
+        float: right;
+        margin-left: 20px;
+        margin-top: 15px;
+        font-size: 0px;
+        height: 31px;
+        line-height: 31px;
+    }
+    .filter:hover .hover-show {
+        display: inline-block;
+        z-index: 1000;
+    }
+    .filter:hover .angle-hover-up {
+        -webkit-transform: rotateZ(180deg);
+        -moz-transform: rotateZ(180deg);
+        -o-transform: rotateZ(180deg);
+        -ms-transform: rotateZ(180deg);
+        transform: rotateZ(180deg);
+    }
+    .filter .hover-show{
+        width: 100%;
+        height: auto;
+        position: absolute;
+        background-color: #fff;
+        margin-top: -1px;
+        border: 1px solid #e8e8e8;
+        border-top: none;
+        display: none;
+        left: 0;
+        top: 100%;
+    }
+    .filter .hover-show a{
+        width: 100%;
+        height: 40px;
+        display: inline-block;
+        line-height: 40px;
+        text-align: center;
+        font-size: 14px;
+        font-weight: normal;
+    }
+    .filter .hover-show a:hover{
+        background: #ecf2fd;
+        color: #5078cb !important;
+    }
+    .wid02 .fr .hidden-ellipsis-110 {
+        width: 110px;
+        overflow: hidden;
+        word-break: normal;
+        white-space: nowrap;
+        text-overflow: ellipsis;
+    }
+    .com-out-box{
+        position: fixed;
+        z-index: 2;
+        height: 152px;
+        opacity: 1;
+        background-color: white;
+        width: 310px;
+        -webkit-box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        box-shadow: 0 5px 15px rgba(0,0,0,.5);
+        margin: -155px 0 0 -75px;
+        top: 55%;
+        left: 50%;
+    }
+    .com-out-box .title{
+        height: 30px;
+        background-color: #5078cb;
+        text-align: right;
+        padding-right: 15px;
+        line-height: 30px;
+    }
+    .com-out-box .title a{
+        color: white;
+        font-size: 16px;
+    }
+    .pay_record .ticket_record_list dl dd{
+        position: relative;
+    }
+    .com-out-box .content{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .com-out-box .content p{
+        line-height: 50px;
+        font-size: 14px;
+        padding-top: 10px;
+    }
+    .com-out-box .content p i{
+        color: #5078cb;
+        font-size: 16px;
+        margin-right: 10px;
+    }
+    .com-out-box .content div{
+        width: 100%;
+        text-align: center;
+        margin: 0 auto;
+    }
+    .com-out-box .content div.red {
+        position: relative;
+        top: -10px;
+    }
+    .com-out-box .content div a{
+        width: 55px;
+        height: 26px;
+        line-height: 26px;
+        display: inline-block;
+        text-align: center;
+        font-size: 14px;
+    }
+    .com-out-box .content div a:first-child{
+        background: #b4b5b9;
+        color: #333;
+        margin-right: 10px;
+    }
+    .com-out-box .content div a:last-child{
+        background: #5078cb;
+        color: #fff;
+    }
+    .com-out-box .content div a:hover{
+        background: #3f7ae3;
+        color: #fff;
+    }
+
+    .check-input{
+        position: relative;
+        padding-left: 15px;
+    }
+    .check-input .check-show{
+        position: absolute;
+        top: 21px;
+        height: 15px;
+        line-height: 15px;
+        left: 18px;
+    }
+    .check-input input{
+        display: none;
+    }
+    .check-input > span {
+        padding-left: 10px;
+    }
+    .check-input label {
+        width: 15px;
+        height: 15px;
+        display: inline-block;
+        background: url(static/img/user/images/check.png) no-repeat;
+        position: relative;
+        padding-left: 0 !important;
+        overflow: hidden;
+        margin-bottom: 0 !important;
+        vertical-align: sub;
+        min-height: 15px !important;
+        left: 0 !important;
+    }
+    .check-input input[type="checkbox"]:checked + label{
+        background-position: -15px 0;
+    }
+    .pro_management .product_off dd:last-of-type{
+        border-bottom: #cfcfcf 1px solid;
+    }
+    .record-line{
+        /*height: 30px;*/
+        font-size: 12px;
+        line-height: 35px;
+        /* margin-top: 5px; */
+        padding-right: 22px
+    }
+    .wanted_list .pagination{
+        margin: 0;
+    }
+
+    /*编辑*/
+    .vendor-tab .img{
+        width: 60px;
+        height: 60px;
+        border: #e8e8e8 1px solid;
+        overflow: hidden;
+        line-height: 60px;
+        margin-top: 0;
+        border-radius: 3px;
+    }
+    .vendor-tab .img img{
+        width: 60px;
+        height: 60px;
+    }
+    .vendor-tab .img a{
+        margin: 0 !important;
+    }
+    .public-tab.table>tbody>tr>td{
+        font-size: 14px !important;
+        text-align: left !important;
+        border-bottom: #d0e8fd 1px dashed !important ;
+    }
+    .vendor-tab.table td .wid135{
+        width: 143px;
+        margin-left: 7px;
+        position: relative;
+        top: -10px;
+    }
+    .filter a{
+        color: #333 !important;
+    }
+    .vendor-tab.table td .wid135 p{
+        display: block;
+        width: 100%;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+    .vendor-tab.table td .wid135 p em.href {
+        cursor: pointer;
+    }
+    .vendor-tab.table td p{
+        font-size: 14px;
+        text-align: left;
+    }
+    /*.vendor-tab.table>tbody>tr{*/
+    /*height: 252px;*/
+    /*}*/
+    .public-tab.table tbody.bottom-no tr td{
+        border-bottom: none!important ;
+    }
+    .edit-form .form-control{
+        height: 24px;
+        padding: 0;
+        text-align: center;
+        font-size: 12px;
+        border-radius: 3px;
+    }
+    .edit-form select.form-control{
+        padding-left: 10px;
+    }
+    .edit-form div{
+        text-align: left;
+    }
+    .wid88{
+        width: 88px;
+    }
+    .wid48{
+        width: 48px;
+    }
+    .wid85{
+        width: 75px;
+    }
+    .wid68{
+        width: 68px;
+    }
+    .wid40{
+        width: 40px;
+    }
+    .wid25{
+        width: 25px;
+        text-align: center !important;
+        padding-left: 0 !important;
+    }
+    .wid56{
+        width: 56px;
+    }
+    .wid90{
+        width: 90px;
+    }
+    .edit-form td div{
+        float: left;
+        height: 24px;
+        margin-top: 5px;
+        line-height: 24px;
+        width: 100%;
+    }
+    .edit-form td div.margin0{
+        margin-top: 0;
+    }
+    .edit-form td div.margin0 .width45{
+        width: 45px;
+    }
+    .edit-form td div span{
+        float: left;
+    }
+    .edit-form td div span:first-child{
+        margin-right: 2px;
+    }
+    .filter{
+        position: relative;
+    }
+    .edit-form button {
+        width: 56px;
+        height: 24px;
+        border: none;
+        color: #fff;
+        float: left;
+    }
+    .edit-form button.ok {
+        background: #33b401;
+    }
+    .edit-form button.off {
+        background: #f15601;
+        margin-bottom: 5px;
+    }
+    .edit-form button:hover{
+        background: #5078cb;
+    }
+    .public-tab.table>tbody>tr>td.padding0{
+        padding: 8px 0;
+    }
+    .public-tab.table tbody .padding0 div{
+        text-align: center;
+        width: 50px;
+    }
+    .public-tab.table tbody .padding0 div.edit-a{
+        margin-top: -4px;
+    }
+    .public-tab.table tbody .padding0 div.down-a{
+        margin-top: 0;
+    }
+    .public-tab.table tbody .padding0 div.marginL10{
+        margin-left: -10px;
+    }
+    .edit-form .reduce{
+        color: #faa002 !important;
+        margin: 0 !important;
+        margin-left: 2px !important;
+    }
+    .edit-form .add{
+        color: #2ea001 !important;
+        margin: 0 !important;
+    }
+    .public-tab.table tr td{
+        vertical-align: top !important;
+    }
+    .public-tab.table tr td.middle{
+        vertical-align: middle !important;
+        padding-left: 0;
+        position: relative;
+    }
+    .record-line{
+        min-height: 30px;
+        font-size: 12px;
+        line-height: 35px;
+    }
+    .text-center{
+        margin-top: 30px;
+    }
+    .text-center .col-xs-2 img{
+        margin-left: 95px;
+    }
+    .text-center .col-xs-4 p{
+        margin-top: 33px;
+        font-size: 14px;
+    }
+    /*查看大图*/
+    .vendor-tab .img{
+        position: relative;
+    }
+    .vendor-tab .img a{
+        width: 60px;
+        height: 60px;
+        display: inline-block;
+    }
+    .vendor-tab .img .hover-show,.vendor-tab .img .edit-img{
+        position: absolute;
+        width: 100%;
+        height: 100%;
+        background: rgba(0,0,0,.5);
+        left: 0;
+        top: 0;
+        font-size: 12px;
+        margin-top: 0;
+    }
+    .vendor-tab .img .hover-show{
+        top: 60px;
+    }
+    .vendor-tab .img:hover .hover-show{
+        top: 0;
+    }
+    .vendor-tab .img .hover-show a, .vendor-tab .img .edit-img a{
+        width: 100%;
+        height: 100%;
+        display: inline-block;
+        text-align: center;
+        line-height: 55px;
+        color: #fff !important;
+    }
+    .vendor-tab .img .hover-show i{
+        margin-right: 3px;
+    }
+    .vendor-tab .img .edit-img{
+
+    }
+    .vendor-tab .img .edit-img a img{
+        width: 38px;
+        height: 38px;
+    }
+    .vendor-tab .middle .prompt{
+        position: absolute;
+        bottom: 4px;
+        left: 0;
+        font-size: 10px;
+        /*color: #999;*/
+    }
+    .vendor-tab .middle .prompt em{
+        color: #ff0000;
+    }
+    .public-tab.table tr td.middle{
+        overflow: inherit;
+    }
+
+    .public-tab.table tr td.middle .img,.vendor-tab.table td .wid135{
+        margin-top: 15px;
+    }
+    .public-tab.table tr td.middle .img{
+        margin-top: 10px;
+    }
+    .public-tab.table tr td.middle div.marginL20{
+        margin-left: -20px;
+    }
+    .edit-form .error{
+        border: #f00 1px solid !important;
+    }
+
+    .edit-form .error:focus{
+        box-shadow: none;
+    }
+    .public-tab.table>tbody>tr>td div:last-child a.add[disabled], .public-tab.table>tbody>tr>td div:last-child a.reduce[disabled]{
+        color: #c7c7c7 !important;
+    }
+    .pro_management .table>tbody>tr>td div.img a.delete-img {
+        position: absolute;
+        top: 2px;
+        right: 0;
+        z-index: 20;
+        width: 20px;
+        height: 20px;
+        line-height: 16px;
+        border: none;
+    }
+    .pro_management .table>tbody>tr>td div.img a.delete-img i {
+        color: #fff;
+        font-size: 12px;
+    }
+    .public-tab.table tr td div span.switch{
+        width:39px;
+        height: 14px;
+        display: inline-block;
+    }
+    .public-tab.table tr td div span.switch button{
+        border: none;
+        position: relative;
+        top: 6px;
+        left: 5px;
+        width: 39px;
+        height: 14px;
+        background: url(static/img/icon/check-off.png) no-repeat center;
+    }
+    .public-tab.table tr td div span.switch button.active{
+        background: url("static/img/icon/check-ok.png") no-repeat center;
+    }
+
+    .text-overflow {
+        text-overflow: ellipsis;
+        overflow: hidden;
+        width: 100%;
+        white-space: nowrap;
+    }
+    .fa-minus-circle{
+        color: #faa002;
+    }
+
+    .edit-form td div span em.margin5{
+        margin-left: 5px;
+    }
+
+    .content-show .select-item{
+        width: 88px;
+        height: 24px;
+        border: 1px solid #a9a9a9;
+        font-size: 12px;
+        text-align: center;
+        border-radius: 3px;
+        padding-left: 6px;
+    }
+    .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th{
+        padding: 0 0 9px;
+    }
+    .edit-form td div span.marginL40{
+        margin-left: 45px;
+    }
+    .edit-form td div span.marginL27{
+        margin-left: 27px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        width: 92px;
+    }
+    .edit-form td div span.marginL10{
+        margin-left: 10px;
+    }
+    .edit-form td div span.marginL5{
+        margin-left: 5px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        width: 100%;
+    }
+    .filter i {
+        font-size: 16px;
+        font-weight: bold;
+    }
+    .filter:hover .fa-angle-up {
+        -webkit-transform: rotateZ(180deg);
+        -moz-transform: rotateZ(180deg);
+        -o-transform: rotateZ(180deg);
+        -ms-transform: rotateZ(180deg);
+        transform: rotateZ(180deg);
+        color: #5078cb !important;
+    }
+    .modal-open {
+        overflow-y: auto;
+        overflow-x: hidden;
+    }
+    .com_tab ul li{
+        margin-left: 0px;
+        position: relative;
+    }
+    .pro_management .com_tab ul li.active a{
+        border-bottom: #fff;
+        background: #5078cb;
+        color: #fff;
+    }
+    .pro_management .com_tab ul li::after{
+        background: url('static/img/vendor/images/downicon.png');
+        width: 11px;
+        height: 6px;
+        position: absolute;
+        bottom: 0px;
+        left: 50%;
+        content: ' ';
+        margin-left: -5px;
+        display: none;
+    }
+    .pro_management .com_tab ul li.active:after{
+        display: block
+    }
+
+    .pro_management .com_tab2 ul li.active a {
+        background: #fff;
+        color: #666
+    }
+    .pro_management .com_tab ul.distance li {
+        margin-left: 0px;
+        color: #fff
+    }
+    .pro_management .com_tab ul.distance li a{
+        padding: 0 5px;
+    }
+    /*限制非标和标准数量显示过多换行的问题*/
+    .com_tab2 ul.distance li {
+        min-width: 120px;
+        height: 40px;
+        line-height: 12px;
+        text-align: center;
+        color: #5078cb;
+        float: left;
+        margin-left: 25px;
+    }
+    .com_tab ul.distance li:first-child {
+        margin-right: 0px;
+    }
+    .com_tab ul li a {
+        min-width: 110px;
+        width: auto;
+    }
+    .com_tab ul.distance li a.standard{
+        min-width: 120px;
+        color: #666;
+        line-height: 40px;
+        border-top: 3px solid #fff
+    }
+    .com_tab ul.distance li a.standard em{
+        max-width: 45px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+        color: #666;
+    }
+    .com_tab ul.distance li:hover a.standard em.count{
+        color: #f15601;
+    }
+    .com_tab ul.distance li.active a.standard em.count,.com_tab ul.distance li.active a.standard{
+        color: #fff;
+    }
+    .com_tab2 ul.distance li.active a.standard em.count, .com_tab2 ul.distance li.active a.standard{
+        color: #f15601
+    }
+    .com_tab2 ul.distance li.active a.standard{
+        border-top: 3px solid #f15601;
+        border-left: 1px solid #f15601;
+        border-right: 1px solid #f15601;
+    }
+    .com_tab ul.distance li.active:hover a.standard{
+        color: #f15601;
+
+    }
+    .com_tab2 ul.distance li a.standard{
+        transition: 0s all;
+    }
+    .com_tab2 ul.distance{
+        /*border-top: 3px solid #f15601;*/
+        border-bottom: 1px solid #f15601;
+    }
+    .com_tab ul.distance li:hover a.standard{
+        /*padding-top: 15px;*/
+        /*width: 112px;*/
+        color: #f15601;
+    }
+
+    .import-product {
+        border-radius: 3px;
+        width: 330px;
+        height: 170px;
+        left: 44%;
+    }
+    .import-product .content > i {
+        font-size: 12px;
+        float: right;
+        margin: 5px 5px 0 0;
+        color: #ddd;
+        cursor: pointer;
+    }
+    .import-product .content p a {
+        color: #5078cb;
+    }
+    .import-product .upload-content {
+        position: relative;
+        left: -29px;
+        margin-bottom: 10px !important;
+    }
+    .import-product .upload-content #upload_text {
+        width: 157px;
+        height: 25px;
+        border: #ccc 1px solid;
+        padding-left: 10px;
+        line-height: 25px;
+        font-size: 14px;
+    }
+    .import-product .upload-content i {
+        background: #5078cb;
+        width: 62px;
+        height: 25px;
+        display: inline-block;
+        text-align: center;
+        color: #fff;
+        line-height: 25px;
+        font-size: 12px;
+        position: absolute;
+        left: 232px;
+        top: 0;
+        border-left: #ccc 1px solid;
+        cursor: pointer;
+    }
+    .import-product .upload-content #uploadCommodity {
+        width: 218px;
+        height: 25px;
+        filter: alpha(opacity=0);
+        -moz-opacity: 0;
+        opacity: 0;
+        position: absolute;
+        left: 77px;
+        top: 0px;
+    }
+    .import-product h5 {
+        margin-bottom: 25px;
+    }
+    .import-result .content p {
+        padding: 0;
+    }
+    .import-result .content p span {
+        color: #5078cb;
+    }
+    .import-result .content h5 {
+        font-size: 14px;
+        margin-bottom: 10px;
+        margin-top: -10px;
+    }
+    .import-result .content h5 span {
+        color: red;
+    }
+    .import-result .content div a {
+        color: #fff !important;
+        background: #5078cb !important;
+    }
+
+    .import-result .content div span {
+        color: #4290f7;
+        cursor: pointer;
+    }
+
+    .Regulpic img {
+        width: 24px;
+        height: 27px;
+    }
+    .edit-form td div.forAdminLook {
+        width: 70px;
+        height: 25px;
+        color: #333;
+        font-size: 14px;
+        border: 1px solid #5078cb;
+        border-radius: 3px;
+        text-align: center;
+        margin-top: 4px;
+    }
+    div.forAdminLook {
+        margin: 0 auto;
+        width: 70px;
+        height: 25px;
+        color: #333;
+        font-size: 14px;
+        border: 1px solid #5078cb;
+        border-radius: 3px;
+        text-align: center;
+        line-height: 25px;
+        margin-top: 4px;
+        position: absolute;
+        background: #fff;
+        display: none
+    }
+    .ToforAdminLook .nopass:hover ~.forAdminLook {
+        display: block;
+    }
+
+    /*search部分*/
+    .search-check{
+        padding: 15px 20px 5px;
+        height:auto;
+    }
+
+    .search-check .search .form-control{
+        width: 300px;
+        float: left;
+        height: 34px;
+        border-radius: 2px;
+        box-shadow: none;
+        border:1px solid #5078cb;
+    }
+
+    .search-check .search button{
+        background: #5078cb;
+        border: #5078cb 1px solid;
+        border-left: none;
+        color: #fff;
+        border-radius: 2px;
+    }
+
+    .search-check .radio-block {
+        line-height: 36px;
+        margin-bottom:10px;
+        font-size: 14px;
+    }
+    .search-check .radio-block .radio-btn{
+        display:inline-block;
+        position: relative;
+        top: 2px;
+    }
+    .search-check .radio-block .radio-btn li{
+        margin: 0 3px;
+        font-size: 14px;
+        line-height: 34px;
+        padding:0 10px;
+        height:34px;
+        border:1px solid #bfbfbf;
+        border-radius:3px;
+        cursor:pointer;
+    }
+    .search-check .radio-block .radio-btn li.active{
+        border:1px solid #5078cb;
+        color:#5078cb;
+    }
+    .search-check .radio-block .radio-date{
+        display:inline-block;
+        vertical-align: middle;
+    }
+    .search-check .radio-block .radio-date .btn-default{
+        border: none;
+    }
+    .search-check .radio-block .radio-date .data-input{
+        float:left;
+        position:relative;
+    }
+    .search-check .radio-block .radio-date .data-input input{
+        width:120px;
+    }
+    .search-check .radio-block .radio-date .data-input button.open {
+        position: absolute;
+        right: 2px;
+        top: 2px;
+        width: 20px;
+        height: 30px;
+        background: url(static/img/user/images/xiala.png) right no-repeat #fff !important;
+        background-position-x: 100% !important;
+        border: none;
+    }
+    .search-check .radio-block .radio-date > em{
+        float: left;
+        line-height: 32px;
+        color: #999;
+        margin: 0 5px;
+    }
+    .search-check .radio-block .com-check-radio {
+        font-weight: normal;
+        color: #666;
+        margin-right: 13px;
+        cursor:pointer;
+    }
+    .search-check .radio-block .com-check-radio label {
+        margin-bottom:6px;
+    }
+    .search-check .search{
+        width:400px;
+        margin:0;
+    }
+
+    .wanted_list .btn-click{
+        padding: 0 10px;
+        display: inline-block;
+        height: 28px;
+        line-height: 28px;
+        text-align: center;
+        font-size: 14px;
+        color: #666;
+        border:1px solid #bfbfbf;
+        margin: 0 10px;
+    }
+    .wanted_list .btn-click:hover{
+        color: #5078cb;
+        cursor: pointer;
+        border:1px solid #5078cb;
+    }
+    .wanted_list .btn-toggle{
+        text-align: center;
+        font-size: 14px;
+        color: #5078cb;
+        cursor: pointer;
+    }
+
+    .wanted_list .table_title span{
+        display:inline-block;
+        line-height: 46px;
+        height:46px;
+        text-align: center;
+        font-size: 14px;
+        color:#333;
+        font-weight: bold;
+        vertical-align: middle;
+    }
+    .wanted_list .table_title span input{
+        position: relative;
+        top: 5px;
+    }
+    .wanted_list .table_title span:nth-child(1){width:110px;}
+    .wanted_list .table_title span:nth-child(2){width:270px;}
+    .wanted_list .table_title span:nth-child(3){width:130px;}
+    .wanted_list .table_title span:nth-child(4){width:130px;}
+    .wanted_list .table_title span:nth-child(5){width:180px;}
+    .wanted_list .table_title span:nth-child(6){width:180px;}
+    .wanted_list .wanted-tab{
+        table-layout:fixed;
+        background: #fff;
+        font-size: 14px;
+        color:#333;
+    }
+    .wanted_list .wanted-tab caption{
+        font-size: 14px;
+        line-height: 50px;
+        height:50px;
+        background: #fff;
+        padding:0 0 0 15px;
+        color:#333;
+    }
+    .wanted_list .wanted-tab thead>tr>th{
+        padding:0;
+        margin:0;
+        border:0;
+        line-height: 46px;
+        height:46px;
+        text-align: center;
+        font-size: 14px;
+        border-bottom: 1px solid #e9e9e9;
+    }
+    .wanted_list .wanted-tab tbody>tr>td span{
+        vertical-align: middle;
+        width: 100%;
+        display: inline-block;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .wanted_list .wanted-tab tbody>tr>td{
+        padding:0 5px;
+        line-height: 50px;
+        height:50px;
+        vertical-align: middle;
+        text-align: center;
+        font-size: 14px;
+        border-bottom: 1px solid #e9e9e9;
+        white-space: nowrap;
+    }
+    .wanted_list .wanted-tab tbody>tr>td input{
+        width:90%;
+        margin: 0 auto;
+    }
+    .wanted_list .table>tbody+tbody {
+         border:none;
+    }
+    .wanted_list .wanted-tab tbody.toggle-mode{
+        border: 2px solid #5078cb;
+    }
+    .wanted_list .wanted-tab tbody.toggle-mode >tr:first-child{
+        background: #f5f5f5;
+    }
+    .down-form{
+        position:relative;
+    }
+    .down-form .down-key{
+        position:absolute;
+        top:100%;
+        left:5px;
+        z-index:100;
+        width:700px;
+        max-height:360px;
+        overflow-y:hidden;
+        border:1px solid #5078cb;
+        border-radius:5px;
+        background: #fff;
+        box-shadow: 0 0 5px rgba(0,0,0,.8);
+    }
+    .down-form .down-key ul{
+        margin-left:5px;
+    }
+    .down-form .down-key ul li{
+        line-height: 34px;
+        height:34px;
+        font-size: 14px;
+        color:#333;
+        text-align: left;
+        vertical-align:middle;
+    }
+    .down-form .down-key ul li:hover{
+        cursor:pointer;
+        background: #f5f5f5;
+    }
+    .down-form .down-key ul li span{
+        text-align: center;
+        display:inline-block;
+        padding: 0 10px;
+        vertical-align:middle;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .down-form .down-key ul li span:nth-child(1){width:20%;}
+    .down-form .down-key ul li span:nth-child(2){width:20%;}
+    .down-form .down-key ul li span:nth-child(3){width: 30%;}
+    .down-form .down-key ul li span:nth-child(4){width:25%;}
+    .wanted_list .wanted-sub-tab{
+        margin: 0 auto;
+        width: 98%;
+        table-layout: fixed;
+    }
+    .wanted_list .wanted-sub-tab caption span.caption_title{
+        float:right;
+        margin-right:20px;
+        width: auto;
+        text-overflow: unset;
+    }
+    .wanted_list .wanted-sub-tab thead tr th{
+        font-weight: normal;
+    }
+    .wanted_list .wanted-sub-tab tbody tr td span{
+        display:inline-block;
+        width:100%;
+        overflow: hidden;
+        white-space: nowrap;
+        text-overflow:ellipsis;
+        vertical-align: middle;
+    }
+
+    .down-word{
+        height:400px;
+        overflow: hidden;
+    }
+    .down-word ul{
+        position:absolute;
+        top:100%;
+        width:700px;
+        max-height:360px;
+        overflow-y:hidden;
+        border:1px solid #5078cb;
+        border-radius:5px;
+        background: #fff;
+        box-shadow: 0 0 5px rgba(0,0,0,.8);
+        margin-left:5px;
+    }
+    .down-word ul li{
+        line-height: 34px;
+        height:34px;
+        font-size: 14px;
+        color:#333;
+        text-align: left;
+        vertical-align:middle;
+    }
+    .down-word ul li span{
+        display:inline-block;
+        padding: 0 10px;
+        vertical-align:middle;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+    }
+    .down-word ul li span:nth-child(1){width:20%;}
+    .down-word ul li span:nth-child(2){width:20%;}
+    .down-word ul li span:nth-child(3){width: 30%;}
+    .down-word ul li span:nth-child(4){width:25%;}
+    .wanted_list .wanted-tab .logistics-info{
+        text-align: left;
+        padding-left:20px;
+    }
+    .wanted_list .wanted-tab .logistics-info > span{
+        text-align: left;
+        margin-right:10px;
+        width:auto;
+        text-overflow: unset;
+        display:inline-block;
+        overflow: visible;
+    }
+    .wanted_list .wanted-tab .logistics-info span.input-ul {
+        position:relative;
+        display:inline-block;
+        width: 170px;
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul input {
+        vertical-align: middle;
+        width: 170px;
+        height: 28px;
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul>div {
+        position: absolute;
+        top:99%;
+        left:0;
+        -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+        box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+    }
+
+    .wanted_list .wanted-tab .logistics-info span.input-ul>div>a {
+        width: 170px;
+        background: #e8e8e8;
+        color: #666 !important;
+        display: block;
+        padding: 0 10px;
+        line-height: 40px;
+    }
+    .wanted_list .wanted-tab .logistics-info .input-ul .dropdown-menu {
+        position: unset;
+        float: none;
+        line-height: 23px;
+        max-height: 120px;
+        overflow-y: auto;
+        width: 170px;
+        display: block;
+        overflow-x: hidden;
+        border-radius: 0;
+        box-shadow: none;
+        margin-top: 1px;
+        border: none;
+    }
+
+    .wanted_list .logistics-info .input-ul .dropdown-menu li {
+        font-size: 14px;
+        cursor: pointer;
+        padding-left: 13px;
+    }
+
+    .wanted_list .logistics-info .input-ul .dropdown-menu li:hover,
+    .wanted_list .logistics-info .input-ul .dropdown-menu li.active {
+        color: #fff;
+        background: #5078cb;
+    }
+    .input-ul ::-webkit-scrollbar {
+        padding-left: 0 !important;
+        background-color: #c1c1c1;
+        width: 8px;
+    }
+
+    .input-ul ::-webkit-scrollbar-thumb {
+        -webkit-border-radius: 5px !important;
+        border-radius: 5px !important;
+    }
+    .wanted_list em.red_color{
+        color:#f00;
+    }
+</style>
+<div class="user_right fr" ng-click="clearOtherData()">
+    <!--货品管理-->
+    <div class="pro_management device">
+        <div class="com_tab" style="margin-bottom: 10px">
+            <ul class="fl" style="width: 100%">
+                <li ng-class="{'active': tab == 'material'}"><a ui-sref="buyer_material">产品库</a></li>
+                <li ng-class="{'active': tab == 'storage'}"><a ui-sref="buyer_storage">入库</a></li>
+            </ul>
+        </div>
+        <div class="search-check">
+            <div class="radio-block">
+                业务:
+                <ul class="radio-btn list-inline">
+                    <li ng-class="{'active': handleItem === 0}" ng-click="toggleType(0)">查看入库记录</li>
+                    <li ng-class="{'active': handleItem === 2}" ng-click="toggleType(2)">采购入库</li>
+                    <li ui-sref="sale_badIn">不良品入库单</li>
+                    <li ng-class="{'active': handleItem === 1}" ng-click="toggleType(1)">其它入库</li>
+                    <!--<li ng-repeat="item in handleLink"-->
+                        <!--ng-bind="item.name"-->
+                        <!--ng-class="{'active': handleItem === item.id}"-->
+                        <!--ng-if="item.tab === storage_tab"-->
+                        <!--ng-click="toggleType(item.id)"></li>-->
+                </ul>
+            </div>
+            <div class="radio-block" ng-if="handleItem !== 1" style="margin-top: 20px">
+                筛选:
+                <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>
+                    60天
+                </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="autoMonth" name="date" ng-click="setFilters('dateArea', 'autoMonth')" ng-checked="dateArea == 'autoMonth'">
+                    <label for="autoMonth"></label>
+                    自定义
+                </label>
+                <div class="radio-date" ng-show="dateArea === 'autoMonth'">
+                    <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, endDate)"/>
+                        <button class="open" ng-click="openDatePicker($event, condition, 0)"></button>
+                    </div>
+
+                    <em>–</em>
+                    <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, startDate, endDate)"/>
+                        <button class="open" ng-click="openDatePicker($event, condition, 1)"></button>
+                    </div>
+                </div>
+                <div class="search fr check" ng-if="handleItem !== 1">
+                    <input type="text" class="form-control" ng-model="keyword" ng-search="onSearch(keyword)" placeholder="{{storage_tab =='outBound' ? ( handleItem === 0 ? '出库单号/买家名称':'订单号/买家名称') : ( handleItem === 0 ? '入库单号/卖家名称':'发货单/卖家名称')}}"/>
+                    <button ng-click="onSearch(keyword)" style="float: left;">搜索</button>
+                </div>
+            </div>
+
+        </div>
+        <!--<div class="com_tab com_tab2" style="margin-bottom: 10px">-->
+            <!--<ul class="fl distance" style="width: 100%">-->
+                <!--<li ng-class="{active : storage_tab == 'inBound'}"  ng-click="toggleStorage('inBound')" title="入库"><a href="" class="standard">入库</a></li>-->
+                <!--<li ng-class="{active : storage_tab =='outBound'}" ng-click="toggleStorage('outBound')" title="出库"><a href="" class="standard">出库</a></li>-->
+            <!--</ul>-->
+        <!--</div>-->
+        <div class="wanted_list">
+            <table class="wanted-tab table" ng-table="storageTableParams">
+                <thead>
+                <tr>
+                    <th width="120" ng-bind="storage_tab === 'inBound' ? '入库单号' : '出库单号'"></th>
+                    <th width="180" ng-bind="storage_tab === 'inBound' ? '发货单' : '订单号'" ng-if="handleItem === 2"></th>
+                    <th width="180" ng-bind="storage_tab === 'inBound' ? '卖家名称' : '买家名称'"></th>
+                    <th class="filter" width="110" ng-if="handleItem === 0">
+                        <a ng-bind="selfSupport">全部类型</a> <i class="fa fa-angle-down fa-angle-up"></i>
+                        <div class="hover-show" ng-if="storage_tab === 'inBound'">
+                            <a ng-click="changeSupportType('INBOUND')" ng-bind="boundType.INBOUND">全部类型</a>
+                            <a ng-click="changeSupportType('OTHER_INBOUND')" ng-bind="boundType.OTHER_INBOUND">其它入库</a>
+                            <a ng-click="changeSupportType('PURCHASE_INBOUND')" ng-bind="boundType.PURCHASE_INBOUND">入库</a>
+                        </div>
+                        <div class="hover-show" ng-if="storage_tab === 'outBound'">
+                            <a ng-click="changeSupportType('OUTBOUND')" ng-bind="boundType.OUTBOUND">全部类型</a>
+                            <a ng-click="changeSupportType('OTHER_OUTBOUND')" ng-bind="boundType.OTHER_OUTBOUND">其它出库</a>
+                            <a ng-click="changeSupportType('SELL_OUTBOUND')" ng-bind="boundType.SELL_OUTBOUND">销售出库</a>
+                        </div>
+                    </th>
+                    <th width="90" ng-if="handleItem !== 2">录入人</th>
+                    <th width="170">录入日期</th>
+                    <th width="170" class="padding0">操作</th>
+                </tr>
+                </thead>
+
+                <!--查看出入库记录-->
+                <tbody ng-if="handleItem === 0" ng-repeat="item in storageList" ng-class="{'toggle-mode': item.seleted}">
+                <tr>
+                    <td ng-bind="item.inOutId">系统自动生成</td>
+                    <td ng-bind="item.affiliatedEnterprise || '-'">深圳有陵县什么 翁一搂的</td>
+                    <td ng-bind="boundType[item.opertatorType]">腌肉入库</td>
+                    <td ng-bind="item.operaterUserName">张三</td>
+                    <td ng-bind="item.createTime | date : 'yyyy-MM-dd: HH:mm:ss'">2018-12-12</td>
+                    <td><span class="btn-toggle" ng-show="item.seleted" ng-click="item.seleted = !item.seleted">收起 <i class="fa fa-angle-up"></i></span><span ng-click="unfoldClick(storageList,item)" class="btn-toggle" ng-show="!item.seleted">展开 <i class="fa fa-angle-down"></i></span></td>
+                </tr>
+                <tr ng-if="item.seleted">
+                    <td colspan="6" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.associateOrderid || item.orid || '-'"></span></span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-show="item.seleted">
+                    <td colspan="6">
+                        <div class="sub-table-head">
+                            <table class="wanted-sub-tab table">
+                                <caption ng-if="item.associateOrderid">
+                                    明细列表:
+                                </caption>
+                                <thead>
+                                <tr>
+                                    <th width="60">序号</th>
+                                    <th width="110">型号</th>
+                                    <th width="130">品牌</th>
+                                    <th>物料名称</th>
+                                    <th width="210">规格</th>
+                                    <th width="130">{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                    <th width="130">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                        <div style="max-height:300px;overflow-y: auto;">
+                            <table class="wanted-sub-tab table">
+                                <tr ng-repeat="(index, list) in item.inOutboundDetails">
+                                    <td width="60" ng-bind="index + 1"></td>
+                                    <td width="110"><span ng-bind="list.cmpCode" title="{{list.cmpCode}}"></span></td>
+                                    <td width="130"><span ng-bind="list.brandEn" title="{{list.brandEn}}"></span></td>
+                                    <td><span ng-bind="list.kindName" title="{{list.kindName}}"></span></td>
+                                    <td width="210"><span ng-bind="list.spec" title="{{list.spec}}"></span></td>
+                                    <td width="130"><span ng-bind="list.qty" title="{{list.qty}}"></span></td>
+                                    <td width="130"><span ng-bind="list.price || '-'" title="{{list.price || '-'}}"></span></td>
+                                </tr>
+                            </table>
+                        </div>
+                    </td>
+                </tr>
+                </tbody>
+
+                <!--其它出入库-->
+                <tbody ng-if="handleItem === 1">
+                <tr style="background:#f5f5f5;">
+                    <td>系统自动生成</td>
+                    <td><input type="text" class="form-control" ng-model="othenParam.enName"></td>
+                    <td ng-bind="userInfo.userName">张三</td>
+                    <td ng-bind="newDate">2018-12-12</td>
+                    <td><a class="btn-click" ng-click="otherAddClick()">确认</a><a class="btn-click" ng-click="otherAddClick('clear')">取消</a></td>
+                </tr>
+                <tr>
+                    <td colspan="5">
+                        <table class="wanted-sub-tab table">
+                            <caption>
+                                明细列表:
+                            </caption>
+                            <thead>
+                            <tr>
+                                <th width="60">序号</th>
+                                <th width="110"><em class="red_color">*</em>型号</th>
+                                <th width="130">品牌</th>
+                                <th>物料名称</th>
+                                <th width="180">规格</th>
+                                <th width="130">库存数(PCS)</th>
+                                <th width="130"><em class="red_color">*</em>{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                <th width="130">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            <tr ng-repeat="(index, item) in otherData">
+                                <td ng-bind="index + 1"></td>
+                                <td>
+                                    <span ng-if="!item.newId" ng-bind="item.pcmpcode || '-'" title="{{item.pcmpcode}}"></span>
+                                    <div class="down-form" ng-if="item.newId">
+                                        <input type="text" class="form-control" ng-model="item.key" ng-change="onChange(item, index)">
+                                        <div ng-show="item.show" class="down-key" ng-mouseenter="item.show = true">
+                                            <ul class="list-unstyled">
+                                                <li ng-repeat="list in listData" ng-click="addProductId(list, item)">
+                                                    <span ng-bind="list.pcmpcode" title="{{list.pcmpcode}}">-01k</span>
+                                                    <span ng-bind="list.pbranden || '-'" title="{{list.pbranden}}"></span>
+                                                    <span ng-bind="list.kind || '-'" title="{{list.kind}}"></span>
+                                                    <span ng-bind="list.spec || '-'" title="{{list.spec}}"></span>
+                                                </li>
+                                            </ul>
+                                        </div>
+                                    </div>
+                                </td>
+                                <td><span ng-bind="item.pbranden || '-'" title="{{item.pbranden}}"></span></td>
+                                <td><span ng-bind="item.kind || '-'" title="{{item.kind}}"></span></td>
+                                <td><span ng-bind="item.spec || '-'" title="{{item.spec}}"></span></td>
+                                <td><span ng-bind="item.erpReserve || '-'" title="{{item.erpReserve}}"></span></td>
+                                <td><input type="text" class="form-control" ng-model="item.qty" ng-change="onAmountChange(item, item.qty, 'qty', 9)" ng-blur="chickAmountBlur(item, item.qty)"></td>
+                                <td><input type="text" class="form-control" ng-model="item.price" ng-change="onAmountChange(item, item.price, 'price', 4, 6)"></td>
+                            </tr>
+                            <tr>
+                                <td colspan="7">
+                                    <a class="btn-click" ng-click="addOneTable('one')">增加一条</a>
+                                    <a class="btn-click" ng-click="addOneTable('ten')">增加十条</a>
+                                    <a class="btn-click" ng-click="addOneTable('clear')">清空</a>
+                                </td>
+                            </tr>
+                            </tbody>
+                        </table>
+                    </td>
+                </tr>
+                </tbody>
+
+                <!--采购入库和销售出库-->
+                <tbody ng-if="handleItem === 2" ng-repeat="item in storageList" ng-class="{'toggle-mode': item.seleted}">
+                <tr>
+                    <td>系统自动生成</td>
+                    <td ng-if="storage_tab === 'outBound'"><span ng-bind="item.orderid || '-'" title="{{item.orderid}}"></span></td>
+                    <td ng-if="storage_tab === 'inBound'"><span ng-bind="item.invoiceid || '-'" title="{{item.invoiceid}}"></span></td>
+                    <td ng-if="storage_tab === 'outBound'"><span ng-bind="item.buyentername || item.buyername" title="{{item.buyentername || item.buyername}}"></span></td>
+                    <td ng-if="storage_tab === 'inBound'"><span ng-bind="item.sellername || '-'" title="{{item.sellername || '-'}}"></span></td>
+                    <td ng-bind="item.createtime | date: 'yyyy-MM-dd'"></td>
+                    <td ng-if="!item.seleted"><a class="btn-click" ng-click="item.seleted = !item.seleted;unfoldClick(storageList, item)" ng-bind="storage_tab === 'inBound' ? '收货入库' : '发货出库'"></a></td>
+                    <td ng-if="item.seleted"><a class="btn-click" ng-click="saveOtherCheck(item, storage_tab)">确定</a><a class="btn-click" ng-click="item.seleted = !item.seleted">取消</a></td>
+                </tr>
+                <tr ng-if="item.seleted && storage_tab === 'outBound'">
+                    <td colspan="5" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.orderid || '-'"></span></span>
+                            <span>物流公司 :&nbsp;</span>
+                            <span class="input-ul">
+                                <input id="logistics-input" type="text" class="form-control select-adder" ng-focus="getItemFocus()"
+                                       ng-blur="onItemBlur()" ng-keydown="onKeyup()" ng-model="logistics.companyName" placeholder="请选择物流公司" autocomplete="off"
+                                       maxlength="15" readonly="readonly">
+                                <div ng-if="showCompanyName">
+                                  <ul id="ulContent" class="dropdown-menu">
+                                    <li ng-click="showDefaultText()">请选择物流公司</li>
+                                    <li ng-click="showText(data)" ng-repeat="data in data_list" ng-class="{'active': $index==selectIndex}" ng-bind="data.companyName"></li>
+                                  </ul>
+                                  <a ng-click="addDistributor()">+&nbsp;新增配送商</a>
+                                </div>
+                              </span>
+                            <span style="margin-left:100px;">物流单号 :&nbsp;</span>
+                            <span style="margin-right: 20px; width: 160px;">
+                            <form name="myForm" style="display:inline-block;width:140px;">
+                              <!--ng-pattern="/^[A-Za-z0-9]+$/"-->
+                              <input name="number" type="text" class="form-control" style="height: 28px" ng-model="logistics.number" placeholder="请输入物流单号"
+                                     maxlength="20" autocomplete="off" />
+                            </form>
+                          </span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-if="item.seleted && storage_tab === 'inBound' && item.logistics">
+                    <td colspan="5" style="background:#f5f5f5;">
+                        <div class="logistics-info">
+                            <span style="margin-right:150px;">所属订单:<span ng-bind="item.associateOrderid || item.orid || '-'"></span></span>
+                            <span>物流公司 :&nbsp;</span>
+                            <span class="input-ul" ng-bind="item.logistics.companyName"></span>
+                            <span style="margin-left:100px;">物流单号 :&nbsp;</span>
+                            <span style="margin-right: 20px;" ng-bind="item.logistics.number">
+                            </span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-show="item.seleted">
+                    <td colspan="5">
+                        <div class="sub-table-head">
+                            <table class="wanted-sub-tab table">
+                                <thead>
+                                <tr>
+                                    <th width="60">序号</th>
+                                    <th width="150">型号</th>
+                                    <th width="110">品牌</th>
+                                    <th>物料名称</th>
+                                    <th width="180">规格</th>
+                                    <th width="100" ng-if="storage_tab === 'outBound'">应出库(PCS)</th>
+                                    <th width="100" ng-if="storage_tab === 'outBound'">已出库(PCS)</th>
+                                    <th width="100"><em class="red_color">*</em>{{storage_tab === 'inBound' ? '入库数' : '出库数'}}(PCS)</th>
+                                    <th width="80">{{storage_tab === 'inBound' ? '采购单价' : '销售单价'}}({{currency === 'RMB' ? '¥' : '$'}})</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div>
+                        <div style="max-height:300px;overflow-y: auto;">
+                            <!--采购入库数据-->
+                            <table class="wanted-sub-tab table" ng-if="storage_tab === 'inBound'">
+                                <tr ng-repeat="list in item.invoiceDetails">
+                                    <td width="60" ng-bind="$index + 1"></td>
+                                    <td width="150"><span ng-bind="list.cmpCode || '-'" title="{{list.cmpCode}}"></span></td>
+                                    <td width="110"><span ng-bind="list.brandNameEn || '-'" title="{{list.brandNameEn}}"></span></td>
+                                    <td><span ng-bind="list.kiName || '-'" title="{{list.kiName}}"></span></td>
+                                    <td width="180"><span ng-bind="list.spec || '-'" title="{{list.spec}}"></span></td>
+                                    <td width="100"><span ng-bind="list.qty || '-'" title="{{list.qty}}"></span></td>
+                                    <td width="80"><span ng-bind="list.taxUnitprice || '-'" title="{{list.taxUnitprice}}"></span></td>
+                                </tr>
+                            </table>
+                            <!--销售出库数据-->
+                            <table class="wanted-sub-tab table" ng-if="storage_tab === 'outBound'">
+                                <tr ng-repeat="list in item.purchaseDetails">
+                                    <td width="60" ng-bind="$index + 1"></td>
+                                    <td width="150"><span ng-bind="list.cmpCode || '-'" title="{{list.batchCode}}"></span></td>
+                                    <td width="110"><span ng-bind="list.brName || '-'" title="{{list.brName}}"></span></td>
+                                    <td><span ng-bind="list.kiName || '-'" title="{{list.kiName}}"></span></td>
+                                    <td width="180"><span ng-bind="list.spec || '-'" title="{{list.spec}}"></span></td>
+                                    <td width="100" ng-if="storage_tab === 'outBound'"><span ng-bind="list.number || '-'" title="{{list.number}}"></span></td>
+                                    <td width="100" ng-if="storage_tab === 'outBound'"><span ng-bind="list.shipQty || '-'" title="{{list.shipQty}}"></span></td>
+                                    <td width="100">
+                                        <span ng-if="list.number === list.shipQty">-</span>
+                                        <input type="text" ng-pattern="/^[1-9]\d*$/" ng-model="list.sendCount" ng-change="onAmountChange(list, list.sendCount, 'sendCount', 9)" ng-blur="outBlurSendCount(list, list.sendCount)" ng-if="list.number !== list.shipQty" class="form-control">
+                                    </td>
+                                    <td width="80"><span ng-bind="list.taxUnitPrice || '-'" title="{{list.taxUnitPrice}}"></span></td>
+                                </tr>
+                            </table>
+                        </div>
+                    </td>
+                </tr>
+                </tbody>
+            </table>
+            <div class="empty" ng-if="handleItem !== 1 && (!storageList || storageList.length == 0)">
+                <p class="empty-img">
+                    <img src="static/img/all/empty-cart.png">
+                </p>
+                <div class="empty-info">
+                    <p class="grey"> 暂无相关记录 </p>
+                    <!--<a href="vendor#/vendor_upload?type=company"><i></i>马上去上传</a>-->
+                </div>
+            </div>
+        </div>
+
+
+
+    </div>
+</div>
+
+<!--下架操作-->
+<div class="com-modal-wrap" ng-if="isSoldOut" ng-click="cancleSoldOut($event)" style="display:none">
+    <div class="com-out-box">
+        <div class="title">
+            <a ng-click="cancleSoldOut()"><i class="fa fa-close fa-lg"></i></a>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>确认下架?</p>
+            <div><a ng-click="cancleSoldOut()">取消</a><a ng-click="updateCommodityInfo(soldOutCommodity)">确认</a></div>
+        </div>
+    </div>
+</div>
+<div class="com-modal-wrap" ng-if="batchStatus" ng-click="cancelBatch($event)" style="display:none">
+    <div class="com-out-box">
+        <div class="title">
+            <a ng-click="cancelBatch()"><i class="fa fa-close fa-lg"></i></a>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i>{{batchTitle}}</p>
+            <div class="red" ng-if="batchType==1">*<i ng-if="batchType==1">已有交易记录的产品无法删除</i>
+            </div>
+            <div>
+                <a ng-click="cancelBatch()">取消</a>
+                <a ng-if="batchType==1" ng-click="batchDelete()">确认</a>
+                <a ng-if="batchType==2" ng-click="batchDown()">确认</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!--查看大图-->
+<div id="image-box"
+     style="display: none">
+    <div class="x-floating-wrap"></div>
+    <div class="x-floating">
+        <div id="item-content">
+            <div class="x-close-wrap"><a href="javascript:void(0);">×</a></div>
+            <div class="img"><img/></div>
+        </div>
+    </div>
+</div>
+
+<div class="com-modal-wrap" ng-show="batchModify" style="display:none">
+    <div class="com-mall-del-box import-product">
+        <div class="content">
+            <i class="fa fa-close" ng-click="batchModify=false"></i>
+            <p><i class="fa fa-exclamation-circle"></i>请先<a ng-click="download()">导出产品信息</a>,将内容修改后重新导入</p>
+            <div class="upload-content">
+                <input type="text" name="txt" id="upload_text">
+                <i>选择文件</i>
+                <input type="file" id="uploadCommodity" ng-file-select="" ng-change="selectFile()" accept="*.xls,*.xlsx" ng-model="myFile" ng-multiple="false" />
+                <!--<input type="file" id="uploadCommodity">-->
+            </div>
+            <h5>温馨提示:仅修改现有产品信息</h5>
+            <div>
+                <a ng-click="batchModify=false">取消</a>
+                <a ng-click="importExcel()">导入</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<div class="com-modal-wrap" ng-show="modifyResult" style="display:none">
+    <div class="com-mall-del-box import-result">
+        <div class="title" ng-click="modifyResult=false">
+            <i></i>
+        </div>
+        <div class="content">
+            <p><i class="fa fa-exclamation-circle"></i><span ng-bind="modifyData.success">583</span>个产品修改成功,</p>
+            <h5><span class="red" ng-bind="modifyData.filter">5</span>个产品修改失败!</h5>
+            <div>
+                <a ng-click="modifyResult=false">确定</a>
+                <span ng-if="modifyData.filter" ng-click="downloadExcel()">下载失败列表</span>
+                <form id="load-error" style="display: none;" method="get">
+                    <input type="hidden" name="batch" ng-value="modifyData.batch">
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    /**/
+    .wanted_list .empty{
+        overflow: hidden;
+        width:100%;
+        display:inline-flex;
+        justify-content:center;
+        align-items: center;
+        height: 265px;
+        margin-top: -20px;
+        background: #fff;
+    }
+    .wanted_list .empty-info{
+        line-height: 28px;
+        padding-top:10px;
+        margin-left:10px;
+        text-align:left;
+    }
+    .wanted_list .empty-info .grey{
+        color: #999;
+        font-size: 14px;
+    }
+    .wanted_list .empty .empty-info>a{
+        font-size: 14px;
+        color: #5078cb;
+    }
+    .wanted_list .empty .empty-info i{
+        display: inline-block;
+        width: 18px;
+        height: 18px;
+        margin-right: 5px;
+        background: url('static/img/vendor/images/upload-icon.png')no-repeat 0px 0px;
+        position: relative;
+        top: 7px;
+    }
+    .device .wanted_list a.Regulpica:hover{
+        border-bottom: 0 !important;
+    }
+    .zhezhaodang {
+        position: absolute;
+        left: 0;
+        top: 0;
+        width: 24px !important;
+        height: 26px !important;
+        background: url('static/img/vendor/images/upload_file_no_pass.png') no-repeat 0px 0px;
+        background-size: 100% 100%;
+        margin-top: 0px !important;;
+    }
+</style>
+<script>
+    // $(function(){
+    //     $(document).on('click', function () {
+    //         if ($(document).scrollTop() + $(window).height() < $('.record-line').offset().top + $('.record-line').height()) {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').addClass('active')
+    //         } else {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').removeClass('active')
+    //         }
+    //     })
+    //     $(window).bind("scroll",function() {
+    //         if ($(document).scrollTop() + $(window).height() < $('.record-line').offset().top + $('.record-line').height()) {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').addClass('active')
+    //         } else {
+    //             $('.wanted_list .tab table>tbody>tr.batch-tr').removeClass('active')
+    //         }
+    //     });
+    // })
+</script>