Browse Source

fix:处理显示折扣编辑问题

super-yimizi 1 month ago
parent
commit
471bce5a05

+ 5 - 6
application/admin/controller/marketing/Discount.php

@@ -291,16 +291,15 @@ class Discount extends Backend
                 if (!empty($goodsIdArr)) {
                     $goodsData = Db::name('shop_goods')
                         ->alias('g')
-                        ->field('g.*, c.name as category_name')
-                        ->join('shop_category c', 'c.id = g.category_id', 'LEFT')
+                        ->field('g.*')
                         ->where('g.id', 'in', $goodsIdArr)
                         ->select();
                         
                     // 处理商品数据,添加category属性
-                    foreach ($goodsData as &$goods) {
-                        $goods['category'] = ['name' => $goods['category_name']];
-                        unset($goods['category_name']);
-                    }
+                    // foreach ($goodsData as &$goods) {
+                    //     $goods['category'] = ['name' => $goods['category_name']];
+                    //     unset($goods['category_name']);
+                    // }
                 }
                 $this->view->assign('goodsData', $goodsData);
             }

+ 1 - 42
application/admin/view/marketing/discount/edit.html

@@ -51,7 +51,7 @@
             <button type="button" id="select-goods" class="btn btn-primary">选择商品</button>
             <div id="selected-goods-container" class="margin-top-10"></div>
             <input type="hidden" name="row[goods_ids]" id="goods-ids" value="{$row.goods_ids|htmlentities}">
-            <input type="hidden" name="row[goods_info]" id="goods-info" value="">
+            <input type="hidden" name="row[goods_info]" id="goods-info" value="{$row.goods_info|htmlentities}">
             <p class="help-block">提示:折扣价格将按照设置的折扣计算,折扣范围0.1~10折</p>
         </div>
     </div>
@@ -131,45 +131,4 @@
     </div>
 </script>
 
-<script>
-    var defaultDiscount = 9;
-    
-    // 商品数据
-    Config.goodsData = {:json_encode($goodsData ?? [])};
-    
-    // 初始化
-    $(function () {
-        // 初始化编辑器
-        var editor = CKEDITOR.replace('c-desc', {
-            height: 300,
-            filebrowserImageUploadUrl: Fast.api.fixurl('/ajax/upload')
-        });
-        
-        // 活动渠道全选
-        $('#select-all-channels').on('click', function() {
-            $('input[name="row[channels][]"]').prop('checked', $(this).prop('checked'));
-        });
-        
-        // 限购类型切换
-        $('input[name="row[purchase_limit_type]"]').on('change', function() {
-            var type = $(this).val();
-            if(type == '0') {
-                $('input[name="row[purchase_limit_total]"]').prop('disabled', true);
-                $('input[name="row[purchase_limit_daily]"]').prop('disabled', true);
-            } else if(type == '1') {
-                $('input[name="row[purchase_limit_total]"]').prop('disabled', false);
-                $('input[name="row[purchase_limit_daily]"]').prop('disabled', true);
-            } else if(type == '2') {
-                $('input[name="row[purchase_limit_total]"]').prop('disabled', true);
-                $('input[name="row[purchase_limit_daily]"]').prop('disabled', false);
-            }
-        });
-        
-        // 名称字数统计
-        $('#c-name').on('input', function() {
-            var length = $(this).val().length;
-            $('#name-count').text(length + '/20');
-        }).trigger('input');
-    });
-</script>
 

+ 6 - 6
application/api/controller/inspection/Base.php

@@ -31,19 +31,19 @@ class Base extends Api
         }
         parent::_initialize();
         Auth::instance()->setAllowFields($this->allowFields);
-       // 查询是否是审核员
-       $user = Auth::instance()->getUser();
-       $isInspection = null;
-       if ($user) {
+        // 查询是否是审核员
+        $user = Auth::instance()->getUser();
+        $isInspection = null;
+        if ($user) {
             $isInspection = InspectionService::getUserApplication($user->id);
             if (!$isInspection) {
-            $this->error('您不是审核员');
+              $this->error('您不是审核员');
             }       
             //  验证是否 通过
             if ($isInspection->audit_status !== InspectionApplication::AUDIT_STATUS_PASSED) {
               $this->error('您的验货员申请未通过');
             }
-       }    
+        }    
        
        $this->application = $isInspection;
         //这里手动载入语言包

+ 680 - 533
public/assets/js/backend/marketing/discount.js

@@ -265,378 +265,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                     area: ['95%', '90%'],
                     callback: function(data) {
                         if (data && data.length > 0) {
-                            var goodsIds = [];
-                            
-                            // 收集商品ID
-                            $.each(data, function(index, item) {
-                                goodsIds.push(item.id);
-                            });
-                            
-                            // 默认折扣值
-                            var defaultDiscount = 9;
-                            
-                            // 使用模板渲染表格
-                            var html = Template('goodsTableTpl', {
-                                list: data,
-                                discount: defaultDiscount
-                            });
-                            
-                            // 清空容器并显示表格
-                            $('#selected-goods-container').empty().append(html);
-                            
-                            // 初始化分页表格
-                            $('#selected-goods-table').bootstrapTable({
-                                data: data,
-                                pagination: true,
-                                pageSize: 5,
-                                pageList: [5, 10, 20],
-                                sortable: true,
-                                search: false,
-                                classes: 'table table-hover table-striped',
-                                onPostBody: function() {
-                                    // 表格渲染完成后处理行属性
-                                    $('#selected-goods-table tbody tr').each(function(index) {
-                                        // 确保每行有data-id属性
-                                        var rowData = data[index];
-                                        if(rowData && rowData.id) {
-                                            $(this).attr('data-id', rowData.id);
-                                            console.log('设置行data-id属性:', rowData.id);
-                                        }
-                                    });
-                                },
-                                columns: [
-                                    {
-                                        field: 'goods',
-                                        title: '商品',
-                                        width: '30%',
-                                        formatter: function(value, row) {
-                                            return '<div class="goods-item">' +
-                                                   '<img src="' + Fast.api.cdnurl(row.image) + '" style="width:60px;height:60px;margin-right:10px;" class="pull-left img-thumbnail">' +
-                                                   '<div style="margin-left:70px;">' +
-                                                   '<h5 style="margin-top:0;font-weight:600;">' + row.title + '</h5>' +
-                                                   '<p class="text-muted">分类:' + (row.category ? row.category.name : '') + ' | 规格:' + (row.spec_type == 0 ? '单规格' : '多规格') + '</p>' +
-                                                   '</div>' +
-                                                   '</div>'
-                                        }
-                                    },
-                                    {
-                                        field: 'price',
-                                        title: '价格',
-                                        width: '10%',
-                                        align: 'center',
-                                        formatter: function(value, row) {
-                                            return '<span class="text-danger">¥' + row.price + '</span>';
-                                        }
-                                    },
-                                    {
-                                        field: 'stocks',
-                                        title: '现库存',
-                                        width: '10%',
-                                        align: 'center'
-                                    },
-                                    {
-                                        field: 'discount_stocks',
-                                        title: '折扣库存',
-                                        width: '20%',
-                                        align: 'center',
-                                        formatter: function(value, row) {
-                                            if(row.spec_type == 0) { // 只有单规格商品显示输入框
-                                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                                console.log('渲染折扣库存输入框:', row.id, row.stocks);
-                                                // 确保折扣库存默认等于现库存
-                                                var stocks = parseInt(row.stocks);
-                                                // 移除max属性,仅通过JS验证限制最大值
-                                                return '<input type="number" class="form-control discount-stocks-input" value="' + stocks + '" min="0" data-id="' + row.id + '" data-max-stocks="' + stocks + '" style="width:100%;">';
-                                            } else {
-                                                return ''; // 多规格商品留空
-                                            }
-                                        }
-                                    },
-                                    {
-                                        field: 'discount',
-                                        title: '折扣',
-                                        width: '15%',
-                                        align: 'center',
-                                        formatter: function(value, row) {
-                                            if(row.spec_type == 1) {
-                                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                                var hasSpec = discountData[row.id] && discountData[row.id].specs;
-                                                var specBtnText = hasSpec ? '规格折扣设置 <span class="label label-success">已设置</span>' : '规格折扣设置';
-                                                var html = '<div class="text-center">' +
-                                                       '<a href="javascript:;" class="btn btn-info btn-sm btn-spec-discount" data-id="' + row.id + '">' + specBtnText + '</a>' +
-                                                       '<div class="text-muted small" style="margin-top:8px;">请点击设置各规格折扣</div>';
-                                                
-                                                // 如果已设置规格折扣,显示汇总信息
-                                                if (hasSpec && discountData[row.id].summary) {
-                                                    var summary = discountData[row.id].summary;
-                                                    var infoText = '已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件';
-                                                    html += '<div class="spec-discount-info text-muted" style="margin-top:5px;">' + infoText + '</div>';
-                                                }
-                                                
-                                                html += '</div>';
-                                                return html;
-                                            } else {
-                                                return '<div class="input-group">' +
-                                                       '<input type="number" class="form-control discount-input" value="' + defaultDiscount + '" min="0.1" max="10" step="0.1" data-price="' + row.price + '" data-id="' + row.id + '">' +
-                                                       '<span class="input-group-addon">折</span>' +
-                                                       '</div>';
-                                            }
-                                        }
-                                    },
-                                    {
-                                        field: 'discount_price',
-                                        title: '折后价',
-                                        width: '20%',
-                                        align: 'center',
-                                        formatter: function(value, row) {
-                                            if(row.spec_type == 0) {
-                                                return '<span class="discount-price text-success" id="discount-price-' + row.id + '">¥' + (row.price * defaultDiscount / 10).toFixed(2) + '</span>';
-                                            } else {
-                                                return '';
-                                            }
-                                        }
-                                    },
-                                    {
-                                        field: 'operate',
-                                        title: '操作',
-                                        width: '15%',
-                                        align: 'center',
-                                        formatter: function(value, row) {
-                                            return '<a href="javascript:;" class="btn btn-xs btn-danger remove-goods" data-id="' + row.id + '"><i class="fa fa-trash"></i> 删除</a>';
-                                        },
-                                        events: {
-                                            'click .remove-goods': function (e, value, row, index) {
-                                                // 从表格中移除该行
-                                                $('#selected-goods-table').bootstrapTable('remove', {
-                                                    field: 'id',
-                                                    values: [row.id]
-                                                });
-                                                
-                                                // 更新隐藏字段
-                                                var currentIds = $('#goods-ids').val().split(',');
-                                                var newIds = [];
-                                                $.each(currentIds, function(i, val) {
-                                                    if (val != row.id && val) {
-                                                        newIds.push(val);
-                                                    }
-                                                });
-                                                $('#goods-ids').val(newIds.join(','));
-                                                
-                                                // 移除折扣数据
-                                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                                if(discountData[row.id]) {
-                                                    delete discountData[row.id];
-                                                    $('#discount-data').val(JSON.stringify(discountData));
-                                                }
-                                                
-                                                // 如果表格为空,则移除整个表格
-                                                if(newIds.length === 0) {
-                                                    $('#selected-goods-container').empty();
-                                                }
-                                            }
-                                        }
-                                    }
-                                ]
-                            });
-                            
-                            // 更新隐藏字段
-                            $('#goods-ids').val(goodsIds.join(','));
-                            
-                            // 初始化折扣数据
-                            var discountData = {};
-                            $.each(data, function(index, item) {
-                                if (item.spec_type == 0) { // 单规格商品
-                                    // 确保折扣库存默认值为现有库存
-                                    var currentStocks = parseInt(item.stocks) || 0;
-                                    
-                                    // 单规格商品需要获取其默认SKU ID
-                                    var skuId = item.sku_id || 0; // 如果返回数据中有sku_id就使用,否则用0
-                                    
-                                    discountData[item.id] = {
-                                        id: item.id,
-                                        sku_id: skuId, // 添加SKU ID
-                                        discount: defaultDiscount,
-                                        discount_price: (item.price * defaultDiscount / 10).toFixed(2),
-                                        stocks: currentStocks // 默认折扣库存等于商品库存
-                                    };
-                                    console.log('初始化单规格商品:', item.id, 'SKU ID:', skuId, '库存:', currentStocks);
-                                }
-                            });
-                            $('#discount-data').val(JSON.stringify(discountData));
-                            
-                            // 同步更新商品详情信息
-                            updateGoodsInfo();
-                            
-                            // 等待表格渲染完成后修复折扣库存输入框
-                            setTimeout(function() {
-                                $('.discount-stocks-input').each(function() {
-                                    var $input = $(this);
-                                    var goodsId = $input.data('id');
-                                    var maxStocks = parseInt($input.data('max-stocks')) || 0;
-                                    
-                                    // 从折扣数据中获取正确的库存值
-                                    var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                    var correctStocks = discountData[goodsId] && discountData[goodsId].stocks !== undefined ? 
-                                                       discountData[goodsId].stocks : maxStocks;
-                                    
-                                    // 直接设置正确的库存值
-                                    $input.val(correctStocks);
-                                    console.log('修复折扣库存输入框值:', goodsId, '设置为:', correctStocks);
-                                });
-                            }, 500);
-                            
-                            // 绑定折扣库存输入事件
-                            $(document).on('input', '.discount-stocks-input', function() {
-                                var stocks = parseInt($(this).val()) || 0;
-                                var goodsId = $(this).data('id');
-                                var maxStocks = parseInt($(this).data('max-stocks')) || 0;
-                                
-                                console.log('折扣库存输入事件:', goodsId, '输入值:', stocks, '最大值:', maxStocks);
-                                
-                                // 限制输入范围,确保不超过现库存
-                                if(stocks < 0) stocks = 0;
-                                if(stocks > maxStocks) stocks = maxStocks;
-                                $(this).val(stocks);
-                                
-                                // 更新商品折扣数据
-                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                
-                                if(discountData[goodsId]) {
-                                    discountData[goodsId].stocks = stocks;
-                                } else {
-                                    // 新建数据时需要包含SKU ID
-                                    discountData[goodsId] = {
-                                        id: goodsId,
-                                        sku_id: 0, // 单规格商品默认SKU ID为0,实际应从商品数据获取
-                                        stocks: stocks
-                                    };
-                                }
-                                
-                                $('#discount-data').val(JSON.stringify(discountData));
-                            });
-                            
-                            // 绑定折扣输入事件
-                            $(document).on('input', '.discount-input', function() {
-                                var discount = parseFloat($(this).val()) || 0;
-                                if(discount < 0.1) discount = 0.1;
-                                if(discount > 10) discount = 10;
-                                
-                                var price = parseFloat($(this).data('price')) || 0;
-                                var goodsId = $(this).data('id');
-                                var discountPrice = (price * discount / 10).toFixed(2);
-                                
-                                $('#discount-price-' + goodsId).text('¥' + discountPrice);
-                                
-                                // 更新商品折扣数据
-                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                
-                                // 保留折扣库存值和SKU ID,如果已存在
-                                var stocks = discountData[goodsId] && discountData[goodsId].stocks ? discountData[goodsId].stocks : null;
-                                var skuId = discountData[goodsId] && discountData[goodsId].sku_id ? discountData[goodsId].sku_id : 0;
-                                
-                                var goodsDiscount = {
-                                    id: goodsId,
-                                    sku_id: skuId, // 保留SKU ID
-                                    discount: discount,
-                                    discount_price: discountPrice
-                                };
-                                
-                                // 如果已有设置折扣库存,保留该值
-                                if (stocks !== null) {
-                                    goodsDiscount.stocks = stocks;
-                                }
-                                
-                                // 存储折扣数据
-                                discountData[goodsId] = goodsDiscount;
-                                $('#discount-data').val(JSON.stringify(discountData));
-                                
-                                // 更新商品详情信息
-                                updateGoodsInfo();
-                            });
-                            
-                            // 处理规格设置按钮点击事件
-                            $(document).on('click', '.btn-spec-discount', function() {
-                                var goodsId = $(this).data('id');
-                                var $row = $(this).closest('tr');
-                                var hasDiscountSetting = $row.attr('data-has-discount-setting');
-                                var specData = '';
-                                
-                                console.log('点击规格折扣设置按钮:', goodsId, '当前设置状态:', hasDiscountSetting);
-                                
-                                // 如果已经有设置,则传递已有的数据
-                                if (hasDiscountSetting && $row.attr('data-discount-data')) {
-                                    specData = encodeURIComponent($row.attr('data-discount-data'));
-                                    console.log('已有折扣数据:', $row.attr('data-discount-data'));
-                                }
-                                
-                                Fast.api.open('marketing/discount/spec_discount?goods_id=' + goodsId + '&spec_data=' + specData, '规格折扣设置', {
-                                    area: ['90%', '90%'],
-                                    callback: function(data) {
-                                        if (data && data.goodsId && data.specs) {
-                                            console.log('规格折扣设置返回数据:', data);
-                                            
-                                            // 保存数据到行属性
-                                            $row.attr('data-has-discount-setting', 'true');
-                                            $row.attr('data-discount-data', JSON.stringify(data));
-                                            
-                                            // 调试确认设置成功
-                                            console.log('设置后的data-discount-data属性:', $row.attr('data-discount-data'));
-                                            
-                                            // 更新按钮文字
-                                            $row.find('.btn-spec-discount').html('规格折扣设置 <span class="label label-success">已设置</span>');
-                                            
-                                            // 更新状态和折扣显示
-                                            $row.find('.discount-status').text('已设置');
-                                            
-                                            // 计算平均折扣和参与规格数量
-                                            var totalDiscount = 0;
-                                            var count = 0;
-                                            var totalStocks = 0;
-                                            
-                                            $.each(data.specs, function(id, item) {
-                                                if (item.participate) {
-                                                    totalDiscount += parseFloat(item.discount);
-                                                    totalStocks += parseInt(item.stocks);
-                                                    count++;
-                                                }
-                                            });
-                                            
-                                            var avgDiscount = count > 0 ? (totalDiscount / count).toFixed(1) : '-';
-                                            
-                                            // 添加汇总信息
-                                            var summary = {
-                                                participate_count: count,
-                                                avg_discount: avgDiscount,
-                                                total_stocks: totalStocks
-                                            };
-                                            
-                                            // 更新显示
-                                            var infoText = '已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件';
-                                            
-                                            // 如果已有汇总信息区域则更新,否则创建
-                                            var $infoArea = $row.find('.spec-discount-info');
-                                            if ($infoArea.length > 0) {
-                                                $infoArea.text(infoText);
-                                            } else {
-                                                $row.find('.btn-spec-discount').parent().append('<div class="spec-discount-info text-muted" style="margin-top:5px;">' + infoText + '</div>');
-                                            }
-                                            
-                                            // 将汇总信息添加到数据中
-                                            data.summary = summary;
-                                            
-                                            // 将折扣数据保存到隐藏字段
-                                            var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                            discountData[goodsId] = data;
-                                            $('#discount-data').val(JSON.stringify(discountData));
-                                            
-                                            // 更新商品详情信息
-                                            updateGoodsInfo();
-                                            
-                                            console.log('多规格商品设置后的折扣数据:', $('#discount-data').val());
-                                        }
-                                    }
-                                });
-                            });
+                            // 使用共享的商品渲染方法
+                            Controller.renderSelectedGoods(data, false);
                         }
                     }
                 });
@@ -656,173 +286,215 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
             
             // 初始化已选择的商品
             var goodsIds = $('#goods-ids').val();
-            var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+            var goodsInfo = $('#goods-info').val() ? JSON.parse($('#goods-info').val()) : [];
             
-            if(goodsIds) {
-                // 加载已选择的商品数据
-                Fast.api.ajax({
-                    url: 'shop/goods/get_goods_by_ids',
-                    data: {ids: goodsIds}
-                }, function(data) {
-                    if(data && data.length > 0) {
-                        // 使用模板渲染表格
-                        var html = Template('goodsTableTpl', {
-                            list: data
-                        });
+            // 从goods_info构建折扣数据映射
+            var discountData = {};
+            if (goodsInfo && goodsInfo.length > 0) {
+                $.each(goodsInfo, function(index, item) {
+                    if (item.goods_id) {
+                        discountData[item.goods_id] = {
+                            id: item.goods_id,
+                            sku_id: item.sku_id || 0,
+                            discount: item.discount || 9,
+                            discount_price: item.discount_price || '',
+                            stocks: item.discount_stocks || item.stock || 0
+                        };
                         
-                        // 清空容器并显示表格
-                        $('#selected-goods-container').empty().append(html);
-                        
-                        // 初始化分页表格
-                        $('#selected-goods-table').bootstrapTable({
-                            data: data,
-                            pagination: true,
-                            pageSize: 5,
-                            pageList: [5, 10, 20],
-                            sortable: true,
-                            search: false,
-                            classes: 'table table-hover table-striped',
-                            columns: [
-                                {
-                                    field: 'goods',
-                                    title: '商品',
-                                    width: '30%',
-                                    formatter: function(value, row) {
-                                        return '<div class="goods-item">' +
-                                               '<img src="' + Fast.api.cdnurl(row.image) + '" style="width:60px;height:60px;margin-right:10px;" class="pull-left img-thumbnail">' +
-                                               '<div style="margin-left:70px;">' +
-                                               '<h5 style="margin-top:0;font-weight:600;">' + row.title + '</h5>' +
-                                               '<p class="text-muted">分类:' + (row.category ? row.category.name : '') + ' | 规格:' + (row.spec_type == 0 ? '单规格' : '多规格') + '</p>' +
-                                               '</div>' +
-                                               '</div>'
-                                    }
-                                },
-                                {
-                                    field: 'price',
-                                    title: '价格',
-                                    width: '10%',
-                                    align: 'center',
-                                    formatter: function(value, row) {
-                                        return '<span class="text-danger">¥' + row.price + '</span>';
-                                    }
-                                },
-                                {
-                                    field: 'stocks',
-                                    title: '现库存',
-                                    width: '10%',
-                                    align: 'center'
-                                },
-                                {
-                                    field: 'discount_stocks',
-                                    title: '折扣库存',
-                                    width: '10%',
-                                    align: 'center',
-                                    formatter: function(value, row) {
-                                                                                if(row.spec_type == 0) { // 只有单规格商品显示输入框
-                                            // 从折扣数据中获取库存值,如果没有则使用商品库存
-                                            var currentStocks = discountData[row.id] && discountData[row.id].stocks !== undefined ? 
-                                                               discountData[row.id].stocks : parseInt(row.stocks);
-                                            return '<input type="number" class="form-control discount-stocks-input" value="' + currentStocks + '" min="0" data-id="' + row.id + '" data-max-stocks="' + parseInt(row.stocks) + '" style="width:100%;">';
-                                        } else {
-                                            return ''; // 多规格商品留空
-                                        }
-                                    }
-                                },
-                                {
-                                    field: 'discount',
-                                    title: '折扣',
-                                    width: '15%',
-                                    align: 'center',
-                                    formatter: function(value, row) {
-                                        if(row.spec_type == 1) {
-                                            var hasSpec = discountData[row.id] && discountData[row.id].specs;
-                                            var specBtnText = hasSpec ? '规格折扣设置 <span class="label label-success">已设置</span>' : '规格折扣设置';
-                                            var html = '<div class="text-center">' +
-                                                   '<a href="javascript:;" class="btn btn-info btn-sm btn-spec-discount" data-id="' + row.id + '">' + specBtnText + '</a>' +
-                                                   '<div class="text-muted small" style="margin-top:8px;">请点击设置各规格折扣</div>';
-                                            
-                                            // 如果已设置规格折扣,显示汇总信息
-                                            if (hasSpec && discountData[row.id].summary) {
-                                                var summary = discountData[row.id].summary;
-                                                var infoText = '已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件';
-                                                html += '<div class="spec-discount-info text-muted" style="margin-top:5px;">' + infoText + '</div>';
-                                            }
-                                            
-                                            html += '</div>';
-                                            return html;
-                                        } else {
-                                            var discount = (discountData[row.id] && discountData[row.id].discount) ? discountData[row.id].discount : 9;
-                                            return '<div class="input-group">' +
-                                                   '<input type="number" class="form-control discount-input" value="' + discount + '" min="0.1" max="10" step="0.1" data-price="' + row.price + '" data-id="' + row.id + '">' +
-                                                   '<span class="input-group-addon">折</span>' +
-                                                   '</div>';
-                                        }
-                                    }
-                                },
-                                {
-                                    field: 'discount_price',
-                                    title: '折后价',
-                                    width: '20%',
-                                    align: 'center',
-                                    formatter: function(value, row) {
-                                        if(row.spec_type == 0) {
-                                            var discount = (discountData[row.id] && discountData[row.id].discount) ? discountData[row.id].discount : 9;
-                                            var discountPrice = (row.price * discount / 10).toFixed(2);
-                                            return '<span class="discount-price text-success" id="discount-price-' + row.id + '">¥' + discountPrice + '</span>';
-                                        } else {
-                                            return '';
-                                        }
-                                    }
-                                },
-                                {
-                                    field: 'operate',
-                                    title: '操作',
-                                    width: '15%',
-                                    align: 'center',
-                                    formatter: function(value, row) {
-                                        return '<a href="javascript:;" class="btn btn-xs btn-danger remove-goods" data-id="' + row.id + '"><i class="fa fa-trash"></i> 删除</a>';
-                                    },
-                                    events: {
-                                        'click .remove-goods': function (e, value, row, index) {
-                                            // 从表格中移除该行
-                                            $('#selected-goods-table').bootstrapTable('remove', {
-                                                field: 'id',
-                                                values: [row.id]
-                                            });
-                                            
-                                            // 更新隐藏字段
-                                            var currentIds = $('#goods-ids').val().split(',');
-                                            var newIds = [];
-                                            $.each(currentIds, function(i, val) {
-                                                if (val != row.id && val) {
-                                                    newIds.push(val);
-                                                }
-                                            });
-                                            $('#goods-ids').val(newIds.join(','));
-                                            
-                                            // 移除折扣数据
-                                            var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
-                                            if(discountData[row.id]) {
-                                                delete discountData[row.id];
-                                                $('#discount-data').val(JSON.stringify(discountData));
-                                            }
-                                            
-                                            // 如果表格为空,则移除整个表格
-                                            if(newIds.length === 0) {
-                                                $('#selected-goods-container').empty();
-                                            }
-                                        }
-                                    }
-                                }
-                            ]
-                        });
+                        // 处理多规格商品
+                        if (item.spec && item.spec.length > 0) {
+                            var specs = {};
+                            var summary = {
+                                participate_count: 0,
+                                avg_discount: 0,
+                                total_stocks: 0
+                            };
+                            
+                            var totalDiscount = 0;
+                            $.each(item.spec, function(specIndex, spec) {
+                                specs[spec.sku_id] = {
+                                    id: spec.sku_id,
+                                    participate: true,
+                                    discount: spec.discount,
+                                    discount_price: spec.discount_price,
+                                    stocks: spec.discount_stocks
+                                };
+                                
+                                summary.participate_count++;
+                                totalDiscount += parseFloat(spec.discount);
+                                summary.total_stocks += parseInt(spec.discount_stocks);
+                            });
+                            
+                            summary.avg_discount = summary.participate_count > 0 ? 
+                                (totalDiscount / summary.participate_count).toFixed(1) : '0';
+                            
+                            discountData[item.goods_id].specs = specs;
+                            discountData[item.goods_id].summary = summary;
+                        }
                     }
-                    return false;
                 });
             }
             
-            // 选择商品功能和删除商品功能,与add方法相同
-            Controller.add();
+            console.log('编辑页面初始化:', {
+                goodsIds: goodsIds,
+                goodsInfo: goodsInfo,
+                discountData: discountData
+            });
+            
+            // 设置discount-data隐藏字段以便共享方法使用
+            if (!$('#discount-data').length) {
+                $('#goods-info').after('<input type="hidden" id="discount-data" value="">');
+            }
+            $('#discount-data').val(JSON.stringify(discountData));
+            
+            if(goodsIds) {
+                console.log('开始加载商品数据,商品IDs:', goodsIds);
+                
+                // 加载已选择的商品数据
+                                 $.ajax({
+                     url: Fast.api.fixurl('shop/goods/get_goods_by_ids'),
+                     type: 'POST',
+                     dataType: 'json',
+                     data: {ids: goodsIds},
+                     headers: {
+                         'X-Requested-With': 'XMLHttpRequest'
+                     },
+                                         success: function(ret, textStatus, jqXHR) {
+                         console.log('商品数据加载结果:', {
+                             ret: ret,
+                             retType: typeof ret,
+                             retIsArray: Array.isArray(ret),
+                             retCode: ret ? ret.code : null,
+                             retData: ret ? ret.data : null,
+                             retDataIsArray: ret && ret.data ? Array.isArray(ret.data) : false
+                         });
+                         
+                         // 根据实际返回的数据结构来处理
+                         var goodsData = [];
+                         
+                         // 情况1: 标准FastAdmin格式,数据在ret.data中
+                         if (ret && ret.code === 1 && ret.data && Array.isArray(ret.data)) {
+                             goodsData = ret.data;
+                             console.log('使用标准格式数据,数量:', goodsData.length);
+                         }
+                         // 情况2: 直接返回商品数组
+                         else if (Array.isArray(ret)) {
+                             goodsData = ret;
+                             console.log('使用直接数组数据,数量:', goodsData.length);
+                         }
+                         // 情况3: 如果ret.code不等于1,说明有错误
+                         else if (ret && ret.code !== undefined && ret.code !== 1) {
+                             console.error('接口返回错误:', ret.msg || '未知错误');
+                             Layer.msg(ret.msg || '加载商品数据失败', {icon: 2});
+                             return;
+                         }
+                         
+                         if(goodsData && goodsData.length > 0) {
+                             console.log('接口返回商品数据成功,商品数量:', goodsData.length);
+                             
+                             // 如果有goods_info数据,则合并折扣信息
+                             if (goodsInfo && goodsInfo.length > 0) {
+                                 console.log('合并goods_info中的折扣数据');
+                                 // 将goods_info中的折扣数据合并到接口返回的商品数据中
+                                 $.each(goodsData, function(index, goods) {
+                                     var matchedInfo = null;
+                                     $.each(goodsInfo, function(infoIndex, info) {
+                                         if (info.goods_id == goods.id) {
+                                             matchedInfo = info;
+                                             return false; // 跳出循环
+                                         }
+                                     });
+                                     
+                                     if (matchedInfo) {
+                                         // 合并折扣信息到商品数据
+                                         goods.discount_info = matchedInfo;
+                                         console.log('商品', goods.id, '合并折扣信息:', matchedInfo);
+                                     }
+                                 });
+                             }
+                             
+                             // 使用共享的商品渲染方法,传入编辑模式标识
+                             Controller.renderSelectedGoods(goodsData, true);
+                         } else {
+                             console.warn('没有获取到商品数据或数据为空');
+                             
+                             // 如果接口没有返回数据,但有goods_info,尝试直接渲染
+                             if (goodsInfo && goodsInfo.length > 0) {
+                                 console.log('尝试从goods_info构造商品数据进行渲染');
+                                 // 这里可以实现从goods_info重构商品数据的逻辑
+                                 // 不过通常情况下,如果有goods_ids,接口应该能返回商品基础数据
+                             }
+                         }
+                     },
+                     error: function(jqXHR, textStatus, errorThrown) {
+                         console.log('Ajax error回调触发,尝试解析响应:', {
+                             status: jqXHR.status,
+                             statusText: jqXHR.statusText,
+                             textStatus: textStatus,
+                             errorThrown: errorThrown,
+                             responseText: jqXHR.responseText
+                         });
+                         
+                         // 尝试解析响应文本,可能是有效的JSON但格式不符合预期
+                         try {
+                             var responseData = JSON.parse(jqXHR.responseText);
+                             console.log('解析响应数据成功:', responseData);
+                             
+                             if (Array.isArray(responseData)) {
+                                 console.log('响应是商品数组,尝试渲染:', responseData.length);
+                                 
+                                 // 如果有goods_info数据,则合并折扣信息
+                                 if (goodsInfo && goodsInfo.length > 0) {
+                                     console.log('合并goods_info中的折扣数据');
+                                     $.each(responseData, function(index, goods) {
+                                         var matchedInfo = null;
+                                         $.each(goodsInfo, function(infoIndex, info) {
+                                             if (info.goods_id == goods.id) {
+                                                 matchedInfo = info;
+                                                 return false;
+                                             }
+                                         });
+                                         
+                                         if (matchedInfo) {
+                                             goods.discount_info = matchedInfo;
+                                             console.log('商品', goods.id, '合并折扣信息:', matchedInfo);
+                                         }
+                                     });
+                                 }
+                                 
+                                 // 使用共享的商品渲染方法
+                                 Controller.renderSelectedGoods(responseData, true);
+                                 return; // 成功处理,不显示错误信息
+                             }
+                         } catch (e) {
+                             console.error('解析响应数据失败:', e);
+                         }
+                         
+                         // 真正的错误情况
+                         console.error('加载商品数据失败:', {
+                             status: jqXHR.status,
+                             statusText: jqXHR.statusText,
+                             textStatus: textStatus,
+                             errorThrown: errorThrown
+                         });
+                         Layer.msg('加载商品数据失败', {icon: 2});
+                     }
+                 });
+            } else {
+                console.log('没有商品IDs,跳过商品数据加载');
+            }
+            
+            // 绑定选择商品按钮事件 - 使用共享方法
+            $('#select-goods').off('click').on('click', function() {
+                Fast.api.open('shop/goods/select', '选择商品', {
+                    area: ['95%', '90%'],
+                    callback: function(data) {
+                        if (data && data.length > 0) {
+                            Controller.renderSelectedGoods(data, true);
+                        }
+                    }
+                });
+            });
         },
         
         // 规格折扣设置页面
@@ -1091,6 +763,481 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function
                 Fast.api.close(returnData);
             });
         },
+        
+        // 渲染已选择的商品表格 - 共享方法
+        renderSelectedGoods: function(data, isEdit) {
+            var defaultDiscount = 9;
+            var existingDiscountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+            
+            // 如果是编辑模式且有现有数据,合并数据
+            if (isEdit && Object.keys(existingDiscountData).length > 0) {
+                console.log('编辑模式,使用现有折扣数据:', existingDiscountData);
+            }
+            
+            console.log('renderSelectedGoods调用:', {
+                dataLength: data ? data.length : 0,
+                isEdit: isEdit,
+                existingDataCount: Object.keys(existingDiscountData).length
+            });
+            
+            // 收集商品ID
+            var goodsIds = [];
+            $.each(data, function(index, item) {
+                goodsIds.push(item.id);
+            });
+            
+            // 使用模板渲染表格
+            var html = Template('goodsTableTpl', {
+                list: data,
+                discount: defaultDiscount
+            });
+            
+            // 清空容器并显示表格
+            $('#selected-goods-container').empty().append(html);
+            
+            // 初始化分页表格
+            $('#selected-goods-table').bootstrapTable({
+                data: data,
+                pagination: true,
+                pageSize: 5,
+                pageList: [5, 10, 20],
+                sortable: true,
+                search: false,
+                classes: 'table table-hover table-striped',
+                onPostBody: function() {
+                    // 表格渲染完成后处理行属性
+                    $('#selected-goods-table tbody tr').each(function(index) {
+                        var rowData = data[index];
+                        if(rowData && rowData.id) {
+                            $(this).attr('data-id', rowData.id);
+                            console.log('设置行data-id属性:', rowData.id);
+                        }
+                    });
+                },
+                columns: [
+                    {
+                        field: 'goods',
+                        title: '商品',
+                        width: '30%',
+                        formatter: function(value, row) {
+                            return '<div class="goods-item">' +
+                                   '<img src="' + Fast.api.cdnurl(row.image) + '" style="width:60px;height:60px;margin-right:10px;" class="pull-left img-thumbnail">' +
+                                   '<div style="margin-left:70px;">' +
+                                   '<h5 style="margin-top:0;font-weight:600;">' + row.title + '</h5>' +
+                                   '<p class="text-muted">分类:' + (row.category ? row.category.name : '') + ' | 规格:' + (row.spec_type == 0 ? '单规格' : '多规格') + '</p>' +
+                                   '</div>' +
+                                   '</div>'
+                        }
+                    },
+                    {
+                        field: 'price',
+                        title: '价格',
+                        width: '10%',
+                        align: 'center',
+                        formatter: function(value, row) {
+                            return '<span class="text-danger">¥' + row.price + '</span>';
+                        }
+                    },
+                    {
+                        field: 'stocks',
+                        title: '现库存',
+                        width: '10%',
+                        align: 'center'
+                    },
+                    {
+                        field: 'discount_stocks',
+                        title: '折扣库存',
+                        width: '20%',
+                        align: 'center',
+                        formatter: function(value, row) {
+                            if(row.spec_type == 0) {
+                                // 从折扣数据中获取库存值,如果没有则使用商品库存
+                                var currentStocks = existingDiscountData[row.id] && existingDiscountData[row.id].stocks !== undefined ? 
+                                                   existingDiscountData[row.id].stocks : parseInt(row.stocks);
+                                return '<input type="number" class="form-control discount-stocks-input" value="' + currentStocks + '" min="0" data-id="' + row.id + '" data-max-stocks="' + parseInt(row.stocks) + '" style="width:100%;">';
+                            } else {
+                                return '';
+                            }
+                        }
+                    },
+                    {
+                        field: 'discount',
+                        title: '折扣',
+                        width: '15%',
+                        align: 'center',
+                        formatter: function(value, row) {
+                            if(row.spec_type == 1) {
+                                // 检查是否有已保存的规格折扣数据
+                                var hasSpec = false;
+                                var specBtnText = '规格折扣设置';
+                                var summaryInfo = '';
+                                
+                                // 先检查合并的折扣信息
+                                if (row.discount_info && row.discount_info.spec && row.discount_info.spec.length > 0) {
+                                    hasSpec = true;
+                                    specBtnText = '规格折扣设置 <span class="label label-success">已设置</span>';
+                                    
+                                    // 计算汇总信息
+                                    var totalDiscount = 0;
+                                    var count = 0;
+                                    var totalStocks = 0;
+                                    $.each(row.discount_info.spec, function(index, spec) {
+                                        totalDiscount += parseFloat(spec.discount || 0);
+                                        totalStocks += parseInt(spec.discount_stocks || 0);
+                                        count++;
+                                    });
+                                    var avgDiscount = count > 0 ? (totalDiscount / count).toFixed(1) : '0';
+                                    summaryInfo = '<div class="spec-discount-info text-muted" style="margin-top:5px;">已设置' + count + '个规格,平均' + avgDiscount + '折,共' + totalStocks + '件</div>';
+                                }
+                                // 再检查existingDiscountData
+                                else if (existingDiscountData[row.id] && existingDiscountData[row.id].specs) {
+                                    hasSpec = true;
+                                    specBtnText = '规格折扣设置 <span class="label label-success">已设置</span>';
+                                    
+                                    if (existingDiscountData[row.id].summary) {
+                                        var summary = existingDiscountData[row.id].summary;
+                                        summaryInfo = '<div class="spec-discount-info text-muted" style="margin-top:5px;">已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件</div>';
+                                    }
+                                }
+                                
+                                var html = '<div class="text-center">' +
+                                       '<a href="javascript:;" class="btn btn-info btn-sm btn-spec-discount" data-id="' + row.id + '">' + specBtnText + '</a>' +
+                                       '<div class="text-muted small" style="margin-top:8px;">请点击设置各规格折扣</div>' +
+                                       summaryInfo +
+                                       '</div>';
+                                
+                                return html;
+                            } else {
+                                var discount = (existingDiscountData[row.id] && existingDiscountData[row.id].discount) ? existingDiscountData[row.id].discount : defaultDiscount;
+                                return '<div class="input-group">' +
+                                       '<input type="number" class="form-control discount-input" value="' + discount + '" min="0.1" max="10" step="0.1" data-price="' + row.price + '" data-id="' + row.id + '">' +
+                                       '<span class="input-group-addon">折</span>' +
+                                       '</div>';
+                            }
+                        }
+                    },
+                    {
+                        field: 'discount_price',
+                        title: '折后价',
+                        width: '20%',
+                        align: 'center',
+                        formatter: function(value, row) {
+                            if(row.spec_type == 0) {
+                                var discount = (existingDiscountData[row.id] && existingDiscountData[row.id].discount) ? existingDiscountData[row.id].discount : defaultDiscount;
+                                var discountPrice = (row.price * discount / 10).toFixed(2);
+                                return '<span class="discount-price text-success" id="discount-price-' + row.id + '">¥' + discountPrice + '</span>';
+                            } else {
+                                return '';
+                            }
+                        }
+                    },
+                    {
+                        field: 'operate',
+                        title: '操作',
+                        width: '15%',
+                        align: 'center',
+                        formatter: function(value, row) {
+                            return '<a href="javascript:;" class="btn btn-xs btn-danger remove-goods" data-id="' + row.id + '"><i class="fa fa-trash"></i> 删除</a>';
+                        },
+                        events: {
+                            'click .remove-goods': function (e, value, row, index) {
+                                // 从表格中移除该行
+                                $('#selected-goods-table').bootstrapTable('remove', {
+                                    field: 'id',
+                                    values: [row.id]
+                                });
+                                
+                                // 更新隐藏字段
+                                var currentIds = $('#goods-ids').val().split(',');
+                                var newIds = [];
+                                $.each(currentIds, function(i, val) {
+                                    if (val != row.id && val) {
+                                        newIds.push(val);
+                                    }
+                                });
+                                $('#goods-ids').val(newIds.join(','));
+                                
+                                // 移除折扣数据
+                                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+                                if(discountData[row.id]) {
+                                    delete discountData[row.id];
+                                    $('#discount-data').val(JSON.stringify(discountData));
+                                }
+                                
+                                // 如果表格为空,则移除整个表格
+                                if(newIds.length === 0) {
+                                    $('#selected-goods-container').empty();
+                                }
+                                
+                                updateGoodsInfo();
+                            }
+                        }
+                    }
+                ]
+            });
+            
+            // 更新隐藏字段
+            $('#goods-ids').val(goodsIds.join(','));
+            
+            // 初始化折扣数据
+            var discountData = existingDiscountData;
+            $.each(data, function(index, item) {
+                // 检查是否有合并的折扣信息
+                var hasDiscountInfo = item.discount_info;
+                
+                if (item.spec_type == 0) {
+                    if (hasDiscountInfo) {
+                        // 使用合并的折扣信息
+                        discountData[item.id] = {
+                            id: item.id,
+                            sku_id: hasDiscountInfo.sku_id || 0,
+                            discount: hasDiscountInfo.discount || defaultDiscount,
+                            discount_price: hasDiscountInfo.discount_price || (item.price * defaultDiscount / 10).toFixed(2),
+                            stocks: hasDiscountInfo.discount_stocks || parseInt(item.stocks) || 0
+                        };
+                        console.log('使用已保存的单规格商品折扣信息:', item.id, discountData[item.id]);
+                    } else if (!discountData[item.id]) {
+                        // 单规格商品,只有在没有现有数据时才初始化
+                        var currentStocks = parseInt(item.stocks) || 0;
+                        var skuId = item.sku_id || 0;
+                        
+                        discountData[item.id] = {
+                            id: item.id,
+                            sku_id: skuId,
+                            discount: defaultDiscount,
+                            discount_price: (item.price * defaultDiscount / 10).toFixed(2),
+                            stocks: currentStocks
+                        };
+                        console.log('初始化单规格商品:', item.id, 'SKU ID:', skuId, '库存:', currentStocks);
+                    }
+                } else if (item.spec_type == 1 && hasDiscountInfo && hasDiscountInfo.spec) {
+                    // 多规格商品,处理规格折扣信息
+                    var specs = {};
+                    var summary = {
+                        participate_count: 0,
+                        avg_discount: 0,
+                        total_stocks: 0
+                    };
+                    
+                    var totalDiscount = 0;
+                    $.each(hasDiscountInfo.spec, function(specIndex, spec) {
+                        specs[spec.sku_id] = {
+                            id: spec.sku_id,
+                            participate: true,
+                            discount: spec.discount,
+                            discount_price: spec.discount_price,
+                            stocks: spec.discount_stocks
+                        };
+                        
+                        summary.participate_count++;
+                        totalDiscount += parseFloat(spec.discount);
+                        summary.total_stocks += parseInt(spec.discount_stocks);
+                    });
+                    
+                    summary.avg_discount = summary.participate_count > 0 ? 
+                        (totalDiscount / summary.participate_count).toFixed(1) : '0';
+                    
+                    discountData[item.id] = {
+                        id: item.id,
+                        specs: specs,
+                        summary: summary
+                    };
+                    
+                    console.log('使用已保存的多规格商品折扣信息:', item.id, discountData[item.id]);
+                }
+            });
+            
+            // 确保discount-data字段存在(兼容性)
+            if (!$('#discount-data').length) {
+                $('#goods-info').after('<input type="hidden" id="discount-data" value="">');
+            }
+            $('#discount-data').val(JSON.stringify(discountData));
+            
+            // 延迟处理事件绑定和数据回显
+            setTimeout(function() {
+                // 处理多规格商品的数据回显
+                $('#selected-goods-table tbody tr').each(function() {
+                    var $row = $(this);
+                    var goodsId = $row.data('id');
+                    
+                    console.log('检查商品行:', goodsId, '折扣数据:', discountData[goodsId]);
+                    
+                    if (goodsId && discountData[goodsId]) {
+                        // 检查是否是多规格商品且有规格数据
+                        if (discountData[goodsId].specs) {
+                            console.log('回显多规格商品数据:', goodsId, discountData[goodsId]);
+                            
+                            // 设置多规格商品的数据属性
+                            $row.attr('data-has-discount-setting', 'true');
+                            $row.attr('data-discount-data', JSON.stringify(discountData[goodsId]));
+                            
+                            // 更新按钮显示为"已设置"状态
+                            var $btn = $row.find('.btn-spec-discount');
+                            if ($btn.length > 0) {
+                                $btn.html('规格折扣设置 <span class="label label-success">已设置</span>');
+                                
+                                // 显示汇总信息
+                                if (discountData[goodsId].summary) {
+                                    var summary = discountData[goodsId].summary;
+                                    var infoText = '已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件';
+                                    
+                                    // 检查是否已有汇总信息区域
+                                    var $infoArea = $row.find('.spec-discount-info');
+                                    if ($infoArea.length > 0) {
+                                        $infoArea.text(infoText);
+                                    } else {
+                                        $btn.parent().append('<div class="spec-discount-info text-muted" style="margin-top:5px;">' + infoText + '</div>');
+                                    }
+                                }
+                            }
+                        }
+                    }
+                });
+                
+                // 绑定事件处理器
+                Controller.bindGoodsEvents();
+                
+                // 同步更新商品详情信息
+                updateGoodsInfo();
+            }, 300);
+        },
+        
+        // 绑定商品相关事件处理器
+        bindGoodsEvents: function() {
+            // 绑定折扣库存输入事件
+            $(document).off('input', '.discount-stocks-input').on('input', '.discount-stocks-input', function() {
+                var stocks = parseInt($(this).val()) || 0;
+                var goodsId = $(this).data('id');
+                var maxStocks = parseInt($(this).data('max-stocks')) || 0;
+                
+                console.log('折扣库存输入事件:', goodsId, '输入值:', stocks, '最大值:', maxStocks);
+                
+                // 限制输入范围,确保不超过现库存
+                if(stocks < 0) stocks = 0;
+                if(stocks > maxStocks) stocks = maxStocks;
+                $(this).val(stocks);
+                
+                // 更新商品折扣数据
+                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+                
+                if(discountData[goodsId]) {
+                    discountData[goodsId].stocks = stocks;
+                } else {
+                    discountData[goodsId] = {
+                        id: goodsId,
+                        sku_id: 0,
+                        stocks: stocks
+                    };
+                }
+                
+                $('#discount-data').val(JSON.stringify(discountData));
+                updateGoodsInfo();
+            });
+            
+            // 绑定折扣输入事件
+            $(document).off('input', '.discount-input').on('input', '.discount-input', function() {
+                var discount = parseFloat($(this).val()) || 0;
+                if(discount < 0.1) discount = 0.1;
+                if(discount > 10) discount = 10;
+                
+                var price = parseFloat($(this).data('price')) || 0;
+                var goodsId = $(this).data('id');
+                var discountPrice = (price * discount / 10).toFixed(2);
+                
+                $('#discount-price-' + goodsId).text('¥' + discountPrice);
+                
+                // 更新商品折扣数据
+                var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+                
+                // 保留已有的数据结构
+                if (!discountData[goodsId]) {
+                    discountData[goodsId] = {
+                        id: goodsId,
+                        sku_id: 0
+                    };
+                }
+                
+                discountData[goodsId].discount = discount;
+                discountData[goodsId].discount_price = discountPrice;
+                
+                $('#discount-data').val(JSON.stringify(discountData));
+                updateGoodsInfo();
+            });
+            
+            // 处理规格设置按钮点击事件
+            $(document).off('click', '.btn-spec-discount').on('click', '.btn-spec-discount', function() {
+                var goodsId = $(this).data('id');
+                var $row = $(this).closest('tr');
+                var hasDiscountSetting = $row.attr('data-has-discount-setting');
+                var specData = '';
+                
+                console.log('点击规格折扣设置按钮:', goodsId, '当前设置状态:', hasDiscountSetting);
+                
+                // 如果已经有设置,则传递已有的数据
+                if (hasDiscountSetting && $row.attr('data-discount-data')) {
+                    specData = encodeURIComponent($row.attr('data-discount-data'));
+                    console.log('已有折扣数据:', $row.attr('data-discount-data'));
+                }
+                
+                Fast.api.open('marketing/discount/spec_discount?goods_id=' + goodsId + '&spec_data=' + specData, '规格折扣设置', {
+                    area: ['90%', '90%'],
+                    callback: function(data) {
+                        if (data && data.goodsId && data.specs) {
+                            console.log('规格折扣设置返回数据:', data);
+                            
+                            // 保存数据到行属性
+                            $row.attr('data-has-discount-setting', 'true');
+                            $row.attr('data-discount-data', JSON.stringify(data));
+                            
+                            // 更新按钮文字
+                            $row.find('.btn-spec-discount').html('规格折扣设置 <span class="label label-success">已设置</span>');
+                            
+                            // 计算并显示汇总信息
+                            var totalDiscount = 0;
+                            var count = 0;
+                            var totalStocks = 0;
+                            
+                            $.each(data.specs, function(id, item) {
+                                if (item.participate) {
+                                    totalDiscount += parseFloat(item.discount);
+                                    totalStocks += parseInt(item.stocks);
+                                    count++;
+                                }
+                            });
+                            
+                            var avgDiscount = count > 0 ? (totalDiscount / count).toFixed(1) : '-';
+                            
+                            var summary = {
+                                participate_count: count,
+                                avg_discount: avgDiscount,
+                                total_stocks: totalStocks
+                            };
+                            
+                            var infoText = '已设置' + summary.participate_count + '个规格,平均' + summary.avg_discount + '折,共' + summary.total_stocks + '件';
+                            
+                            var $infoArea = $row.find('.spec-discount-info');
+                            if ($infoArea.length > 0) {
+                                $infoArea.text(infoText);
+                            } else {
+                                $row.find('.btn-spec-discount').parent().append('<div class="spec-discount-info text-muted" style="margin-top:5px;">' + infoText + '</div>');
+                            }
+                            
+                            data.summary = summary;
+                            
+                            // 将折扣数据保存到隐藏字段
+                            var discountData = $('#discount-data').val() ? JSON.parse($('#discount-data').val()) : {};
+                            discountData[goodsId] = data;
+                            $('#discount-data').val(JSON.stringify(discountData));
+                            
+                            updateGoodsInfo();
+                            
+                            console.log('多规格商品设置后的折扣数据:', $('#discount-data').val());
+                        }
+                    }
+                });
+            });
+        },
+        
         api: {
             // 解析Config中的JSON字符串的辅助函数
             parseConfigJson: function(configKey, defaultValue) {