From a55664bff11f2044cc4c87716e9701b7c9d264f2 Mon Sep 17 00:00:00 2001
From: SHW\戥岁。。 <2873657140@qq.com>
Date: Sat, 23 Apr 2022 11:06:15 +0800
Subject: [PATCH] 折扣变化

---
 application/admin/controller/activity_goods/ImportGoods.php                 | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/controller/activity_goods/NewGoods.php                    | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/controller/activity_goods/SeckillGoods.php                | 490 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/controller/litestore/Litestoregoods.php                   |  19 +++++++++++++++++--
 application/admin/lang/zh-cn/activity_goods/import_goods.php                |  47 +++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/lang/zh-cn/activity_goods/new_goods.php                   |  47 +++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/lang/zh-cn/activity_goods/seckill_goods.php               |  47 +++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/model/litestore/Litestoregoods.php                        |   4 ++--
 application/admin/model/litestore/Litestoregoodsspec.php                    |   2 +-
 application/admin/view/activity_goods/import_goods/add.html                 | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/import_goods/edit.html                | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/import_goods/index.html               |  40 ++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/import_goods/spec_many_template.html  |  82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/new_goods/add.html                    | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/new_goods/edit.html                   | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/new_goods/index.html                  |  40 ++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/new_goods/spec_many_template.html     |  82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/seckill_goods/add.html                | 344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/seckill_goods/edit.html               | 349 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/seckill_goods/index.html              |  40 ++++++++++++++++++++++++++++++++++++++++
 application/admin/view/activity_goods/seckill_goods/spec_many_template.html |  82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 application/admin/view/litestore/litestoregoods/index.html                  |  33 ++++++++++++++++++---------------
 application/api/controller/Classification.php                               |   8 ++++----
 application/api/controller/Goods.php                                        |   4 ++--
 public/assets/js/backend/activity_goods/import_goods.js                     | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/assets/js/backend/activity_goods/new_goods.js                        | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/assets/js/backend/activity_goods/seckill_goods.js                    | 347 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/assets/js/backend/litestore/litestoregoods.js                        |  23 +++++++++++++++++++++++
 28 files changed, 5162 insertions(+), 26 deletions(-)
 create mode 100644 application/admin/controller/activity_goods/ImportGoods.php
 create mode 100644 application/admin/controller/activity_goods/NewGoods.php
 create mode 100644 application/admin/controller/activity_goods/SeckillGoods.php
 create mode 100644 application/admin/lang/zh-cn/activity_goods/import_goods.php
 create mode 100644 application/admin/lang/zh-cn/activity_goods/new_goods.php
 create mode 100644 application/admin/lang/zh-cn/activity_goods/seckill_goods.php
 create mode 100644 application/admin/view/activity_goods/import_goods/add.html
 create mode 100644 application/admin/view/activity_goods/import_goods/edit.html
 create mode 100644 application/admin/view/activity_goods/import_goods/index.html
 create mode 100644 application/admin/view/activity_goods/import_goods/spec_many_template.html
 create mode 100644 application/admin/view/activity_goods/new_goods/add.html
 create mode 100644 application/admin/view/activity_goods/new_goods/edit.html
 create mode 100644 application/admin/view/activity_goods/new_goods/index.html
 create mode 100644 application/admin/view/activity_goods/new_goods/spec_many_template.html
 create mode 100644 application/admin/view/activity_goods/seckill_goods/add.html
 create mode 100644 application/admin/view/activity_goods/seckill_goods/edit.html
 create mode 100644 application/admin/view/activity_goods/seckill_goods/index.html
 create mode 100644 application/admin/view/activity_goods/seckill_goods/spec_many_template.html
 create mode 100644 public/assets/js/backend/activity_goods/import_goods.js
 create mode 100644 public/assets/js/backend/activity_goods/new_goods.js
 create mode 100644 public/assets/js/backend/activity_goods/seckill_goods.js

diff --git a/application/admin/controller/activity_goods/ImportGoods.php b/application/admin/controller/activity_goods/ImportGoods.php
new file mode 100644
index 0000000..ee3b38c
--- /dev/null
+++ b/application/admin/controller/activity_goods/ImportGoods.php
@@ -0,0 +1,489 @@
+<?php
+
+namespace app\admin\controller\activity_goods;
+
+use app\admin\model\litestore\Litestoregoodsspec;
+use app\common\controller\Backend;
+use app\admin\model\litestore\Litestorespec as SpecModel;
+use app\admin\model\litestore\Litestorespecvalue as SpecValueModel;
+use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
+use PhpOffice\PhpSpreadsheet\Reader\Csv;
+use PhpOffice\PhpSpreadsheet\Reader\Xls;
+use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+use think\Db;
+use think\exception\PDOException;
+
+
+/**
+ *
+ *
+ * @icon fa fa-circle-o
+ */
+class ImportGoods extends Backend
+{
+    private $SpecModel;
+    private $SpecValueModel;
+    /**
+     * Litestoregoods模型对象
+     * @var \app\admin\model\litestore\Litestoregoods
+     */
+    protected $model = null;
+    protected $spec_model = null;
+//    protected $searchFields = 'category.name';
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->SpecModel      = new SpecModel;
+        $this->SpecValueModel = new SpecValueModel;
+
+        $this->model      = new \app\admin\model\litestore\Litestoregoods;
+        $this->spec_model = new \app\admin\model\litestore\Litestoregoodsspec();
+        $this->view->assign("specTypeList", $this->model->getSpecTypeList());
+        $this->view->assign("deductStockTypeList", $this->model->getDeductStockTypeList());
+        $this->view->assign("goodsStatusList", $this->model->getGoodsStatusList());
+        $this->view->assign("isDeleteList", $this->model->getIsDeleteList());
+        $this->view->assign("makeforList", $this->model->getMakeforList());
+        $this->view->assign("isIndexList", $this->model->getIsIndexList());
+
+        $this->view->assign("spec_attr", '');
+        $this->view->assign("spec_list", '');
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams("category.name",true);
+            $total = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',3)
+                ->order($sort, $order)
+                ->count();
+
+            $list = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',3)
+                ->order($sort, $order)
+                ->limit($offset, $limit)
+                ->select();
+
+            foreach ($list as $row) {
+
+                $row->getRelation('category')->visible(['name']);
+                $row->getRelation('activity')->visible(['name']);
+//				$row->getRelation('freight')->visible(['name']);
+                $row->stock_num = Litestoregoodsspec::where('goods_id', $row['goods_id'])->sum('stock_num');
+            }
+            $list   = collection($list)->toArray();
+            $result = array("total" => $total, "rows" => $list);
+
+            return json($result);
+        }
+        $this->assign('template', $this->request->domain() . '/static/template/商品导入模板.xlsx');
+
+        return $this->view->fetch();
+    }
+
+    public function addSpec($spec_name, $spec_value)
+    {
+        // 判断规格组是否存在
+        if (!$specId = $this->SpecModel->getSpecIdByName($spec_name)) {
+            // 新增规格组and规则值
+            if ($this->SpecModel->add($spec_name)
+                && $this->SpecValueModel->add($this->SpecModel['id'], $spec_value))
+                return $this->success('', '', [
+                    'spec_id'       => (int)$this->SpecModel['id'],
+                    'spec_value_id' => (int)$this->SpecValueModel['id'],
+                ]);
+            return $this->error();
+        }
+        //return ;
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($specId, $spec_value)) {
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($specId, $spec_value))
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+
+    /**
+     * 添加规格值
+     */
+    public function addSpecValue($spec_id, $spec_value)
+    {
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($spec_id, $spec_value)) {
+            return $this->success('', '', [
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($spec_id, $spec_value))
+            return $this->success('', '', [
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+    /**
+     * 添加
+     */
+    public function add()
+    {
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+                    $params[$this->dataLimitField] = $this->auth->id;
+                }
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
+                        $this->model->validate($validate);
+                    }
+                    $result = $this->model->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $this->model->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"));
+                        $this->success();
+                    } else {
+                        $this->error($this->model->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 删除
+     */
+    public function del($ids = "")
+    {
+        if ($ids) {
+            $pk       = $this->model->getPk();
+            $adminIds = $this->getDataLimitAdminIds();
+            if (is_array($adminIds)) {
+                $count = $this->model->where($this->dataLimitField, 'in', $adminIds);
+            }
+            $list  = $this->model->where($pk, 'in', $ids)->select();
+            $count = 0;
+            foreach ($list as $k => $v) {
+                // 删除商品sku
+                $v->removesku();
+
+                $count += $v->delete();
+            }
+            if ($count) {
+                $this->success();
+            } else {
+                $this->error(__('No rows were deleted'));
+            }
+        }
+        $this->error(__('Parameter %s can not be empty', 'ids'));
+    }
+
+    /**
+     * 编辑
+     */
+    public function edit($ids = NULL)
+    {
+        $row = $this->model->get($ids, ['specRel', 'spec', 'spec_rel.spec']);
+        if (!$row)
+            $this->error(__('No Results were found'));
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds)) {
+            if (!in_array($row[$this->dataLimitField], $adminIds)) {
+                $this->error(__('You have no permission'));
+            }
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = basename(str_replace('\\', '/', get_class($this->model)));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : true) : $this->modelValidate;
+                        $row->validate($validate);
+                    }
+                    $result = $row->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $row->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"), true);
+                        // 删除购物车
+                        Db::name('cart')->where('goods_id', $row->goods_id)->delete();
+                        //删除我常买
+                        Db::name('user_buylist')->where('goods_id', $row->goods_id)->delete();
+                        $this->success();
+                    } else {
+                        $this->error($row->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        // 多规格信息
+        $specData = 'null';
+        if ($row['spec_type'] === '20') {
+            $specData = json_encode($this->model->getManySpecData($row['spec_rel'], $row['spec']));
+        }
+        $row['specData'] = $specData;
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
+
+
+    /**
+     * 导出
+     */
+    public function export()
+    {
+        //1.从数据库中导出需要进行要导出的数据
+        $list = Db::name('litestore_goods_spec')->alias('c')
+            ->join('fa_litestore_goods g', 'g.goods_id = c.goods_id', 'LEFT')
+            ->select();
+        $list = collection($list)->toArray();
+        foreach ($list as &$item) {
+            $item['category_name'] = Db::name('litestore_category')->where('id', $item['category_id'])->value('name');
+            if (!empty($item['spec_sku_id'])) {
+                $sku_value = explode('_', $item['spec_sku_id']);
+                if (count($sku_value) > 1) {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $value             = Db::name('litestore_spec_value')->where('id', $sku_value[1])->value('spec_value');
+                    $item['sku_value'] = $key . '_' . $value;
+                } else {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $item['sku_value'] = $key;
+                }
+            } else {
+                $item['sku_value'] = '';
+            }
+        }
+        if (empty($list)) {
+            $this->error('没有可导出的数据');
+        }
+        //重要补助
+        //2.加载PHPExcle类库
+        vendor('PHPExcel.PHPExcel');
+        //3.实例化PHPExcel类
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', '商品ID')
+            ->setCellValue('B1', '商品名称')
+            ->setCellValue('C1', '搜索关键词')
+            ->setCellValue('D1', '分类名称')
+            ->setCellValue('E1', '活动名称(新人用户=1,限时秒杀=2,进口商品=4)')
+            ->setCellValue('F1', '商品规格(10=单规格,20=多规格)')
+            ->setCellValue('G1', '库存')
+            ->setCellValue('H1', '商品规格')
+            ->setCellValue('I1', '商品原价')
+            ->setCellValue('J1', '折扣')
+            ->setCellValue('K1', '商品现价')
+            ->setCellValue('L1', '已销数量')
+            ->setCellValue('M1', '商品状态(10=上架,20=下架)')
+            ->setCellValue('N1', '首页展示(0=未展示,1=已展示)')
+            ->setCellValue('O1', '导出时间');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('M')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('N')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('O')->setWidth(20);
+
+
+        for ($i = 0; $i < count($list); $i++) {
+            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $list[$i]['goods_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $list[$i]['goods_name']);//商品名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $list[$i]['keywords']);//商品规格
+            $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $list[$i]['category_name']);//原价
+            $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $list[$i]['activity_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $list[$i]['spec_type']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $list[$i]['stock_num']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2), $list[$i]['sku_value']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), $list[$i]['line_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), $list[$i]['discount']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('K' . ($i + 2), $list[$i]['goods_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('L' . ($i + 2), $list[$i]['goods_sales']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('M' . ($i + 2), $list[$i]['goods_status']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('N' . ($i + 2), $list[$i]['is_index']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('O' . ($i + 2), datetime(time()));//标签码
+        }
+        ob_end_clean();
+        ob_start();
+        $title = '商品列表';
+        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+        header('Content-Disposition:attachment;filename="' . $title . '.xlsx"');
+        header('Cache-Control: max-age=0');
+        header('Cache-Control: max-age=1');
+        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
+        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
+        header('Pragma: public'); // HTTP/1.0
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        $objWriter->save('php://output'); //文件通过浏览器下载
+        exit();
+    }
+
+    /**
+     *导入
+     *
+     * */
+    public function import()
+    {
+        $file = $this->request->request('file');
+        if (!$file) {
+            $this->error(__('Parameter %s can not be empty', 'file'));
+        }
+        $filePath = ROOT_PATH . DS . 'public' . DS . $file;
+        if (!is_file($filePath)) {
+            $this->error(__('No results were found'));
+        }
+        //实例化reader
+        $ext = pathinfo($filePath, PATHINFO_EXTENSION);
+        if (!in_array($ext, ['csv', 'xls', 'xlsx'])) {
+            $this->error(__('Unknown data format'));
+        }
+        if ($ext === 'csv') {
+            $file     = fopen($filePath, 'r');
+            $filePath = tempnam(sys_get_temp_dir(), 'import_csv');
+            $fp       = fopen($filePath, "w");
+            $n        = 0;
+            while ($line = fgets($file)) {
+                $line     = rtrim($line, "\n\r\0");
+                $encoding = mb_detect_encoding($line, ['utf-8', 'gbk', 'latin1', 'big5']);
+                if ($encoding != 'utf-8') {
+                    $line = mb_convert_encoding($line, 'utf-8', $encoding);
+                }
+                if ($n == 0 || preg_match('/^".*"$/', $line)) {
+                    fwrite($fp, $line . "\n");
+                } else {
+                    fwrite($fp, '"' . str_replace(['"', ','], ['""', '","'], $line) . "\"\n");
+                }
+                $n++;
+            }
+            fclose($file) || fclose($fp);
+            $reader = new Csv();
+        } elseif ($ext === 'xls') {
+            $reader = new Xls();
+        } else {
+            $reader = new Xlsx();
+        }
+        set_time_limit(0);
+        //加载文件
+        $insert = [];
+        try {
+            if (!$PHPExcel = $reader->load($filePath)) {
+                $this->error(__('Unknown data format'));
+            }
+            $currentSheet    = $PHPExcel->getSheet(0);  //读取文件中的第一个工作表
+            $allColumn       = $currentSheet->getHighestDataColumn(); //取得最大的列号
+            $allRow          = $currentSheet->getHighestRow(); //取得一共有多少行
+            $maxColumnNumber = Coordinate::columnIndexFromString($allColumn); // 一共多少列
+            for ($i = 2; $i <= $allRow; $i++) {
+                if (!empty($PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue())) {
+                    $insert[$i]['goods_name']       = $PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();//商品名称
+                    $insert[$i]['keywords']         = $PHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();//关键词
+                    $category                       = $PHPExcel->getActiveSheet()->getCell("C" . $i)->getValue() ?? '';//类别
+                    $insert[$i]['category_id']      = Db::name('litestore_category')->where('name', $category)->value('id') ?? '';
+                    $insert[$i]['activity_id']      = $PHPExcel->getActiveSheet()->getCell("D" . $i)->getValue() ?? '';//活动类型
+                    $insert[$i]['is_index']         = $PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue() ?? '';//是否首页
+                    $insert[$i]['goods_status']     = $PHPExcel->getActiveSheet()->getCell("H" . $i)->getValue() ?? '';//商品状态
+                    $spec_insert[$i]['stock_num']   = $PHPExcel->getActiveSheet()->getCell("E" . $i)->getValue() ?? '';//库存
+                    $spec_insert[$i]['goods_price'] = $PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue() ?? '';//现价
+                    $spec_insert[$i]['line_price']  = $PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue() ?? '';//原价
+                }
+            }
+        } catch (\Exception $exception) {
+            $this->error($exception->getMessage());
+        }
+        if (!$insert) {
+            $this->error(__('No rows were updated'));
+        }
+        try {
+
+            $res_goods = $this->model->saveAll($insert);
+            foreach ($spec_insert as $key => &$v) {
+                $v['goods_id'] = $res_goods[$key]['goods_id'];
+            }
+            unset($v);
+            $this->spec_model->saveAll($spec_insert);
+        } catch (PDOException $exception) {
+            $msg = $exception->getMessage();
+            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
+                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
+            };
+            $this->error($msg);
+        } catch (\Exception $e) {
+            $this->error($e->getMessage());
+        }
+        $this->success();
+    }
+
+
+}
diff --git a/application/admin/controller/activity_goods/NewGoods.php b/application/admin/controller/activity_goods/NewGoods.php
new file mode 100644
index 0000000..f8179ad
--- /dev/null
+++ b/application/admin/controller/activity_goods/NewGoods.php
@@ -0,0 +1,489 @@
+<?php
+
+namespace app\admin\controller\activity_goods;
+
+use app\admin\model\litestore\Litestoregoodsspec;
+use app\common\controller\Backend;
+use app\admin\model\litestore\Litestorespec as SpecModel;
+use app\admin\model\litestore\Litestorespecvalue as SpecValueModel;
+use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
+use PhpOffice\PhpSpreadsheet\Reader\Csv;
+use PhpOffice\PhpSpreadsheet\Reader\Xls;
+use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+use think\Db;
+use think\exception\PDOException;
+
+
+/**
+ *
+ *
+ * @icon fa fa-circle-o
+ */
+class NewGoods extends Backend
+{
+    private $SpecModel;
+    private $SpecValueModel;
+    /**
+     * Litestoregoods模型对象
+     * @var \app\admin\model\litestore\Litestoregoods
+     */
+    protected $model = null;
+    protected $spec_model = null;
+//    protected $searchFields = 'category.name';
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->SpecModel      = new SpecModel;
+        $this->SpecValueModel = new SpecValueModel;
+
+        $this->model      = new \app\admin\model\litestore\Litestoregoods;
+        $this->spec_model = new \app\admin\model\litestore\Litestoregoodsspec();
+        $this->view->assign("specTypeList", $this->model->getSpecTypeList());
+        $this->view->assign("deductStockTypeList", $this->model->getDeductStockTypeList());
+        $this->view->assign("goodsStatusList", $this->model->getGoodsStatusList());
+        $this->view->assign("isDeleteList", $this->model->getIsDeleteList());
+        $this->view->assign("makeforList", $this->model->getMakeforList());
+        $this->view->assign("isIndexList", $this->model->getIsIndexList());
+
+        $this->view->assign("spec_attr", '');
+        $this->view->assign("spec_list", '');
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams("category.name",true);
+            $total = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',1)
+                ->order($sort, $order)
+                ->count();
+
+            $list = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',1)
+                ->order($sort, $order)
+                ->limit($offset, $limit)
+                ->select();
+
+            foreach ($list as $row) {
+
+                $row->getRelation('category')->visible(['name']);
+                $row->getRelation('activity')->visible(['name']);
+//				$row->getRelation('freight')->visible(['name']);
+                $row->stock_num = Litestoregoodsspec::where('goods_id', $row['goods_id'])->sum('stock_num');
+            }
+            $list   = collection($list)->toArray();
+            $result = array("total" => $total, "rows" => $list);
+
+            return json($result);
+        }
+        $this->assign('template', $this->request->domain() . '/static/template/商品导入模板.xlsx');
+
+        return $this->view->fetch();
+    }
+
+    public function addSpec($spec_name, $spec_value)
+    {
+        // 判断规格组是否存在
+        if (!$specId = $this->SpecModel->getSpecIdByName($spec_name)) {
+            // 新增规格组and规则值
+            if ($this->SpecModel->add($spec_name)
+                && $this->SpecValueModel->add($this->SpecModel['id'], $spec_value))
+                return $this->success('', '', [
+                    'spec_id'       => (int)$this->SpecModel['id'],
+                    'spec_value_id' => (int)$this->SpecValueModel['id'],
+                ]);
+            return $this->error();
+        }
+        //return ;
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($specId, $spec_value)) {
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($specId, $spec_value))
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+
+    /**
+     * 添加规格值
+     */
+    public function addSpecValue($spec_id, $spec_value)
+    {
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($spec_id, $spec_value)) {
+            return $this->success('', '', [
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($spec_id, $spec_value))
+            return $this->success('', '', [
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+    /**
+     * 添加
+     */
+    public function add()
+    {
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+                    $params[$this->dataLimitField] = $this->auth->id;
+                }
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
+                        $this->model->validate($validate);
+                    }
+                    $result = $this->model->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $this->model->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"));
+                        $this->success();
+                    } else {
+                        $this->error($this->model->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 删除
+     */
+    public function del($ids = "")
+    {
+        if ($ids) {
+            $pk       = $this->model->getPk();
+            $adminIds = $this->getDataLimitAdminIds();
+            if (is_array($adminIds)) {
+                $count = $this->model->where($this->dataLimitField, 'in', $adminIds);
+            }
+            $list  = $this->model->where($pk, 'in', $ids)->select();
+            $count = 0;
+            foreach ($list as $k => $v) {
+                // 删除商品sku
+                $v->removesku();
+
+                $count += $v->delete();
+            }
+            if ($count) {
+                $this->success();
+            } else {
+                $this->error(__('No rows were deleted'));
+            }
+        }
+        $this->error(__('Parameter %s can not be empty', 'ids'));
+    }
+
+    /**
+     * 编辑
+     */
+    public function edit($ids = NULL)
+    {
+        $row = $this->model->get($ids, ['specRel', 'spec', 'spec_rel.spec']);
+        if (!$row)
+            $this->error(__('No Results were found'));
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds)) {
+            if (!in_array($row[$this->dataLimitField], $adminIds)) {
+                $this->error(__('You have no permission'));
+            }
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = basename(str_replace('\\', '/', get_class($this->model)));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : true) : $this->modelValidate;
+                        $row->validate($validate);
+                    }
+                    $result = $row->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $row->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"), true);
+                        // 删除购物车
+                        Db::name('cart')->where('goods_id', $row->goods_id)->delete();
+                        //删除我常买
+                        Db::name('user_buylist')->where('goods_id', $row->goods_id)->delete();
+                        $this->success();
+                    } else {
+                        $this->error($row->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        // 多规格信息
+        $specData = 'null';
+        if ($row['spec_type'] === '20') {
+            $specData = json_encode($this->model->getManySpecData($row['spec_rel'], $row['spec']));
+        }
+        $row['specData'] = $specData;
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
+
+
+    /**
+     * 导出
+     */
+    public function export()
+    {
+        //1.从数据库中导出需要进行要导出的数据
+        $list = Db::name('litestore_goods_spec')->alias('c')
+            ->join('fa_litestore_goods g', 'g.goods_id = c.goods_id', 'LEFT')
+            ->select();
+        $list = collection($list)->toArray();
+        foreach ($list as &$item) {
+            $item['category_name'] = Db::name('litestore_category')->where('id', $item['category_id'])->value('name');
+            if (!empty($item['spec_sku_id'])) {
+                $sku_value = explode('_', $item['spec_sku_id']);
+                if (count($sku_value) > 1) {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $value             = Db::name('litestore_spec_value')->where('id', $sku_value[1])->value('spec_value');
+                    $item['sku_value'] = $key . '_' . $value;
+                } else {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $item['sku_value'] = $key;
+                }
+            } else {
+                $item['sku_value'] = '';
+            }
+        }
+        if (empty($list)) {
+            $this->error('没有可导出的数据');
+        }
+        //重要补助
+        //2.加载PHPExcle类库
+        vendor('PHPExcel.PHPExcel');
+        //3.实例化PHPExcel类
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', '商品ID')
+            ->setCellValue('B1', '商品名称')
+            ->setCellValue('C1', '搜索关键词')
+            ->setCellValue('D1', '分类名称')
+            ->setCellValue('E1', '活动名称(新人用户=1,限时秒杀=2,进口商品=4)')
+            ->setCellValue('F1', '商品规格(10=单规格,20=多规格)')
+            ->setCellValue('G1', '库存')
+            ->setCellValue('H1', '商品规格')
+            ->setCellValue('I1', '商品原价')
+            ->setCellValue('J1', '折扣')
+            ->setCellValue('K1', '商品现价')
+            ->setCellValue('L1', '已销数量')
+            ->setCellValue('M1', '商品状态(10=上架,20=下架)')
+            ->setCellValue('N1', '首页展示(0=未展示,1=已展示)')
+            ->setCellValue('O1', '导出时间');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('M')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('N')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('O')->setWidth(20);
+
+
+        for ($i = 0; $i < count($list); $i++) {
+            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $list[$i]['goods_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $list[$i]['goods_name']);//商品名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $list[$i]['keywords']);//商品规格
+            $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $list[$i]['category_name']);//原价
+            $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $list[$i]['activity_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $list[$i]['spec_type']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $list[$i]['stock_num']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2), $list[$i]['sku_value']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), $list[$i]['line_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), $list[$i]['discount']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('K' . ($i + 2), $list[$i]['goods_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('L' . ($i + 2), $list[$i]['goods_sales']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('M' . ($i + 2), $list[$i]['goods_status']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('N' . ($i + 2), $list[$i]['is_index']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('O' . ($i + 2), datetime(time()));//标签码
+        }
+        ob_end_clean();
+        ob_start();
+        $title = '商品列表';
+        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+        header('Content-Disposition:attachment;filename="' . $title . '.xlsx"');
+        header('Cache-Control: max-age=0');
+        header('Cache-Control: max-age=1');
+        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
+        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
+        header('Pragma: public'); // HTTP/1.0
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        $objWriter->save('php://output'); //文件通过浏览器下载
+        exit();
+    }
+
+    /**
+     *导入
+     *
+     * */
+    public function import()
+    {
+        $file = $this->request->request('file');
+        if (!$file) {
+            $this->error(__('Parameter %s can not be empty', 'file'));
+        }
+        $filePath = ROOT_PATH . DS . 'public' . DS . $file;
+        if (!is_file($filePath)) {
+            $this->error(__('No results were found'));
+        }
+        //实例化reader
+        $ext = pathinfo($filePath, PATHINFO_EXTENSION);
+        if (!in_array($ext, ['csv', 'xls', 'xlsx'])) {
+            $this->error(__('Unknown data format'));
+        }
+        if ($ext === 'csv') {
+            $file     = fopen($filePath, 'r');
+            $filePath = tempnam(sys_get_temp_dir(), 'import_csv');
+            $fp       = fopen($filePath, "w");
+            $n        = 0;
+            while ($line = fgets($file)) {
+                $line     = rtrim($line, "\n\r\0");
+                $encoding = mb_detect_encoding($line, ['utf-8', 'gbk', 'latin1', 'big5']);
+                if ($encoding != 'utf-8') {
+                    $line = mb_convert_encoding($line, 'utf-8', $encoding);
+                }
+                if ($n == 0 || preg_match('/^".*"$/', $line)) {
+                    fwrite($fp, $line . "\n");
+                } else {
+                    fwrite($fp, '"' . str_replace(['"', ','], ['""', '","'], $line) . "\"\n");
+                }
+                $n++;
+            }
+            fclose($file) || fclose($fp);
+            $reader = new Csv();
+        } elseif ($ext === 'xls') {
+            $reader = new Xls();
+        } else {
+            $reader = new Xlsx();
+        }
+        set_time_limit(0);
+        //加载文件
+        $insert = [];
+        try {
+            if (!$PHPExcel = $reader->load($filePath)) {
+                $this->error(__('Unknown data format'));
+            }
+            $currentSheet    = $PHPExcel->getSheet(0);  //读取文件中的第一个工作表
+            $allColumn       = $currentSheet->getHighestDataColumn(); //取得最大的列号
+            $allRow          = $currentSheet->getHighestRow(); //取得一共有多少行
+            $maxColumnNumber = Coordinate::columnIndexFromString($allColumn); // 一共多少列
+            for ($i = 2; $i <= $allRow; $i++) {
+                if (!empty($PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue())) {
+                    $insert[$i]['goods_name']       = $PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();//商品名称
+                    $insert[$i]['keywords']         = $PHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();//关键词
+                    $category                       = $PHPExcel->getActiveSheet()->getCell("C" . $i)->getValue() ?? '';//类别
+                    $insert[$i]['category_id']      = Db::name('litestore_category')->where('name', $category)->value('id') ?? '';
+                    $insert[$i]['activity_id']      = $PHPExcel->getActiveSheet()->getCell("D" . $i)->getValue() ?? '';//活动类型
+                    $insert[$i]['is_index']         = $PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue() ?? '';//是否首页
+                    $insert[$i]['goods_status']     = $PHPExcel->getActiveSheet()->getCell("H" . $i)->getValue() ?? '';//商品状态
+                    $spec_insert[$i]['stock_num']   = $PHPExcel->getActiveSheet()->getCell("E" . $i)->getValue() ?? '';//库存
+                    $spec_insert[$i]['goods_price'] = $PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue() ?? '';//现价
+                    $spec_insert[$i]['line_price']  = $PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue() ?? '';//原价
+                }
+            }
+        } catch (\Exception $exception) {
+            $this->error($exception->getMessage());
+        }
+        if (!$insert) {
+            $this->error(__('No rows were updated'));
+        }
+        try {
+
+            $res_goods = $this->model->saveAll($insert);
+            foreach ($spec_insert as $key => &$v) {
+                $v['goods_id'] = $res_goods[$key]['goods_id'];
+            }
+            unset($v);
+            $this->spec_model->saveAll($spec_insert);
+        } catch (PDOException $exception) {
+            $msg = $exception->getMessage();
+            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
+                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
+            };
+            $this->error($msg);
+        } catch (\Exception $e) {
+            $this->error($e->getMessage());
+        }
+        $this->success();
+    }
+
+
+}
diff --git a/application/admin/controller/activity_goods/SeckillGoods.php b/application/admin/controller/activity_goods/SeckillGoods.php
new file mode 100644
index 0000000..babfc4f
--- /dev/null
+++ b/application/admin/controller/activity_goods/SeckillGoods.php
@@ -0,0 +1,490 @@
+<?php
+
+namespace app\admin\controller\activity_goods;
+
+use app\admin\model\litestore\Litestoregoodsspec;
+use app\common\controller\Backend;
+use app\admin\model\litestore\Litestorespec as SpecModel;
+use app\admin\model\litestore\Litestorespecvalue as SpecValueModel;
+use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
+use PhpOffice\PhpSpreadsheet\Reader\Csv;
+use PhpOffice\PhpSpreadsheet\Reader\Xls;
+use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+use think\Db;
+use think\exception\PDOException;
+
+
+/**
+ *
+ *
+ * @icon fa fa-circle-o
+ */
+class SeckillGoods extends Backend
+{
+    private $SpecModel;
+    private $SpecValueModel;
+    /**
+     * Litestoregoods模型对象
+     * @var \app\admin\model\litestore\Litestoregoods
+     */
+    protected $model = null;
+    protected $spec_model = null;
+
+//    protected $searchFields = 'category.name';
+
+    public function _initialize()
+    {
+        parent::_initialize();
+        $this->SpecModel      = new SpecModel;
+        $this->SpecValueModel = new SpecValueModel;
+
+        $this->model      = new \app\admin\model\litestore\Litestoregoods;
+        $this->spec_model = new \app\admin\model\litestore\Litestoregoodsspec();
+        $this->view->assign("specTypeList", $this->model->getSpecTypeList());
+        $this->view->assign("deductStockTypeList", $this->model->getDeductStockTypeList());
+        $this->view->assign("goodsStatusList", $this->model->getGoodsStatusList());
+        $this->view->assign("isDeleteList", $this->model->getIsDeleteList());
+        $this->view->assign("makeforList", $this->model->getMakeforList());
+        $this->view->assign("isIndexList", $this->model->getIsIndexList());
+
+        $this->view->assign("spec_attr", '');
+        $this->view->assign("spec_list", '');
+    }
+
+    /**
+     * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
+     * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
+     * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
+     */
+
+
+    /**
+     * 查看
+     */
+    public function index()
+    {
+        //当前是否为关联查询
+        $this->relationSearch = true;
+        //设置过滤方法
+        $this->request->filter(['strip_tags']);
+        if ($this->request->isAjax()) {
+            //如果发送的来源是Selectpage,则转发到Selectpage
+            if ($this->request->request('keyField')) {
+                return $this->selectpage();
+            }
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams("category.name", true);
+            $total = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',2)
+                ->order($sort, $order)
+                ->count();
+
+            $list = $this->model
+                ->with(['category', 'activity'])
+                ->where($where)
+                ->where('activity_id',2)
+                ->order($sort, $order)
+                ->limit($offset, $limit)
+                ->select();
+
+            foreach ($list as $row) {
+
+                $row->getRelation('category')->visible(['name']);
+                $row->getRelation('activity')->visible(['name']);
+//				$row->getRelation('freight')->visible(['name']);
+                $row->stock_num = Litestoregoodsspec::where('goods_id', $row['goods_id'])->sum('stock_num');
+            }
+            $list   = collection($list)->toArray();
+            $result = array("total" => $total, "rows" => $list);
+
+            return json($result);
+        }
+        $this->assign('template', $this->request->domain() . '/static/template/商品导入模板.xlsx');
+
+        return $this->view->fetch();
+    }
+
+    public function addSpec($spec_name, $spec_value)
+    {
+        // 判断规格组是否存在
+        if (!$specId = $this->SpecModel->getSpecIdByName($spec_name)) {
+            // 新增规格组and规则值
+            if ($this->SpecModel->add($spec_name)
+                && $this->SpecValueModel->add($this->SpecModel['id'], $spec_value))
+                return $this->success('', '', [
+                    'spec_id'       => (int)$this->SpecModel['id'],
+                    'spec_value_id' => (int)$this->SpecValueModel['id'],
+                ]);
+            return $this->error();
+        }
+        //return ;
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($specId, $spec_value)) {
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($specId, $spec_value))
+            return $this->success('', '', [
+                'spec_id'       => (int)$specId,
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+
+    /**
+     * 添加规格值
+     */
+    public function addSpecValue($spec_id, $spec_value)
+    {
+        // 判断规格值是否存在
+        if ($specValueId = $this->SpecValueModel->getSpecValueIdByName($spec_id, $spec_value)) {
+            return $this->success('', '', [
+                'spec_value_id' => (int)$specValueId,
+            ]);
+        }
+        // 添加规则值
+        if ($this->SpecValueModel->add($spec_id, $spec_value))
+            return $this->success('', '', [
+                'spec_value_id' => (int)$this->SpecValueModel['id'],
+            ]);
+        return $this->error();
+    }
+
+    /**
+     * 添加
+     */
+    public function add()
+    {
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($this->dataLimit && $this->dataLimitFieldAutoFill) {
+                    $params[$this->dataLimitField] = $this->auth->id;
+                }
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = str_replace("\\model\\", "\\validate\\", get_class($this->model));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : true) : $this->modelValidate;
+                        $this->model->validate($validate);
+                    }
+                    $result = $this->model->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $this->model->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"));
+                        $this->success();
+                    } else {
+                        $this->error($this->model->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        return $this->view->fetch();
+    }
+
+    /**
+     * 删除
+     */
+    public function del($ids = "")
+    {
+        if ($ids) {
+            $pk       = $this->model->getPk();
+            $adminIds = $this->getDataLimitAdminIds();
+            if (is_array($adminIds)) {
+                $count = $this->model->where($this->dataLimitField, 'in', $adminIds);
+            }
+            $list  = $this->model->where($pk, 'in', $ids)->select();
+            $count = 0;
+            foreach ($list as $k => $v) {
+                // 删除商品sku
+                $v->removesku();
+
+                $count += $v->delete();
+            }
+            if ($count) {
+                $this->success();
+            } else {
+                $this->error(__('No rows were deleted'));
+            }
+        }
+        $this->error(__('Parameter %s can not be empty', 'ids'));
+    }
+
+    /**
+     * 编辑
+     */
+    public function edit($ids = NULL)
+    {
+        $row = $this->model->get($ids, ['specRel', 'spec', 'spec_rel.spec']);
+        if (!$row)
+            $this->error(__('No Results were found'));
+        $adminIds = $this->getDataLimitAdminIds();
+        if (is_array($adminIds)) {
+            if (!in_array($row[$this->dataLimitField], $adminIds)) {
+                $this->error(__('You have no permission'));
+            }
+        }
+        if ($this->request->isPost()) {
+            $params = $this->request->post("row/a");
+            if ($params) {
+                if ($params['spec_type'] == '20' && !$this->request->post("spec_many/a")) {
+                    $this->error('请添加规格');
+                }
+                try {
+                    //是否采用模型验证
+                    if ($this->modelValidate) {
+                        $name     = basename(str_replace('\\', '/', get_class($this->model)));
+                        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : true) : $this->modelValidate;
+                        $row->validate($validate);
+                    }
+                    $result = $row->allowField(true)->save($params);
+                    if ($result !== false) {
+                        //成功之后 存储商品规格
+                        $spec_many_params = $this->request->post("spec_many/a");
+                        $row->addGoodsSpec($params, $spec_many_params, $this->request->post("spec/a"), true);
+                        // 删除购物车
+                        Db::name('cart')->where('goods_id', $row->goods_id)->delete();
+                        //删除我常买
+                        Db::name('user_buylist')->where('goods_id', $row->goods_id)->delete();
+                        $this->success();
+                    } else {
+                        $this->error($row->getError());
+                    }
+                } catch (\think\exception\PDOException $e) {
+                    $this->error($e->getMessage());
+                } catch (\think\Exception $e) {
+                    $this->error($e->getMessage());
+                }
+            }
+            $this->error(__('Parameter %s can not be empty', ''));
+        }
+        // 多规格信息
+        $specData = 'null';
+        if ($row['spec_type'] === '20') {
+            $specData = json_encode($this->model->getManySpecData($row['spec_rel'], $row['spec']));
+        }
+        $row['specData'] = $specData;
+        $this->view->assign("row", $row);
+        return $this->view->fetch();
+    }
+
+
+    /**
+     * 导出
+     */
+    public function export()
+    {
+        //1.从数据库中导出需要进行要导出的数据
+        $list = Db::name('litestore_goods_spec')->alias('c')
+            ->join('fa_litestore_goods g', 'g.goods_id = c.goods_id', 'LEFT')
+            ->select();
+        $list = collection($list)->toArray();
+        foreach ($list as &$item) {
+            $item['category_name'] = Db::name('litestore_category')->where('id', $item['category_id'])->value('name');
+            if (!empty($item['spec_sku_id'])) {
+                $sku_value = explode('_', $item['spec_sku_id']);
+                if (count($sku_value) > 1) {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $value             = Db::name('litestore_spec_value')->where('id', $sku_value[1])->value('spec_value');
+                    $item['sku_value'] = $key . '_' . $value;
+                } else {
+                    $key               = Db::name('litestore_spec_value')->where('id', $sku_value[0])->value('spec_value');
+                    $item['sku_value'] = $key;
+                }
+            } else {
+                $item['sku_value'] = '';
+            }
+        }
+        if (empty($list)) {
+            $this->error('没有可导出的数据');
+        }
+        //重要补助
+        //2.加载PHPExcle类库
+        vendor('PHPExcel.PHPExcel');
+        //3.实例化PHPExcel类
+        $objPHPExcel = new \PHPExcel();
+        //4.激活当前的sheet表
+        $objPHPExcel->setActiveSheetIndex(0);
+        //5.设置表格头(即excel表格的第一行)
+        $objPHPExcel->setActiveSheetIndex(0)
+            ->setCellValue('A1', '商品ID')
+            ->setCellValue('B1', '商品名称')
+            ->setCellValue('C1', '搜索关键词')
+            ->setCellValue('D1', '分类名称')
+            ->setCellValue('E1', '活动名称(新人用户=1,限时秒杀=2,进口商品=4)')
+            ->setCellValue('F1', '商品规格(10=单规格,20=多规格)')
+            ->setCellValue('G1', '库存')
+            ->setCellValue('H1', '商品规格')
+            ->setCellValue('I1', '商品原价')
+            ->setCellValue('J1', '折扣')
+            ->setCellValue('K1', '商品现价')
+            ->setCellValue('L1', '已销数量')
+            ->setCellValue('M1', '商品状态(10=上架,20=下架)')
+            ->setCellValue('N1', '首页展示(0=未展示,1=已展示)')
+            ->setCellValue('O1', '导出时间');
+        //设置A列水平居中
+        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
+            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
+        //设置单元格宽度
+        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('I')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('J')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('K')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('L')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('M')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('N')->setWidth(20);
+        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('O')->setWidth(20);
+
+
+        for ($i = 0; $i < count($list); $i++) {
+            $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $list[$i]['goods_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $list[$i]['goods_name']);//商品名称
+            $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $list[$i]['keywords']);//商品规格
+            $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $list[$i]['category_name']);//原价
+            $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $list[$i]['activity_id']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $list[$i]['spec_type']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $list[$i]['stock_num']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2), $list[$i]['sku_value']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 2), $list[$i]['line_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 2), $list[$i]['discount']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('K' . ($i + 2), $list[$i]['goods_price']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('L' . ($i + 2), $list[$i]['goods_sales']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('M' . ($i + 2), $list[$i]['goods_status']);//ID
+            $objPHPExcel->getActiveSheet()->setCellValue('N' . ($i + 2), $list[$i]['is_index']);//标签码
+            $objPHPExcel->getActiveSheet()->setCellValue('O' . ($i + 2), datetime(time()));//标签码
+        }
+        ob_end_clean();
+        ob_start();
+        $title = '商品列表';
+        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+        header('Content-Disposition:attachment;filename="' . $title . '.xlsx"');
+        header('Cache-Control: max-age=0');
+        header('Cache-Control: max-age=1');
+        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
+        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
+        header('Pragma: public'); // HTTP/1.0
+        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
+        $objWriter->save('php://output'); //文件通过浏览器下载
+        exit();
+    }
+
+    /**
+     *导入
+     *
+     * */
+    public function import()
+    {
+        $file = $this->request->request('file');
+        if (!$file) {
+            $this->error(__('Parameter %s can not be empty', 'file'));
+        }
+        $filePath = ROOT_PATH . DS . 'public' . DS . $file;
+        if (!is_file($filePath)) {
+            $this->error(__('No results were found'));
+        }
+        //实例化reader
+        $ext = pathinfo($filePath, PATHINFO_EXTENSION);
+        if (!in_array($ext, ['csv', 'xls', 'xlsx'])) {
+            $this->error(__('Unknown data format'));
+        }
+        if ($ext === 'csv') {
+            $file     = fopen($filePath, 'r');
+            $filePath = tempnam(sys_get_temp_dir(), 'import_csv');
+            $fp       = fopen($filePath, "w");
+            $n        = 0;
+            while ($line = fgets($file)) {
+                $line     = rtrim($line, "\n\r\0");
+                $encoding = mb_detect_encoding($line, ['utf-8', 'gbk', 'latin1', 'big5']);
+                if ($encoding != 'utf-8') {
+                    $line = mb_convert_encoding($line, 'utf-8', $encoding);
+                }
+                if ($n == 0 || preg_match('/^".*"$/', $line)) {
+                    fwrite($fp, $line . "\n");
+                } else {
+                    fwrite($fp, '"' . str_replace(['"', ','], ['""', '","'], $line) . "\"\n");
+                }
+                $n++;
+            }
+            fclose($file) || fclose($fp);
+            $reader = new Csv();
+        } elseif ($ext === 'xls') {
+            $reader = new Xls();
+        } else {
+            $reader = new Xlsx();
+        }
+        set_time_limit(0);
+        //加载文件
+        $insert = [];
+        try {
+            if (!$PHPExcel = $reader->load($filePath)) {
+                $this->error(__('Unknown data format'));
+            }
+            $currentSheet    = $PHPExcel->getSheet(0);  //读取文件中的第一个工作表
+            $allColumn       = $currentSheet->getHighestDataColumn(); //取得最大的列号
+            $allRow          = $currentSheet->getHighestRow(); //取得一共有多少行
+            $maxColumnNumber = Coordinate::columnIndexFromString($allColumn); // 一共多少列
+            for ($i = 2; $i <= $allRow; $i++) {
+                if (!empty($PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue())) {
+                    $insert[$i]['goods_name']       = $PHPExcel->getActiveSheet()->getCell("A" . $i)->getValue();//商品名称
+                    $insert[$i]['keywords']         = $PHPExcel->getActiveSheet()->getCell("B" . $i)->getValue();//关键词
+                    $category                       = $PHPExcel->getActiveSheet()->getCell("C" . $i)->getValue() ?? '';//类别
+                    $insert[$i]['category_id']      = Db::name('litestore_category')->where('name', $category)->value('id') ?? '';
+                    $insert[$i]['activity_id']      = $PHPExcel->getActiveSheet()->getCell("D" . $i)->getValue() ?? '';//活动类型
+                    $insert[$i]['is_index']         = $PHPExcel->getActiveSheet()->getCell("I" . $i)->getValue() ?? '';//是否首页
+                    $insert[$i]['goods_status']     = $PHPExcel->getActiveSheet()->getCell("H" . $i)->getValue() ?? '';//商品状态
+                    $spec_insert[$i]['stock_num']   = $PHPExcel->getActiveSheet()->getCell("E" . $i)->getValue() ?? '';//库存
+                    $spec_insert[$i]['goods_price'] = $PHPExcel->getActiveSheet()->getCell("G" . $i)->getValue() ?? '';//现价
+                    $spec_insert[$i]['line_price']  = $PHPExcel->getActiveSheet()->getCell("F" . $i)->getValue() ?? '';//原价
+                }
+            }
+        } catch (\Exception $exception) {
+            $this->error($exception->getMessage());
+        }
+        if (!$insert) {
+            $this->error(__('No rows were updated'));
+        }
+        try {
+
+            $res_goods = $this->model->saveAll($insert);
+            foreach ($spec_insert as $key => &$v) {
+                $v['goods_id'] = $res_goods[$key]['goods_id'];
+            }
+            unset($v);
+            $this->spec_model->saveAll($spec_insert);
+        } catch (PDOException $exception) {
+            $msg = $exception->getMessage();
+            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
+                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
+            };
+            $this->error($msg);
+        } catch (\Exception $e) {
+            $this->error($e->getMessage());
+        }
+        $this->success();
+    }
+
+
+}
diff --git a/application/admin/controller/litestore/Litestoregoods.php b/application/admin/controller/litestore/Litestoregoods.php
index 096114c..348e1cb 100644
--- a/application/admin/controller/litestore/Litestoregoods.php
+++ b/application/admin/controller/litestore/Litestoregoods.php
@@ -29,6 +29,7 @@ class Litestoregoods extends Backend
      */
     protected $model = null;
     protected $spec_model = null;
+
 //    protected $searchFields = 'category.name';
 
     public function _initialize()
@@ -71,7 +72,7 @@ class Litestoregoods extends Backend
             if ($this->request->request('keyField')) {
                 return $this->selectpage();
             }
-            list($where, $sort, $order, $offset, $limit) = $this->buildparams("category.name",true);
+            list($where, $sort, $order, $offset, $limit) = $this->buildparams("category.name", true);
             $total = $this->model
                 ->with(['category', 'activity'])
                 ->where($where)
@@ -483,5 +484,19 @@ class Litestoregoods extends Backend
         $this->success();
     }
 
-
+    /**
+     * 批量设置折扣
+     */
+    public function discount()
+    {
+        //接收所选商品id集
+        $goods_ids = $this->request->get('id');
+        $goods_ids = explode(',', $goods_ids);
+        //接收所设置的折扣
+        $discount = $this->request->get('discount');
+        foreach ($goods_ids as &$v) {
+            Db::name('litestore_goods_spec')->where('goods_id', $v)->update(['discount' => $discount]);
+        }
+        $this->success('设置成功');
+    }
 }
diff --git a/application/admin/lang/zh-cn/activity_goods/import_goods.php b/application/admin/lang/zh-cn/activity_goods/import_goods.php
new file mode 100644
index 0000000..52fdc59
--- /dev/null
+++ b/application/admin/lang/zh-cn/activity_goods/import_goods.php
@@ -0,0 +1,47 @@
+<?php
+
+return [
+    'Goods_id'             => 'ID',
+    'Goods_name'           => '商品名称',
+    'Category_id'          => '商品类别',
+    'Image'                => '商品封面',
+    'Images'               => '商品轮播图片',
+    'Spec_type'            => '商品规格',
+    'Spec_type 10'         => '单规格',
+    'Spec_type 20'         => '多规格',
+    'Deduct_stock_type'    => '库存计算方式',
+    'Deduct_stock_type 10' => '下单减库存',
+    'Deduct_stock_type 20' => '付款减库存',
+    'Content'              => '描述详情',
+    'Sales_initial'        => '初始销量',
+    'Sales_actual'         => '实际销量',
+    'Goods_sort'           => '权重',
+    'Delivery_id'          => '运费模板ID',
+    'Goods_status'         => '商品状态',
+    'Goods_status 10'      => '上架',
+    'Goods_status 20'      => '下架',
+    'Is_delete'            => '是否删除',
+    'Is_delete 0'          => '未删除',
+    'Is_delete 1'          => '已删除',
+    'Createtime'           => '创建时间',
+    'Updatetime'           => '更新时间',
+    'Category.name'        => '分类名称',
+    'Activity.name'        => '活动名称',
+    'Freight.name'         => '运费模版名称',
+    'Makefor'              => '产地',
+    'Makefor 1'            => '国产',
+    'Makefor 2'            => '进口',
+    'Number'               => '编号',
+    'Keep'                 => '保存条件',
+    'Packing'              => '包装方式',
+    'Brand'                => '品牌',
+    'Four_images'          => '四宫格图',
+    'Down_image'           => '底部图',
+    'Detail_images'        => '详情图',
+    'Is_index'             => '首页展示',
+    'Is_index 1'           => '已展示',
+    'Is_index 0'           => '未展示',
+    'Activity_id'          => '活动类型',
+    'Price_description'    => '价格说明',
+    'Keywords'             => '搜索关键词',
+];
diff --git a/application/admin/lang/zh-cn/activity_goods/new_goods.php b/application/admin/lang/zh-cn/activity_goods/new_goods.php
new file mode 100644
index 0000000..52fdc59
--- /dev/null
+++ b/application/admin/lang/zh-cn/activity_goods/new_goods.php
@@ -0,0 +1,47 @@
+<?php
+
+return [
+    'Goods_id'             => 'ID',
+    'Goods_name'           => '商品名称',
+    'Category_id'          => '商品类别',
+    'Image'                => '商品封面',
+    'Images'               => '商品轮播图片',
+    'Spec_type'            => '商品规格',
+    'Spec_type 10'         => '单规格',
+    'Spec_type 20'         => '多规格',
+    'Deduct_stock_type'    => '库存计算方式',
+    'Deduct_stock_type 10' => '下单减库存',
+    'Deduct_stock_type 20' => '付款减库存',
+    'Content'              => '描述详情',
+    'Sales_initial'        => '初始销量',
+    'Sales_actual'         => '实际销量',
+    'Goods_sort'           => '权重',
+    'Delivery_id'          => '运费模板ID',
+    'Goods_status'         => '商品状态',
+    'Goods_status 10'      => '上架',
+    'Goods_status 20'      => '下架',
+    'Is_delete'            => '是否删除',
+    'Is_delete 0'          => '未删除',
+    'Is_delete 1'          => '已删除',
+    'Createtime'           => '创建时间',
+    'Updatetime'           => '更新时间',
+    'Category.name'        => '分类名称',
+    'Activity.name'        => '活动名称',
+    'Freight.name'         => '运费模版名称',
+    'Makefor'              => '产地',
+    'Makefor 1'            => '国产',
+    'Makefor 2'            => '进口',
+    'Number'               => '编号',
+    'Keep'                 => '保存条件',
+    'Packing'              => '包装方式',
+    'Brand'                => '品牌',
+    'Four_images'          => '四宫格图',
+    'Down_image'           => '底部图',
+    'Detail_images'        => '详情图',
+    'Is_index'             => '首页展示',
+    'Is_index 1'           => '已展示',
+    'Is_index 0'           => '未展示',
+    'Activity_id'          => '活动类型',
+    'Price_description'    => '价格说明',
+    'Keywords'             => '搜索关键词',
+];
diff --git a/application/admin/lang/zh-cn/activity_goods/seckill_goods.php b/application/admin/lang/zh-cn/activity_goods/seckill_goods.php
new file mode 100644
index 0000000..52fdc59
--- /dev/null
+++ b/application/admin/lang/zh-cn/activity_goods/seckill_goods.php
@@ -0,0 +1,47 @@
+<?php
+
+return [
+    'Goods_id'             => 'ID',
+    'Goods_name'           => '商品名称',
+    'Category_id'          => '商品类别',
+    'Image'                => '商品封面',
+    'Images'               => '商品轮播图片',
+    'Spec_type'            => '商品规格',
+    'Spec_type 10'         => '单规格',
+    'Spec_type 20'         => '多规格',
+    'Deduct_stock_type'    => '库存计算方式',
+    'Deduct_stock_type 10' => '下单减库存',
+    'Deduct_stock_type 20' => '付款减库存',
+    'Content'              => '描述详情',
+    'Sales_initial'        => '初始销量',
+    'Sales_actual'         => '实际销量',
+    'Goods_sort'           => '权重',
+    'Delivery_id'          => '运费模板ID',
+    'Goods_status'         => '商品状态',
+    'Goods_status 10'      => '上架',
+    'Goods_status 20'      => '下架',
+    'Is_delete'            => '是否删除',
+    'Is_delete 0'          => '未删除',
+    'Is_delete 1'          => '已删除',
+    'Createtime'           => '创建时间',
+    'Updatetime'           => '更新时间',
+    'Category.name'        => '分类名称',
+    'Activity.name'        => '活动名称',
+    'Freight.name'         => '运费模版名称',
+    'Makefor'              => '产地',
+    'Makefor 1'            => '国产',
+    'Makefor 2'            => '进口',
+    'Number'               => '编号',
+    'Keep'                 => '保存条件',
+    'Packing'              => '包装方式',
+    'Brand'                => '品牌',
+    'Four_images'          => '四宫格图',
+    'Down_image'           => '底部图',
+    'Detail_images'        => '详情图',
+    'Is_index'             => '首页展示',
+    'Is_index 1'           => '已展示',
+    'Is_index 0'           => '未展示',
+    'Activity_id'          => '活动类型',
+    'Price_description'    => '价格说明',
+    'Keywords'             => '搜索关键词',
+];
diff --git a/application/admin/model/litestore/Litestoregoods.php b/application/admin/model/litestore/Litestoregoods.php
index 1b366f1..090f3f9 100644
--- a/application/admin/model/litestore/Litestoregoods.php
+++ b/application/admin/model/litestore/Litestoregoods.php
@@ -153,8 +153,8 @@ class Litestoregoods extends Model
         $isUpdate && $model->removeAll($this['goods_id']);
         // 添加规格数据
         if ($data['spec_type'] === '10') {
-            // 单规格
-            $specparams['discount'] = (round($specparams['goods_price'] / $specparams['line_price'], 2) * 10) . '折';
+//            // 单规格
+//            $specparams['discount'] = (round($specparams['goods_price'] / $specparams['line_price'], 2) * 10) . '折';
             $this->spec()->save($specparams);
         } else if ($data['spec_type'] === '20') {
             // 添加商品与规格关系记录
diff --git a/application/admin/model/litestore/Litestoregoodsspec.php b/application/admin/model/litestore/Litestoregoodsspec.php
index 59201f1..2e5bd2e 100644
--- a/application/admin/model/litestore/Litestoregoodsspec.php
+++ b/application/admin/model/litestore/Litestoregoodsspec.php
@@ -31,7 +31,7 @@ class Litestoregoodsspec extends Model
             $data[] = array_merge($item['form'], [
                 'spec_sku_id' => $item['spec_sku_id'],
                 'goods_id'    => $goods_id,
-                'discount'    => (round($item['form']['goods_price'] / $item['form']['line_price'], 2) * 10) . '折',
+//                'discount'    => (round($item['form']['goods_price'] / $item['form']['line_price'], 2) * 10) . '折',
 
             ]);
         }
diff --git a/application/admin/view/activity_goods/import_goods/add.html b/application/admin/view/activity_goods/import_goods/add.html
new file mode 100644
index 0000000..ba49e2f
--- /dev/null
+++ b/application/admin/view/activity_goods/import_goods/add.html
@@ -0,0 +1,344 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="10"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+<!-- 商品规格属性 start -->
+<div class="goods-spec-many form-group">
+    <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+    <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+        <!-- 规格属性 -->
+        <div class="spec-attr"></div>
+
+        <!-- 添加规格:按钮 -->
+        <div class="spec-group-button">
+            <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+        </div>
+
+        <!-- 添加规格:表单 -->
+        <div class="spec-group-add">
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格名 </label>
+                <input type="text" class="input-specName tpl-form-input"
+                       placeholder="请输入规格名称">
+            </div>
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格值 </label>
+                <input type="text" class="input-specValue tpl-form-input"
+                       placeholder="请输入规格值">
+            </div>
+            <div class="spec-group-add-item margin-top">
+                <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                </button>
+                <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                </button>
+            </div>
+        </div>
+        <!-- 商品多规格sku信息 -->
+        <div class="goods-sku scrollable-horizontal">
+            <!-- 分割线 -->
+            <div class="goods-spec-line"></div>
+            <!-- sku 批量设置 -->
+            <div class="spec-batch form-inline">
+                <div class="form-group">
+                    <label class="control-label">批量设置</label>
+                </div>
+                <div class="form-group">
+                    <input type="text" data-type="goods_no" placeholder="商家编码">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="goods_price" placeholder="销售价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="line_price" placeholder="划线价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="stock_num" placeholder="库存数量">
+                </div>
+                <!--<div class="form-group">
+                    <input type="number" data-type="goods_weight" placeholder="重量">
+                </div>-->
+                <div class="form-group">
+                    <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                     radius">确定
+                    </button>
+                </div>
+            </div>
+            <!-- sku table -->
+            <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+        </div>
+    </div>
+</div>
+
+<div class="goods-spec-single">
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="100">
+        </div>
+    </div>
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="1">
+        </div>
+    </div>-->
+</div>
+<!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="20"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50"></textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="100">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="1"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"  class="form-control form-control" size="50" name="row[detail_images]" placeholder="图片最多添加十张" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images"  data-maxcount="10" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images"  data-maxcount="10" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="10"}checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/import_goods/edit.html b/application/admin/view/activity_goods/import_goods/edit.html
new file mode 100644
index 0000000..7f322ec
--- /dev/null
+++ b/application/admin/view/activity_goods/import_goods/edit.html
@@ -0,0 +1,349 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="{$row.goods_name}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="{$row.keywords}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="{$row.category_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="{$row.activity_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text" value="{$row.image}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text" value="{$row.images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.spec_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+    <!-- 商品规格属性 start -->
+    <div class="goods-spec-many form-group" style="display: <?= $row['spec_type'] === '20' ? 'block' : 'none' ?>;" >
+        <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+        <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+            <!-- 规格属性 -->
+            <div class="spec-attr"></div>
+
+            <!-- 添加规格:按钮 -->
+            <div class="spec-group-button">
+                <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+            </div>
+
+            <!-- 添加规格:表单 -->
+            <div class="spec-group-add">
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格名 </label>
+                    <input type="text" class="input-specName tpl-form-input"
+                           placeholder="请输入规格名称">
+                </div>
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格值 </label>
+                    <input type="text" class="input-specValue tpl-form-input"
+                           placeholder="请输入规格值">
+                </div>
+                <div class="spec-group-add-item margin-top">
+                    <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                    </button>
+                    <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                    </button>
+                </div>
+            </div>
+            <!-- 商品多规格sku信息 -->
+            <div class="goods-sku scrollable-horizontal">
+                <!-- 分割线 -->
+                <div class="goods-spec-line"></div>
+                <!-- sku 批量设置 -->
+                <div class="spec-batch form-inline">
+                    <div class="form-group">
+                        <label class="control-label">批量设置</label>
+                    </div>
+                    <div class="form-group">
+                        <input type="text" data-type="goods_no" placeholder="商家编码">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_price" placeholder="销售价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="line_price" placeholder="划线价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="stock_num" placeholder="库存数量">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_weight" placeholder="重量">
+                    </div>
+                    <div class="form-group">
+                        <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                         radius">确定
+                        </button>
+                    </div>
+                </div>
+                <!-- sku table -->
+                <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+            </div>
+        </div>
+    </div>
+
+    <div class="goods-spec-single" style="display: <?= $row['spec_type'] === '10' ? 'block' : 'none' ?>;"> 
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="{$row.spec.0.goods_no}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="{$row.spec.0.goods_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="{$row.spec.0.line_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="{$row.spec.0.stock_num}">
+            </div>
+        </div>
+        <!--<div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="{$row.spec.0.goods_weight}">
+            </div>
+        </div>-->
+    </div>
+    <!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.deduct_stock_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50">{$row.content}</textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="{$row.sales_initial}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="{$row.sales_actual}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="{$row.goods_sort}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="{$row.delivery_id}">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]">{$row.price_description}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="{$row.brand}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="$row.makefor"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="{$row.packing}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="{$row.keep}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="{$row.number}">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text" value="{$row.down_image}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text" value="{$row.four_images}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"   placeholder="图片最多添加十张" class="form-control form-control" size="50" name="row[detail_images]" type="text" value="{$row.detail_images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg"  data-maxcount="10" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-maxcount="10" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="$row.goods_status"}checked{/in} /> {$vo}</label> 
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.is_delete"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.is_index"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
+
+<script type="text/javascript">
+    var from_specData = <?= $row['specData'] ?>;
+</script>
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/import_goods/index.html b/application/admin/view/activity_goods/import_goods/index.html
new file mode 100644
index 0000000..c4bf52b
--- /dev/null
+++ b/application/admin/view/activity_goods/import_goods/index.html
@@ -0,0 +1,40 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}"><i
+                                class="fa fa-refresh"></i> </a>
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-add {:$auth->check('litestore/litestoregoods/add')?'':'hide'}"-->
+<!--                           title="{:__('Add')}"><i class="fa fa-plus"></i> {:__('Add')}</a>-->
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('litestore/litestoregoods/edit')?'':'hide'}"-->
+<!--                           title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>-->
+                        <a href="javascript:;"
+                           class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('litestore/litestoregoods/del')?'':'hide'}"
+                           title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                                                <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">
+                                                    <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-check-square-o"></i> {:__('批量添加活动商品')}</a>
+                                                    <ul class="dropdown-menu text-left" role="menu">
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=1"><i class="fa fa-free-code-camp"></i> {:__('新人用户')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=2"><i class="fa fa-clock-o"></i> {:__('限时秒杀')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=3"><i class="fa fa-location-arrow"></i> {:__('进口商品')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=0"><i class="fa fa-eye-slash"></i> {:__('不参与活动')}</a></li>
+                                                    </ul>
+                                                </div>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('litestore/litestoregoods/edit')}"
+                           data-operate-del="{:$auth->check('litestore/litestoregoods/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>
diff --git a/application/admin/view/activity_goods/import_goods/spec_many_template.html b/application/admin/view/activity_goods/import_goods/spec_many_template.html
new file mode 100644
index 0000000..72959d9
--- /dev/null
+++ b/application/admin/view/activity_goods/import_goods/spec_many_template.html
@@ -0,0 +1,82 @@
+<!-- 商品规格属性模板 -->
+<script id="tpl_spec_attr" type="text/template">
+    <% for(var j=0;j< spec_attr.length;j++){ %>
+    <div class="spec-group-item" data-index="<%=j%>" data-group-id="<%=spec_attr[j].group_id%>">
+        <div class="spec-group-name">
+            <span><%=spec_attr[j].group_name%></span>
+            <i class="spec-group-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+        </div>
+        <div class="spec-list am-cf">
+            <% for(var k=0;k<spec_attr[j].spec_items.length;k++){ %>
+            <div class="spec-item am-fl" data-item-index="<%=k%>">
+                <span><%=spec_attr[j].spec_items[k].spec_value%></span>
+                <i class="spec-item-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+            </div>
+            <% } %>
+            <div class="spec-item-add am-cf am-fl">
+                <input type="text" class="ipt-specItem am-fl am-field-valid">
+                <button type="button" class="btn-addSpecItem btn btn-xs btn-success am-fl">添加</button>
+            </div>
+        </div>
+    </div>
+    <% } %>
+</script>
+
+<!-- 商品规格table模板 -->
+<script id="tpl_spec_table" type="text/template">
+    <tbody>
+    <tr>
+        <th>单sku隐藏</th>
+        <% for(var i=0;i< spec_attr.length;i++){ %>
+            <th><%=spec_attr[i].group_name%></th>
+        <% } %>
+        <th>商品编码</th>
+        <th>销售价</th>
+        <th>划线价</th>
+        <th>库存(-1隐藏)</th>
+        <!--<th>重量(kg)</th>-->
+        <th>规格封面</th>
+        <th>封面编辑</th>
+    </tr>
+    <% for(var i=0;i<spec_list.length;i++){ %>
+    <tr data-index="<%=i%>" data-sku-id="<%=spec_list[i].spec_sku_id %>">
+        <td>
+            <button type="button" class="am-text-middle btn delsku-bt"><% if(spec_list[i].form.stock_num===-1) {%> 显示  <%}else{%> 隐藏 <%} %></button>
+        </td>
+        <% for(var k=0;k<spec_list[i].rows.length;k++){ %>
+        <td class="td-spec-value am-text-middle" rowspan="<%=spec_list[i].rows[k].rowspan%>">
+            <%=spec_list[i].rows[k].spec_value%>
+        </td>
+        <% } %>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="text" name="goods_no" data-rule="required" value="<%=spec_list[i].form.goods_no%>" class="ipt-goods-no am-field-valid">
+        </td>
+        <td>
+            <input  <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  type="number" name="goods_price" data-rule="required" value="<%=spec_list[i].form.goods_price%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="number" name="line_price" data-rule="required" value="<%=spec_list[i].form.line_price%>" class="am-field-valid ipt-w80">
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="stock_num" data-rule="required" value="<%=spec_list[i].form.stock_num%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <!--<td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="goods_weight" data-rule="required" value="<%=spec_list[i].form.goods_weight%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>-->
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  id="c-image<%=i%>" class="form-control form-control" style="display: none!important;" name="spec_image" type="text" value="<%=spec_list[i].form.spec_image%>">
+            <div class="row list-inline plupload-preview spe_img_one" id="p-image<%=i%>"></div>
+        </td>
+        <td>
+            <div class="input-group-addon no-border no-padding">
+                <span><button type="button" id="plupload-image<%=i%>" style="display: none!important;" class="btn btn-danger plupload" data-input-id="c-image<%=i%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image<%=i%>"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                <span><button type="button" <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> id="fachoose-image<%=i%>" class="btn btn-primary fachoose" data-input-id="c-image<%=i%>" data-mimetype="image/*" data-preview-id="p-image<%=i%>" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+            </div>
+        </td>
+    </tr>
+    <% } %>
+    </tbody>
+</script>
diff --git a/application/admin/view/activity_goods/new_goods/add.html b/application/admin/view/activity_goods/new_goods/add.html
new file mode 100644
index 0000000..ba49e2f
--- /dev/null
+++ b/application/admin/view/activity_goods/new_goods/add.html
@@ -0,0 +1,344 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="10"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+<!-- 商品规格属性 start -->
+<div class="goods-spec-many form-group">
+    <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+    <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+        <!-- 规格属性 -->
+        <div class="spec-attr"></div>
+
+        <!-- 添加规格:按钮 -->
+        <div class="spec-group-button">
+            <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+        </div>
+
+        <!-- 添加规格:表单 -->
+        <div class="spec-group-add">
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格名 </label>
+                <input type="text" class="input-specName tpl-form-input"
+                       placeholder="请输入规格名称">
+            </div>
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格值 </label>
+                <input type="text" class="input-specValue tpl-form-input"
+                       placeholder="请输入规格值">
+            </div>
+            <div class="spec-group-add-item margin-top">
+                <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                </button>
+                <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                </button>
+            </div>
+        </div>
+        <!-- 商品多规格sku信息 -->
+        <div class="goods-sku scrollable-horizontal">
+            <!-- 分割线 -->
+            <div class="goods-spec-line"></div>
+            <!-- sku 批量设置 -->
+            <div class="spec-batch form-inline">
+                <div class="form-group">
+                    <label class="control-label">批量设置</label>
+                </div>
+                <div class="form-group">
+                    <input type="text" data-type="goods_no" placeholder="商家编码">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="goods_price" placeholder="销售价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="line_price" placeholder="划线价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="stock_num" placeholder="库存数量">
+                </div>
+                <!--<div class="form-group">
+                    <input type="number" data-type="goods_weight" placeholder="重量">
+                </div>-->
+                <div class="form-group">
+                    <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                     radius">确定
+                    </button>
+                </div>
+            </div>
+            <!-- sku table -->
+            <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+        </div>
+    </div>
+</div>
+
+<div class="goods-spec-single">
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="100">
+        </div>
+    </div>
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="1">
+        </div>
+    </div>-->
+</div>
+<!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="20"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50"></textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="100">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="1"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"  class="form-control form-control" size="50" name="row[detail_images]" placeholder="图片最多添加十张" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images"  data-maxcount="10" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images"  data-maxcount="10" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="10"}checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/new_goods/edit.html b/application/admin/view/activity_goods/new_goods/edit.html
new file mode 100644
index 0000000..7f322ec
--- /dev/null
+++ b/application/admin/view/activity_goods/new_goods/edit.html
@@ -0,0 +1,349 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="{$row.goods_name}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="{$row.keywords}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="{$row.category_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="{$row.activity_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text" value="{$row.image}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text" value="{$row.images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.spec_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+    <!-- 商品规格属性 start -->
+    <div class="goods-spec-many form-group" style="display: <?= $row['spec_type'] === '20' ? 'block' : 'none' ?>;" >
+        <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+        <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+            <!-- 规格属性 -->
+            <div class="spec-attr"></div>
+
+            <!-- 添加规格:按钮 -->
+            <div class="spec-group-button">
+                <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+            </div>
+
+            <!-- 添加规格:表单 -->
+            <div class="spec-group-add">
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格名 </label>
+                    <input type="text" class="input-specName tpl-form-input"
+                           placeholder="请输入规格名称">
+                </div>
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格值 </label>
+                    <input type="text" class="input-specValue tpl-form-input"
+                           placeholder="请输入规格值">
+                </div>
+                <div class="spec-group-add-item margin-top">
+                    <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                    </button>
+                    <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                    </button>
+                </div>
+            </div>
+            <!-- 商品多规格sku信息 -->
+            <div class="goods-sku scrollable-horizontal">
+                <!-- 分割线 -->
+                <div class="goods-spec-line"></div>
+                <!-- sku 批量设置 -->
+                <div class="spec-batch form-inline">
+                    <div class="form-group">
+                        <label class="control-label">批量设置</label>
+                    </div>
+                    <div class="form-group">
+                        <input type="text" data-type="goods_no" placeholder="商家编码">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_price" placeholder="销售价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="line_price" placeholder="划线价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="stock_num" placeholder="库存数量">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_weight" placeholder="重量">
+                    </div>
+                    <div class="form-group">
+                        <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                         radius">确定
+                        </button>
+                    </div>
+                </div>
+                <!-- sku table -->
+                <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+            </div>
+        </div>
+    </div>
+
+    <div class="goods-spec-single" style="display: <?= $row['spec_type'] === '10' ? 'block' : 'none' ?>;"> 
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="{$row.spec.0.goods_no}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="{$row.spec.0.goods_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="{$row.spec.0.line_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="{$row.spec.0.stock_num}">
+            </div>
+        </div>
+        <!--<div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="{$row.spec.0.goods_weight}">
+            </div>
+        </div>-->
+    </div>
+    <!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.deduct_stock_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50">{$row.content}</textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="{$row.sales_initial}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="{$row.sales_actual}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="{$row.goods_sort}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="{$row.delivery_id}">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]">{$row.price_description}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="{$row.brand}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="$row.makefor"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="{$row.packing}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="{$row.keep}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="{$row.number}">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text" value="{$row.down_image}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text" value="{$row.four_images}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"   placeholder="图片最多添加十张" class="form-control form-control" size="50" name="row[detail_images]" type="text" value="{$row.detail_images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg"  data-maxcount="10" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-maxcount="10" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="$row.goods_status"}checked{/in} /> {$vo}</label> 
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.is_delete"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.is_index"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
+
+<script type="text/javascript">
+    var from_specData = <?= $row['specData'] ?>;
+</script>
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/new_goods/index.html b/application/admin/view/activity_goods/new_goods/index.html
new file mode 100644
index 0000000..c4bf52b
--- /dev/null
+++ b/application/admin/view/activity_goods/new_goods/index.html
@@ -0,0 +1,40 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}"><i
+                                class="fa fa-refresh"></i> </a>
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-add {:$auth->check('litestore/litestoregoods/add')?'':'hide'}"-->
+<!--                           title="{:__('Add')}"><i class="fa fa-plus"></i> {:__('Add')}</a>-->
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('litestore/litestoregoods/edit')?'':'hide'}"-->
+<!--                           title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>-->
+                        <a href="javascript:;"
+                           class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('litestore/litestoregoods/del')?'':'hide'}"
+                           title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                                                <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">
+                                                    <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-check-square-o"></i> {:__('批量添加活动商品')}</a>
+                                                    <ul class="dropdown-menu text-left" role="menu">
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=1"><i class="fa fa-free-code-camp"></i> {:__('新人用户')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=2"><i class="fa fa-clock-o"></i> {:__('限时秒杀')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=3"><i class="fa fa-location-arrow"></i> {:__('进口商品')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=0"><i class="fa fa-eye-slash"></i> {:__('不参与活动')}</a></li>
+                                                    </ul>
+                                                </div>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('litestore/litestoregoods/edit')}"
+                           data-operate-del="{:$auth->check('litestore/litestoregoods/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>
diff --git a/application/admin/view/activity_goods/new_goods/spec_many_template.html b/application/admin/view/activity_goods/new_goods/spec_many_template.html
new file mode 100644
index 0000000..72959d9
--- /dev/null
+++ b/application/admin/view/activity_goods/new_goods/spec_many_template.html
@@ -0,0 +1,82 @@
+<!-- 商品规格属性模板 -->
+<script id="tpl_spec_attr" type="text/template">
+    <% for(var j=0;j< spec_attr.length;j++){ %>
+    <div class="spec-group-item" data-index="<%=j%>" data-group-id="<%=spec_attr[j].group_id%>">
+        <div class="spec-group-name">
+            <span><%=spec_attr[j].group_name%></span>
+            <i class="spec-group-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+        </div>
+        <div class="spec-list am-cf">
+            <% for(var k=0;k<spec_attr[j].spec_items.length;k++){ %>
+            <div class="spec-item am-fl" data-item-index="<%=k%>">
+                <span><%=spec_attr[j].spec_items[k].spec_value%></span>
+                <i class="spec-item-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+            </div>
+            <% } %>
+            <div class="spec-item-add am-cf am-fl">
+                <input type="text" class="ipt-specItem am-fl am-field-valid">
+                <button type="button" class="btn-addSpecItem btn btn-xs btn-success am-fl">添加</button>
+            </div>
+        </div>
+    </div>
+    <% } %>
+</script>
+
+<!-- 商品规格table模板 -->
+<script id="tpl_spec_table" type="text/template">
+    <tbody>
+    <tr>
+        <th>单sku隐藏</th>
+        <% for(var i=0;i< spec_attr.length;i++){ %>
+            <th><%=spec_attr[i].group_name%></th>
+        <% } %>
+        <th>商品编码</th>
+        <th>销售价</th>
+        <th>划线价</th>
+        <th>库存(-1隐藏)</th>
+        <!--<th>重量(kg)</th>-->
+        <th>规格封面</th>
+        <th>封面编辑</th>
+    </tr>
+    <% for(var i=0;i<spec_list.length;i++){ %>
+    <tr data-index="<%=i%>" data-sku-id="<%=spec_list[i].spec_sku_id %>">
+        <td>
+            <button type="button" class="am-text-middle btn delsku-bt"><% if(spec_list[i].form.stock_num===-1) {%> 显示  <%}else{%> 隐藏 <%} %></button>
+        </td>
+        <% for(var k=0;k<spec_list[i].rows.length;k++){ %>
+        <td class="td-spec-value am-text-middle" rowspan="<%=spec_list[i].rows[k].rowspan%>">
+            <%=spec_list[i].rows[k].spec_value%>
+        </td>
+        <% } %>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="text" name="goods_no" data-rule="required" value="<%=spec_list[i].form.goods_no%>" class="ipt-goods-no am-field-valid">
+        </td>
+        <td>
+            <input  <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  type="number" name="goods_price" data-rule="required" value="<%=spec_list[i].form.goods_price%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="number" name="line_price" data-rule="required" value="<%=spec_list[i].form.line_price%>" class="am-field-valid ipt-w80">
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="stock_num" data-rule="required" value="<%=spec_list[i].form.stock_num%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <!--<td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="goods_weight" data-rule="required" value="<%=spec_list[i].form.goods_weight%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>-->
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  id="c-image<%=i%>" class="form-control form-control" style="display: none!important;" name="spec_image" type="text" value="<%=spec_list[i].form.spec_image%>">
+            <div class="row list-inline plupload-preview spe_img_one" id="p-image<%=i%>"></div>
+        </td>
+        <td>
+            <div class="input-group-addon no-border no-padding">
+                <span><button type="button" id="plupload-image<%=i%>" style="display: none!important;" class="btn btn-danger plupload" data-input-id="c-image<%=i%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image<%=i%>"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                <span><button type="button" <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> id="fachoose-image<%=i%>" class="btn btn-primary fachoose" data-input-id="c-image<%=i%>" data-mimetype="image/*" data-preview-id="p-image<%=i%>" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+            </div>
+        </td>
+    </tr>
+    <% } %>
+    </tbody>
+</script>
diff --git a/application/admin/view/activity_goods/seckill_goods/add.html b/application/admin/view/activity_goods/seckill_goods/add.html
new file mode 100644
index 0000000..ba49e2f
--- /dev/null
+++ b/application/admin/view/activity_goods/seckill_goods/add.html
@@ -0,0 +1,344 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="10"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+<!-- 商品规格属性 start -->
+<div class="goods-spec-many form-group">
+    <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+    <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+        <!-- 规格属性 -->
+        <div class="spec-attr"></div>
+
+        <!-- 添加规格:按钮 -->
+        <div class="spec-group-button">
+            <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+        </div>
+
+        <!-- 添加规格:表单 -->
+        <div class="spec-group-add">
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格名 </label>
+                <input type="text" class="input-specName tpl-form-input"
+                       placeholder="请输入规格名称">
+            </div>
+            <div class="spec-group-add-item form-group">
+                <label class="control-label form-require">规格值 </label>
+                <input type="text" class="input-specValue tpl-form-input"
+                       placeholder="请输入规格值">
+            </div>
+            <div class="spec-group-add-item margin-top">
+                <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                </button>
+                <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                </button>
+            </div>
+        </div>
+        <!-- 商品多规格sku信息 -->
+        <div class="goods-sku scrollable-horizontal">
+            <!-- 分割线 -->
+            <div class="goods-spec-line"></div>
+            <!-- sku 批量设置 -->
+            <div class="spec-batch form-inline">
+                <div class="form-group">
+                    <label class="control-label">批量设置</label>
+                </div>
+                <div class="form-group">
+                    <input type="text" data-type="goods_no" placeholder="商家编码">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="goods_price" placeholder="销售价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="line_price" placeholder="划线价">
+                </div>
+                <div class="form-group">
+                    <input type="number" data-type="stock_num" placeholder="库存数量">
+                </div>
+                <!--<div class="form-group">
+                    <input type="number" data-type="goods_weight" placeholder="重量">
+                </div>-->
+                <div class="form-group">
+                    <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                     radius">确定
+                    </button>
+                </div>
+            </div>
+            <!-- sku table -->
+            <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+        </div>
+    </div>
+</div>
+
+<div class="goods-spec-single">
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="0">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="100">
+        </div>
+    </div>
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="1">
+        </div>
+    </div>-->
+</div>
+<!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="20"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50"></textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="0">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="100">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]"></textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="1"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"  class="form-control form-control" size="50" name="row[detail_images]" placeholder="图片最多添加十张" type="text">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images"  data-maxcount="10" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images"  data-maxcount="10" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="10"}checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                    <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/seckill_goods/edit.html b/application/admin/view/activity_goods/seckill_goods/edit.html
new file mode 100644
index 0000000..7f322ec
--- /dev/null
+++ b/application/admin/view/activity_goods/seckill_goods/edit.html
@@ -0,0 +1,349 @@
+<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-goods_name" data-rule="required" class="form-control form-control" name="row[goods_name]" type="text" value="{$row.goods_name}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keywords')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keywords" data-rule="required" class="form-control form-control" name="row[keywords]" type="text" value="{$row.keywords}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Category_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-category_id" data-rule="required" data-source="litestore/litestorecategory/selectpage" class="form-control selectpage form-control" name="row[category_id]" type="text" value="{$row.category_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="{$row.activity_id}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-image" data-rule="required" class="form-control form-control" size="50" name="row[image]" type="text" value="{$row.image}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-image"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-image"></ul>
+            <span class="help-block">建议尺寸:宽110,高110</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-images" data-rule="required" class="form-control form-control" size="50" name="row[images]" type="text" value="{$row.images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-images" class="btn btn-danger plupload" data-input-id="c-images" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="true" data-preview-id="p-images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-images" class="btn btn-primary fachoose" data-input-id="c-images" data-mimetype="image/*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-images"></ul>
+            <span class="help-block">建议尺寸:宽375,高375</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Spec_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-spec_type" data-rule="required" class="form-control selectpicker" name="row[spec_type]">
+                {foreach name="specTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.spec_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+
+    <!-- 商品规格属性 start -->
+    <div class="goods-spec-many form-group" style="display: <?= $row['spec_type'] === '20' ? 'block' : 'none' ?>;" >
+        <!-- <label class="control-label col-xs-12 col-sm-2"></label>-->
+        <div class="goods-spec-box col-xs-12 col-sm-11" style="background-color: white;">
+            <!-- 规格属性 -->
+            <div class="spec-attr"></div>
+
+            <!-- 添加规格:按钮 -->
+            <div class="spec-group-button">
+                <button type="button" class="btn-addSpecGroup btn btn-xs btn-success">添加规格</button>
+            </div>
+
+            <!-- 添加规格:表单 -->
+            <div class="spec-group-add">
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格名 </label>
+                    <input type="text" class="input-specName tpl-form-input"
+                           placeholder="请输入规格名称">
+                </div>
+                <div class="spec-group-add-item form-group">
+                    <label class="control-label form-require">规格值 </label>
+                    <input type="text" class="input-specValue tpl-form-input"
+                           placeholder="请输入规格值">
+                </div>
+                <div class="spec-group-add-item margin-top">
+                    <button type="button" class="btn-addSpecName btn btn-xs btn-success"> 确定
+                    </button>
+                    <button type="button" class="btn-cancleAddSpecName btn btn-xs btn-default"> 取消
+                    </button>
+                </div>
+            </div>
+            <!-- 商品多规格sku信息 -->
+            <div class="goods-sku scrollable-horizontal">
+                <!-- 分割线 -->
+                <div class="goods-spec-line"></div>
+                <!-- sku 批量设置 -->
+                <div class="spec-batch form-inline">
+                    <div class="form-group">
+                        <label class="control-label">批量设置</label>
+                    </div>
+                    <div class="form-group">
+                        <input type="text" data-type="goods_no" placeholder="商家编码">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_price" placeholder="销售价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="line_price" placeholder="划线价">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="stock_num" placeholder="库存数量">
+                    </div>
+                    <div class="form-group">
+                        <input type="number" data-type="goods_weight" placeholder="重量">
+                    </div>
+                    <div class="form-group">
+                        <button type="button" class="btn-specBatchBtn btn btn-sm btn-secondary
+                         radius">确定
+                        </button>
+                    </div>
+                </div>
+                <!-- sku table -->
+                <table class="spec-sku-tabel table table-bordered table-centered margin-bottom-xs text-nowrap"></table>
+            </div>
+        </div>
+    </div>
+
+    <div class="goods-spec-single" style="display: <?= $row['spec_type'] === '10' ? 'block' : 'none' ?>;"> 
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品编码:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_no" class="form-control form-control" name="spec[goods_no]" type="text" value="{$row.spec.0.goods_no}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品价格:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_price" data-rule="required" class="form-control form-control" name="spec[goods_price]" type="number" value="{$row.spec.0.goods_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品划线价:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-line_price" class="form-control form-control" name="spec[line_price]" type="number" value="{$row.spec.0.line_price}">
+            </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">当前库存数量:</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-stock_num" class="form-control form-control" name="spec[stock_num]" type="number" value="{$row.spec.0.stock_num}">
+            </div>
+        </div>
+        <!--<div class="form-group">
+            <label class="control-label col-xs-12 col-sm-2">商品重量(Kg):</label>
+            <div class="col-xs-12 col-sm-8">
+                <input id="c-goods_weight" class="form-control form-control" name="spec[goods_weight]" type="number" value="{$row.spec.0.goods_weight}">
+            </div>
+        </div>-->
+    </div>
+    <!-- 商品规格属性 end -->
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Deduct_stock_type')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-deduct_stock_type" data-rule="required" class="form-control selectpicker" name="row[deduct_stock_type]">
+                {foreach name="deductStockTypeList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.deduct_stock_type"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <textarea id="c-content" data-rule="required" class="form-control editor form-control" rows="5" name="row[content]" cols="50">{$row.content}</textarea>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_initial')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_initial" data-rule="required" class="form-control form-control" name="row[sales_initial]" type="number" value="{$row.sales_initial}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Sales_actual')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-sales_actual" data-rule="required" class="form-control form-control" name="row[sales_actual]" type="number" value="{$row.sales_actual}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_sort')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-goods_sort" data-rule="required" class="form-control form-control" name="row[goods_sort]" type="number" value="{$row.goods_sort}">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Delivery_id')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <input id="c-delivery_id" data-rule="required" data-source="litestore/litestorefreight/index" class="form-control selectpage form-control" name="row[delivery_id]" type="text" value="{$row.delivery_id}">-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Price_description')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <textarea id="c-price_description" data-rule="required" class="form-control" name="row[price_description]">{$row.price_description}</textarea>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Brand')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-brand" data-rule="required" class="form-control form-control" name="row[brand]" type="text" value="{$row.brand}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Makefor')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="radio">
+                {foreach name="makeforList" item="vo"}
+                <label for="row[makefor]-{$key}"><input id="row[makefor]-{$key}" name="row[makefor]" type="radio" value="{$key}" {in name="key" value="$row.makefor"}checked{/in} /> {$vo}</label>
+                {/foreach}
+            </div>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Packing')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-packing" data-rule="required" class="form-control form-control" name="row[packing]" type="text" value="{$row.packing}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Keep')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-keep" data-rule="required" class="form-control form-control" name="row[keep]" type="text" value="{$row.keep}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Number')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-number" data-rule="required" class="form-control form-control" name="row[number]" type="text" value="{$row.number}">
+        </div>
+    </div>
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Down_image')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-down_image" data-rule="required" class="form-control form-control" size="50" name="row[down_image]" type="text" value="{$row.down_image}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-down_image" class="btn btn-danger plupload" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false" data-preview-id="p-down_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-down_image" class="btn btn-primary fachoose" data-input-id="c-down_image" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-down_image"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-down_image"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽375,高267</span>-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    <div class="form-group">-->
+<!--        <label class="control-label col-xs-12 col-sm-2">{:__('Four_images')}:</label>-->
+<!--        <div class="col-xs-12 col-sm-8">-->
+<!--            <div class="input-group">-->
+<!--                <input id="c-four_images" data-rule="required" class="form-control form-control" size="50" name="row[four_images]" type="text" value="{$row.four_images}">-->
+<!--                <div class="input-group-addon no-border no-padding">-->
+<!--                    <span><button type="button" id="plupload-four_images" class="btn btn-danger plupload" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true" data-preview-id="p-four_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>-->
+<!--                    <span><button type="button" id="fachoose-four_images" class="btn btn-primary fachoose" data-input-id="c-four_images" data-mimetype="image/jpeg,image/png,image/jpg" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>-->
+<!--                </div>-->
+<!--                <span class="msg-box n-right" for="c-four_images"></span>-->
+<!--            </div>-->
+<!--            <ul class="row list-inline plupload-preview" id="p-four_images"></ul>-->
+<!--            <span class="help-block">建议尺寸:宽185,高185</span>-->
+<!--        </div>-->
+<!--    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Detail_images')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <div class="input-group">
+                <input id="c-detail_images" data-rule="required"   placeholder="图片最多添加十张" class="form-control form-control" size="50" name="row[detail_images]" type="text" value="{$row.detail_images}">
+                <div class="input-group-addon no-border no-padding">
+                    <span><button type="button" id="plupload-detail_images" class="btn btn-danger plupload" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg"  data-maxcount="10" data-multiple="true" data-preview-id="p-detail_images"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                    <span><button type="button" id="fachoose-detail_images" class="btn btn-primary fachoose" data-input-id="c-detail_images" data-mimetype="image/jpeg,image/png,image/jpg" data-maxcount="10" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+                </div>
+                <span class="msg-box n-right" for="c-detail_images"></span>
+            </div>
+            <ul class="row list-inline plupload-preview" id="p-detail_images"></ul>
+            <span class="help-block">建议尺寸:宽185,高185</span>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Goods_status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="goodsStatusList" item="vo"}
+            <label for="row[goods_status]-{$key}"><input id="row[goods_status]-{$key}" name="row[goods_status]" type="radio" value="{$key}" {in name="key" value="$row.goods_status"}checked{/in} /> {$vo}</label> 
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_delete')}:</label>
+        <div class="col-xs-12 col-sm-8">
+                        
+            <select  id="c-is_delete" data-rule="required" class="form-control selectpicker" name="row[is_delete]">
+                {foreach name="isDeleteList" item="vo"}
+                    <option value="{$key}" {in name="key" value="$row.is_delete"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label>
+        <div class="col-xs-12 col-sm-8">
+
+            <select  id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]">
+                {foreach name="isIndexList" item="vo"}
+                <option value="{$key}" {in name="key" value="$row.is_index"}selected{/in}>{$vo}</option>
+                {/foreach}
+            </select>
+
+        </div>
+    </div>
+    <div class="form-group layer-footer">
+        <label class="control-label col-xs-12 col-sm-2"></label>
+        <div class="col-xs-12 col-sm-8">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>
+
+{include file="litestore/litestoregoods/spec_many_template" /}
+
+<link rel="stylesheet" href="__CDN__/assets/addons/litestore/css/litestoregoods.css">
+
+<script type="text/javascript">
+    var from_specData = <?= $row['specData'] ?>;
+</script>
\ No newline at end of file
diff --git a/application/admin/view/activity_goods/seckill_goods/index.html b/application/admin/view/activity_goods/seckill_goods/index.html
new file mode 100644
index 0000000..c4bf52b
--- /dev/null
+++ b/application/admin/view/activity_goods/seckill_goods/index.html
@@ -0,0 +1,40 @@
+<div class="panel panel-default panel-intro">
+    {:build_heading()}
+
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="tab-pane fade active in" id="one">
+                <div class="widget-body no-padding">
+                    <div id="toolbar" class="toolbar">
+                        <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}"><i
+                                class="fa fa-refresh"></i> </a>
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-add {:$auth->check('litestore/litestoregoods/add')?'':'hide'}"-->
+<!--                           title="{:__('Add')}"><i class="fa fa-plus"></i> {:__('Add')}</a>-->
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('litestore/litestoregoods/edit')?'':'hide'}"-->
+<!--                           title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>-->
+                        <a href="javascript:;"
+                           class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('litestore/litestoregoods/del')?'':'hide'}"
+                           title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                                                <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">
+                                                    <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-check-square-o"></i> {:__('批量添加活动商品')}</a>
+                                                    <ul class="dropdown-menu text-left" role="menu">
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=1"><i class="fa fa-free-code-camp"></i> {:__('新人用户')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=2"><i class="fa fa-clock-o"></i> {:__('限时秒杀')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=3"><i class="fa fa-location-arrow"></i> {:__('进口商品')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=0"><i class="fa fa-eye-slash"></i> {:__('不参与活动')}</a></li>
+                                                    </ul>
+                                                </div>
+                    </div>
+                    <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
+                           data-operate-edit="{:$auth->check('litestore/litestoregoods/edit')}"
+                           data-operate-del="{:$auth->check('litestore/litestoregoods/del')}"
+                           width="100%">
+                    </table>
+                </div>
+            </div>
+
+        </div>
+    </div>
+</div>
diff --git a/application/admin/view/activity_goods/seckill_goods/spec_many_template.html b/application/admin/view/activity_goods/seckill_goods/spec_many_template.html
new file mode 100644
index 0000000..72959d9
--- /dev/null
+++ b/application/admin/view/activity_goods/seckill_goods/spec_many_template.html
@@ -0,0 +1,82 @@
+<!-- 商品规格属性模板 -->
+<script id="tpl_spec_attr" type="text/template">
+    <% for(var j=0;j< spec_attr.length;j++){ %>
+    <div class="spec-group-item" data-index="<%=j%>" data-group-id="<%=spec_attr[j].group_id%>">
+        <div class="spec-group-name">
+            <span><%=spec_attr[j].group_name%></span>
+            <i class="spec-group-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+        </div>
+        <div class="spec-list am-cf">
+            <% for(var k=0;k<spec_attr[j].spec_items.length;k++){ %>
+            <div class="spec-item am-fl" data-item-index="<%=k%>">
+                <span><%=spec_attr[j].spec_items[k].spec_value%></span>
+                <i class="spec-item-delete fa fa-trash icon-shanchu1" title="点击删除"></i>
+            </div>
+            <% } %>
+            <div class="spec-item-add am-cf am-fl">
+                <input type="text" class="ipt-specItem am-fl am-field-valid">
+                <button type="button" class="btn-addSpecItem btn btn-xs btn-success am-fl">添加</button>
+            </div>
+        </div>
+    </div>
+    <% } %>
+</script>
+
+<!-- 商品规格table模板 -->
+<script id="tpl_spec_table" type="text/template">
+    <tbody>
+    <tr>
+        <th>单sku隐藏</th>
+        <% for(var i=0;i< spec_attr.length;i++){ %>
+            <th><%=spec_attr[i].group_name%></th>
+        <% } %>
+        <th>商品编码</th>
+        <th>销售价</th>
+        <th>划线价</th>
+        <th>库存(-1隐藏)</th>
+        <!--<th>重量(kg)</th>-->
+        <th>规格封面</th>
+        <th>封面编辑</th>
+    </tr>
+    <% for(var i=0;i<spec_list.length;i++){ %>
+    <tr data-index="<%=i%>" data-sku-id="<%=spec_list[i].spec_sku_id %>">
+        <td>
+            <button type="button" class="am-text-middle btn delsku-bt"><% if(spec_list[i].form.stock_num===-1) {%> 显示  <%}else{%> 隐藏 <%} %></button>
+        </td>
+        <% for(var k=0;k<spec_list[i].rows.length;k++){ %>
+        <td class="td-spec-value am-text-middle" rowspan="<%=spec_list[i].rows[k].rowspan%>">
+            <%=spec_list[i].rows[k].spec_value%>
+        </td>
+        <% } %>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="text" name="goods_no" data-rule="required" value="<%=spec_list[i].form.goods_no%>" class="ipt-goods-no am-field-valid">
+        </td>
+        <td>
+            <input  <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  type="number" name="goods_price" data-rule="required" value="<%=spec_list[i].form.goods_price%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> type="number" name="line_price" data-rule="required" value="<%=spec_list[i].form.line_price%>" class="am-field-valid ipt-w80">
+        </td>
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="stock_num" data-rule="required" value="<%=spec_list[i].form.stock_num%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>
+        <!--<td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%>disabled  <%}else{%>  <%} %> type="number" name="goods_weight" data-rule="required" value="<%=spec_list[i].form.goods_weight%>" class="am-field-valid ipt-w80"
+                   required>
+        </td>-->
+        <td>
+            <input <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %>  id="c-image<%=i%>" class="form-control form-control" style="display: none!important;" name="spec_image" type="text" value="<%=spec_list[i].form.spec_image%>">
+            <div class="row list-inline plupload-preview spe_img_one" id="p-image<%=i%>"></div>
+        </td>
+        <td>
+            <div class="input-group-addon no-border no-padding">
+                <span><button type="button" id="plupload-image<%=i%>" style="display: none!important;" class="btn btn-danger plupload" data-input-id="c-image<%=i%>" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image<%=i%>"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
+                <span><button type="button" <% if(spec_list[i].form.stock_num===-1) {%> disabled <%}else{%>  <%} %> id="fachoose-image<%=i%>" class="btn btn-primary fachoose" data-input-id="c-image<%=i%>" data-mimetype="image/*" data-preview-id="p-image<%=i%>" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
+            </div>
+        </td>
+    </tr>
+    <% } %>
+    </tbody>
+</script>
diff --git a/application/admin/view/litestore/litestoregoods/index.html b/application/admin/view/litestore/litestoregoods/index.html
index 4acdba0..3690bbd 100644
--- a/application/admin/view/litestore/litestoregoods/index.html
+++ b/application/admin/view/litestore/litestoregoods/index.html
@@ -11,12 +11,15 @@
                         <a href="javascript:;"
                            class="btn btn-success btn-add {:$auth->check('litestore/litestoregoods/add')?'':'hide'}"
                            title="{:__('Add')}"><i class="fa fa-plus"></i> {:__('Add')}</a>
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('litestore/litestoregoods/edit')?'':'hide'}"-->
+<!--                           title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>-->
                         <a href="javascript:;"
-                           class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('litestore/litestoregoods/edit')?'':'hide'}"
-                           title="{:__('Edit')}"><i class="fa fa-pencil"></i> {:__('Edit')}</a>
-                        <a href="javascript:;"
-                           class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('litestore/litestoregoods/del')?'':'hide'}"
-                           title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>
+                           class="btn btn-success btn-discount btn-disabled disabled {:$auth->check('litestore/litestoregoods/discount')?'':'hide'}"
+                           title="{:__('设置折扣')}"><i class="fa fa-pencil"></i> {:__('批量设置折扣')}</a>
+<!--                        <a href="javascript:;"-->
+<!--                           class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('litestore/litestoregoods/del')?'':'hide'}"-->
+<!--                           title="{:__('Delete')}"><i class="fa fa-trash"></i> {:__('Delete')}</a>-->
                         <a href="javascript:;"
                            class="btn btn-danger btn-import {:$auth->check('litestore/litestoregoods/import')?'':'hide'}"
                            title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload"
@@ -26,18 +29,18 @@
                         <!--                           class="btn btn-info btn-change btn-export btn-disable" data-params="action=export"-->
                         <!--                           data-url="litestore/litestoregoods/export"-->
                         <!--                           title="{:__('批量导出')}"><i class="fa fa-download"></i>{:__('批量导出')}</a>-->
-                        <a href="javascript:;"
-                           class="btn btn-info btn-export {:$auth->check('litestore/litestoregoods/export')?'':'hide'}"
-                           title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> 批量导出</a>
+                        <a href="javascript:;" class="btn btn-info btn-export {:$auth->check('litestore/litestoregoods/export')?'':'hide'}" title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> 批量导出</a>
                         <a href="{$template}" class="btn btn-info"><i class="fa fa-folder-open"></i> {:__('导入模板下载')}</a>
 
-                        <!--                        <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">-->
-                        <!--                            <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>-->
-                        <!--                            <ul class="dropdown-menu text-left" role="menu">-->
-                        <!--                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>-->
-                        <!--                                <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>-->
-                        <!--                            </ul>-->
-                        <!--                        </div>-->
+                                                <div class="dropdown btn-group {:$auth->check('litestore/litestoregoods/multi')?'':'hide'}">
+                                                    <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-check-square-o"></i> {:__('批量添加活动商品')}</a>
+                                                    <ul class="dropdown-menu text-left" role="menu">
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=1"><i class="fa fa-free-code-camp"></i> {:__('新人用户')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=2"><i class="fa fa-clock-o"></i> {:__('限时秒杀')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=3"><i class="fa fa-location-arrow"></i> {:__('进口商品')}</a></li>
+                                                        <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="activity_id=0"><i class="fa fa-eye-slash"></i> {:__('不参与活动')}</a></li>
+                                                    </ul>
+                                                </div>
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                            data-operate-edit="{:$auth->check('litestore/litestoregoods/edit')}"
diff --git a/application/api/controller/Classification.php b/application/api/controller/Classification.php
index cd07e5c..24eac08 100644
--- a/application/api/controller/Classification.php
+++ b/application/api/controller/Classification.php
@@ -418,7 +418,7 @@ class Classification extends Api
                     $item['line_price'] = round($goods_spec['line_price'], 2);
                     //判断是否打折
                     $item['is_discount'] = 'is';
-                    if ($goods_spec['goods_price'] == $goods_spec['line_price']) {
+                    if (empty($goods_spec['discount'])) {
                         $item['is_discount'] = 'no';
                     }
                     $item['discount'] = $goods_spec['discount'];
@@ -459,7 +459,7 @@ class Classification extends Api
                         $spec_value['cart_number'] = $number ?? 0;
                         //判断是否打折
                         $spec_value['is_discount'] = 'is';
-                        if ($spec_value['goods_price'] == $spec_value['line_price']) {
+                        if (empty($spec_value['discount'])) {
                             $spec_value['is_discount'] = 'no';
                         }
                     }
@@ -488,7 +488,7 @@ class Classification extends Api
                     $item['line_price'] = round($goods_spec['line_price'], 2);
                     //判断是否打折
                     $item['is_discount'] = 'is';
-                    if ($goods_spec['goods_price'] == $goods_spec['line_price']) {
+                    if (empty($goods_spec['discount'])) {
                         $item['is_discount'] = 'no';
                     }
                     $item['discount'] = $goods_spec['discount'];
@@ -530,7 +530,7 @@ class Classification extends Api
                         $spec_value['cart_number'] = $number ?? 0;
                         //判断是否打折
                         $spec_value['is_discount'] = 'is';
-                        if ($spec_value['goods_price'] == $spec_value['line_price']) {
+                        if (empty($spec_value['discount'])) {
                             $spec_value['is_discount'] = 'no';
                         }
                     }
diff --git a/application/api/controller/Goods.php b/application/api/controller/Goods.php
index 1343ed3..4c5bb64 100644
--- a/application/api/controller/Goods.php
+++ b/application/api/controller/Goods.php
@@ -62,7 +62,7 @@ class Goods extends Api
         $goods['line_price'] = $goods_spec['line_price'];
         //判断是否打折
         $goods['is_discount'] = 'is';
-        if ($goods_spec['goods_price'] == $goods_spec['line_price']) {
+        if (empty($goods_spec['discount'])) {
             $goods['is_discount'] = 'no';
         }
         $goods['discount'] = $goods_spec['discount'];
@@ -161,7 +161,7 @@ class Goods extends Api
             }
             //判断是否打折
             $value['is_discount'] = 'is';
-            if ($value['goods_price'] == $value['line_price']) {
+            if (empty($value['discount'])) {
                 $value['is_discount'] = 'no';
             }
         }
diff --git a/public/assets/js/backend/activity_goods/import_goods.js b/public/assets/js/backend/activity_goods/import_goods.js
new file mode 100644
index 0000000..cd3d959
--- /dev/null
+++ b/public/assets/js/backend/activity_goods/import_goods.js
@@ -0,0 +1,347 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestoregoods'], function ($, undefined, Backend, Table, Form, Template, litestoregoods) {
+
+    var Controller = {
+        index: function () {
+            $(".btn-add").data("area", ["1000px", "800px"]);
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'activity_goods/import_goods/index',
+                    add_url: 'litestore/litestoregoods/add',
+                    edit_url: 'litestore/litestoregoods/edit',
+                    del_url: 'litestore/litestoregoods/del',
+                    discount_url: 'litestore/litestoregoods/discount',
+                    multi_url: 'litestore/litestoregoods/multi',
+                    import_url: 'litestore/litestoregoods/import',
+                    table: 'litestore_goods',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'goods_id',
+                sortName: 'goods_sort',
+                search: false,
+                showExport: false,
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'goods_id', title: __('Goods_id')},
+                        {field: 'goods_name', title: __('Goods_name'), operate: 'LIKE'},
+                        {field: 'keywords', title: __('Keywords'), operate: 'LIKE'},
+                        {field: 'category.name', title: __('Category.name'), operate: 'LIKE'},
+                        {field: 'activity.name', title: __('Activity.name'), operate: 'LIKE'},
+                        // {field: 'category_id', visible: false, title: __('Category_id')},
+                        {field: 'image', title: __('Image'), formatter: Table.api.formatter.image},
+                        {field: 'images', title: __('Images'), formatter: Table.api.formatter.images},
+                        {
+                            field: 'spec_type',
+                            title: __('Spec_type'),
+                            searchList: {"10": __('Spec_type 10'), "20": __('Spec_type 20')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {field: 'stock_num', title: __('库存'), operate: false},
+                        // {field: 'deduct_stock_type', title: __('Deduct_stock_type'), searchList: {"10":__('Deduct_stock_type 10'),"20":__('Deduct_stock_type 20')}, formatter: Table.api.formatter.normal},
+                        // {field: 'freight.name', title: __('Freight.name')},
+                        // {field: 'sales_initial', title: __('Sales_initial')},
+                        {field: 'sales_actual', title: __('Sales_actual')},
+                        // {field: 'goods_sort', title: __('Goods_sort')},
+                        // {field: 'delivery_id', title: __('Delivery_id')},
+                        {
+                            field: 'goods_status',
+                            title: __('Goods_status'),
+                            searchList: {"10": __('Goods_status 10'), "20": __('Goods_status 20')},
+                            formatter: Table.api.formatter.status
+                        },
+                        {
+                            field: 'is_delete',
+                            title: __('Is_delete'),
+                            searchList: {"0": __('Is_delete 0'), "1": __('Is_delete 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'is_index',
+                            title: __('Is_index'),
+                            searchList: {"0": __('Is_index 0'), "1": __('Is_index 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'createtime',
+                            title: __('Createtime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'updatetime',
+                            title: __('Updatetime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'operate',
+                            title: __('Operate'),
+                            table: table,
+                            events: Table.api.events.operate,
+                            formatter: Table.api.formatter.operate
+                        }
+                    ]
+                ]
+            });
+
+
+
+
+
+            table.on('.btn-discount', function (e, settings, json, xhr) {
+                Fast.api.open()
+            });
+            //*************************** 自定义export开始
+            var submitForm = function (ids, layero) {
+                var options = table.bootstrapTable('getOptions');
+                console.log(options);
+                var columns = [];
+                $.each(options.columns[0], function (i, j) {
+                    if (j.field && !j.checkbox && j.visible && j.field != 'operate') {
+                        columns.push(j.field);
+                    }
+                });
+                var search = options.queryParams({});
+                $("input[name=search]", layero).val(options.searchText);
+                $("input[name=ids]", layero).val(ids);
+                $("input[name=filter]", layero).val(search.filter);
+                $("input[name=op]", layero).val(search.op);
+                $("input[name=columns]", layero).val(columns.join(','));
+                $("form", layero).submit();
+            };
+            $(document).on("click", ".btn-export", function () {
+                var ids = Table.api.selectedids(table);
+                var page = table.bootstrapTable('getData');
+                var all = table.bootstrapTable('getOptions').totalRows;
+                console.log(ids, page, all);
+                Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("litestore/litestoregoods/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {
+                    title: '导出数据',
+                    btn: ["导出(" + all + "条)"],
+                    // btn: ["选中项(" + ids.length + "条)"],
+                    success: function (layero, index) {
+                        $(".layui-layer-btn a", layero).addClass("layui-layer-btn0");
+                    }
+                    , yes: function (index, layero) {
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn2: function (index, layero) {
+                        var ids = [];
+                        $.each(page, function (i, j) {
+                            ids.push(j.id);
+                        });
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn3: function (index, layero) {
+                        submitForm("all", layero);
+                        return false;
+                    }
+                })
+            });
+            //*************************** 自定义export结束
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+            table.on('load-success.bs.table', function (data) {
+                $(".btn-editone").data("area", ["1000px", "800px"]);
+            });
+
+        },
+        add: function () {
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            });
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+
+
+        },
+        edit: function () {
+            //Controller.api.bindevent();
+
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                //Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            }, from_specData);
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
+        }
+    };
+    return Controller;
+});
\ No newline at end of file
diff --git a/public/assets/js/backend/activity_goods/new_goods.js b/public/assets/js/backend/activity_goods/new_goods.js
new file mode 100644
index 0000000..34120a1
--- /dev/null
+++ b/public/assets/js/backend/activity_goods/new_goods.js
@@ -0,0 +1,347 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestoregoods'], function ($, undefined, Backend, Table, Form, Template, litestoregoods) {
+
+    var Controller = {
+        index: function () {
+            $(".btn-add").data("area", ["1000px", "800px"]);
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'activity_goods/new_goods/index',
+                    add_url: 'litestore/litestoregoods/add',
+                    edit_url: 'litestore/litestoregoods/edit',
+                    del_url: 'litestore/litestoregoods/del',
+                    discount_url: 'litestore/litestoregoods/discount',
+                    multi_url: 'litestore/litestoregoods/multi',
+                    import_url: 'litestore/litestoregoods/import',
+                    table: 'litestore_goods',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'goods_id',
+                sortName: 'goods_sort',
+                search: false,
+                showExport: false,
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'goods_id', title: __('Goods_id')},
+                        {field: 'goods_name', title: __('Goods_name'), operate: 'LIKE'},
+                        {field: 'keywords', title: __('Keywords'), operate: 'LIKE'},
+                        {field: 'category.name', title: __('Category.name'), operate: 'LIKE'},
+                        {field: 'activity.name', title: __('Activity.name'), operate: 'LIKE'},
+                        // {field: 'category_id', visible: false, title: __('Category_id')},
+                        {field: 'image', title: __('Image'), formatter: Table.api.formatter.image},
+                        {field: 'images', title: __('Images'), formatter: Table.api.formatter.images},
+                        {
+                            field: 'spec_type',
+                            title: __('Spec_type'),
+                            searchList: {"10": __('Spec_type 10'), "20": __('Spec_type 20')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {field: 'stock_num', title: __('库存'), operate: false},
+                        // {field: 'deduct_stock_type', title: __('Deduct_stock_type'), searchList: {"10":__('Deduct_stock_type 10'),"20":__('Deduct_stock_type 20')}, formatter: Table.api.formatter.normal},
+                        // {field: 'freight.name', title: __('Freight.name')},
+                        // {field: 'sales_initial', title: __('Sales_initial')},
+                        {field: 'sales_actual', title: __('Sales_actual')},
+                        // {field: 'goods_sort', title: __('Goods_sort')},
+                        // {field: 'delivery_id', title: __('Delivery_id')},
+                        {
+                            field: 'goods_status',
+                            title: __('Goods_status'),
+                            searchList: {"10": __('Goods_status 10'), "20": __('Goods_status 20')},
+                            formatter: Table.api.formatter.status
+                        },
+                        {
+                            field: 'is_delete',
+                            title: __('Is_delete'),
+                            searchList: {"0": __('Is_delete 0'), "1": __('Is_delete 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'is_index',
+                            title: __('Is_index'),
+                            searchList: {"0": __('Is_index 0'), "1": __('Is_index 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'createtime',
+                            title: __('Createtime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'updatetime',
+                            title: __('Updatetime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'operate',
+                            title: __('Operate'),
+                            table: table,
+                            events: Table.api.events.operate,
+                            formatter: Table.api.formatter.operate
+                        }
+                    ]
+                ]
+            });
+
+
+
+
+
+            table.on('.btn-discount', function (e, settings, json, xhr) {
+                Fast.api.open()
+            });
+            //*************************** 自定义export开始
+            var submitForm = function (ids, layero) {
+                var options = table.bootstrapTable('getOptions');
+                console.log(options);
+                var columns = [];
+                $.each(options.columns[0], function (i, j) {
+                    if (j.field && !j.checkbox && j.visible && j.field != 'operate') {
+                        columns.push(j.field);
+                    }
+                });
+                var search = options.queryParams({});
+                $("input[name=search]", layero).val(options.searchText);
+                $("input[name=ids]", layero).val(ids);
+                $("input[name=filter]", layero).val(search.filter);
+                $("input[name=op]", layero).val(search.op);
+                $("input[name=columns]", layero).val(columns.join(','));
+                $("form", layero).submit();
+            };
+            $(document).on("click", ".btn-export", function () {
+                var ids = Table.api.selectedids(table);
+                var page = table.bootstrapTable('getData');
+                var all = table.bootstrapTable('getOptions').totalRows;
+                console.log(ids, page, all);
+                Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("litestore/litestoregoods/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {
+                    title: '导出数据',
+                    btn: ["导出(" + all + "条)"],
+                    // btn: ["选中项(" + ids.length + "条)"],
+                    success: function (layero, index) {
+                        $(".layui-layer-btn a", layero).addClass("layui-layer-btn0");
+                    }
+                    , yes: function (index, layero) {
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn2: function (index, layero) {
+                        var ids = [];
+                        $.each(page, function (i, j) {
+                            ids.push(j.id);
+                        });
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn3: function (index, layero) {
+                        submitForm("all", layero);
+                        return false;
+                    }
+                })
+            });
+            //*************************** 自定义export结束
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+            table.on('load-success.bs.table', function (data) {
+                $(".btn-editone").data("area", ["1000px", "800px"]);
+            });
+
+        },
+        add: function () {
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            });
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+
+
+        },
+        edit: function () {
+            //Controller.api.bindevent();
+
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                //Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            }, from_specData);
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
+        }
+    };
+    return Controller;
+});
\ No newline at end of file
diff --git a/public/assets/js/backend/activity_goods/seckill_goods.js b/public/assets/js/backend/activity_goods/seckill_goods.js
new file mode 100644
index 0000000..9ba8fa2
--- /dev/null
+++ b/public/assets/js/backend/activity_goods/seckill_goods.js
@@ -0,0 +1,347 @@
+define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestoregoods'], function ($, undefined, Backend, Table, Form, Template, litestoregoods) {
+
+    var Controller = {
+        index: function () {
+            $(".btn-add").data("area", ["1000px", "800px"]);
+            // 初始化表格参数配置
+            Table.api.init({
+                extend: {
+                    index_url: 'activity_goods/seckill_goods/index',
+                    add_url: 'litestore/litestoregoods/add',
+                    edit_url: 'litestore/litestoregoods/edit',
+                    del_url: 'litestore/litestoregoods/del',
+                    discount_url: 'litestore/litestoregoods/discount',
+                    multi_url: 'litestore/litestoregoods/multi',
+                    import_url: 'litestore/litestoregoods/import',
+                    table: 'litestore_goods',
+                }
+            });
+
+            var table = $("#table");
+
+            // 初始化表格
+            table.bootstrapTable({
+                url: $.fn.bootstrapTable.defaults.extend.index_url,
+                pk: 'goods_id',
+                sortName: 'goods_sort',
+                search: false,
+                showExport: false,
+                columns: [
+                    [
+                        {checkbox: true},
+                        {field: 'goods_id', title: __('Goods_id')},
+                        {field: 'goods_name', title: __('Goods_name'), operate: 'LIKE'},
+                        {field: 'keywords', title: __('Keywords'), operate: 'LIKE'},
+                        {field: 'category.name', title: __('Category.name'), operate: 'LIKE'},
+                        {field: 'activity.name', title: __('Activity.name'), operate: 'LIKE'},
+                        // {field: 'category_id', visible: false, title: __('Category_id')},
+                        {field: 'image', title: __('Image'), formatter: Table.api.formatter.image},
+                        {field: 'images', title: __('Images'), formatter: Table.api.formatter.images},
+                        {
+                            field: 'spec_type',
+                            title: __('Spec_type'),
+                            searchList: {"10": __('Spec_type 10'), "20": __('Spec_type 20')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {field: 'stock_num', title: __('库存'), operate: false},
+                        // {field: 'deduct_stock_type', title: __('Deduct_stock_type'), searchList: {"10":__('Deduct_stock_type 10'),"20":__('Deduct_stock_type 20')}, formatter: Table.api.formatter.normal},
+                        // {field: 'freight.name', title: __('Freight.name')},
+                        // {field: 'sales_initial', title: __('Sales_initial')},
+                        {field: 'sales_actual', title: __('Sales_actual')},
+                        // {field: 'goods_sort', title: __('Goods_sort')},
+                        // {field: 'delivery_id', title: __('Delivery_id')},
+                        {
+                            field: 'goods_status',
+                            title: __('Goods_status'),
+                            searchList: {"10": __('Goods_status 10'), "20": __('Goods_status 20')},
+                            formatter: Table.api.formatter.status
+                        },
+                        {
+                            field: 'is_delete',
+                            title: __('Is_delete'),
+                            searchList: {"0": __('Is_delete 0'), "1": __('Is_delete 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'is_index',
+                            title: __('Is_index'),
+                            searchList: {"0": __('Is_index 0'), "1": __('Is_index 1')},
+                            formatter: Table.api.formatter.normal
+                        },
+                        {
+                            field: 'createtime',
+                            title: __('Createtime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'updatetime',
+                            title: __('Updatetime'),
+                            operate: 'RANGE',
+                            addclass: 'datetimerange',
+                            formatter: Table.api.formatter.datetime
+                        },
+                        {
+                            field: 'operate',
+                            title: __('Operate'),
+                            table: table,
+                            events: Table.api.events.operate,
+                            formatter: Table.api.formatter.operate
+                        }
+                    ]
+                ]
+            });
+
+
+
+
+
+            table.on('.btn-discount', function (e, settings, json, xhr) {
+                Fast.api.open()
+            });
+            //*************************** 自定义export开始
+            var submitForm = function (ids, layero) {
+                var options = table.bootstrapTable('getOptions');
+                console.log(options);
+                var columns = [];
+                $.each(options.columns[0], function (i, j) {
+                    if (j.field && !j.checkbox && j.visible && j.field != 'operate') {
+                        columns.push(j.field);
+                    }
+                });
+                var search = options.queryParams({});
+                $("input[name=search]", layero).val(options.searchText);
+                $("input[name=ids]", layero).val(ids);
+                $("input[name=filter]", layero).val(search.filter);
+                $("input[name=op]", layero).val(search.op);
+                $("input[name=columns]", layero).val(columns.join(','));
+                $("form", layero).submit();
+            };
+            $(document).on("click", ".btn-export", function () {
+                var ids = Table.api.selectedids(table);
+                var page = table.bootstrapTable('getData');
+                var all = table.bootstrapTable('getOptions').totalRows;
+                console.log(ids, page, all);
+                Layer.confirm("请选择导出的选项<form action='" + Fast.api.fixurl("litestore/litestoregoods/export") + "' method='post' target='_blank'><input type='hidden' name='ids' value='' /><input type='hidden' name='filter' ><input type='hidden' name='op'><input type='hidden' name='search'><input type='hidden' name='columns'></form>", {
+                    title: '导出数据',
+                    btn: ["导出(" + all + "条)"],
+                    // btn: ["选中项(" + ids.length + "条)"],
+                    success: function (layero, index) {
+                        $(".layui-layer-btn a", layero).addClass("layui-layer-btn0");
+                    }
+                    , yes: function (index, layero) {
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn2: function (index, layero) {
+                        var ids = [];
+                        $.each(page, function (i, j) {
+                            ids.push(j.id);
+                        });
+                        submitForm(ids.join(","), layero);
+                        return false;
+                    }
+                    ,
+                    btn3: function (index, layero) {
+                        submitForm("all", layero);
+                        return false;
+                    }
+                })
+            });
+            //*************************** 自定义export结束
+            // 为表格绑定事件
+            Table.api.bindevent(table);
+            table.on('load-success.bs.table', function (data) {
+                $(".btn-editone").data("area", ["1000px", "800px"]);
+            });
+
+        },
+        add: function () {
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            });
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+
+
+        },
+        edit: function () {
+            //Controller.api.bindevent();
+
+            Form.api.bindevent($("form[role=form]"), function (data, ret) {
+                //Fast.api.close(data);
+                Toastr.success("商品提交成功");
+            }, function (data, ret) {
+                Toastr.success("商品提交失败");
+            }, function (success, error) {
+                //注意如果我们需要阻止表单,可以在此使用return false;即可
+                //如果我们处理完成需要再次提交表单则可以使用submit提交,如下
+                console.log(this);
+                var form = this;
+                if (form.size() === 0) {
+                    Toastr.error("表单未初始化完成,无法提交");
+                    return false;
+                }
+                var type = form.attr("method") ? form.attr("method").toUpperCase() : 'GET';
+                type = type && (type === 'GET' || type === 'POST') ? type : 'GET';
+                url = form.attr("action");
+                url = url ? url : location.href;
+                //修复当存在多选项元素时提交的BUG
+                var params = {};
+                var multipleList = $("[name$='[]']", form);
+                if (multipleList.size() > 0) {
+                    var postFields = form.serializeArray().map(function (obj) {
+                        return $(obj).prop("name");
+                    });
+                    $.each(multipleList, function (i, j) {
+                        if (postFields.indexOf($(this).prop("name")) < 0) {
+                            params[$(this).prop("name")] = '';
+                        }
+                    });
+                }
+                var dataParam = {spec_many: specMany.getData()};
+                console.log(dataParam);
+                Fast.api.ajax({
+                    type: type,
+                    url: url,
+                    data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : '') + (Object.keys(dataParam).length > 0 ? '&' + $.param(dataParam) : ''),
+                    dataType: 'json',
+                    complete: function (xhr) {
+                        var token = xhr.getResponseHeader('__token__');
+                        if (token) {
+                            $("input[name='__token__']", form).val(token);
+                        }
+                        if (xhr.responseJSON.code == 1) {
+                            //关闭弹窗
+                            var index = parent.Layer.getFrameIndex(window.name);
+                            var callback = parent.$("#layui-layer" + index).data("callback");
+                            parent.Layer.close(index);
+                            //刷新列表
+                            parent.$("#table").bootstrapTable('refresh');
+                        }
+                    }
+                }, function (data, ret) {
+                    $('.form-group', form).removeClass('has-feedback has-success has-error');
+                    if (data && typeof data === 'object') {
+                        if (typeof data.token !== 'undefined') {
+                            $("input[name='__token__']", form).val(data.token);
+                        }
+                        if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') {
+                            data.callback.call(form, data);
+                        }
+                    }
+                }, function (data, ret) {
+                    if (data && typeof data === 'object' && typeof data.token !== 'undefined') {
+                        $("input[name='__token__']", form).val(data.token);
+                    }
+                });
+                return false;
+            });
+            // 注册商品多规格组件
+            var specMany = new GoodsSpec({
+                container: '.goods-spec-many',
+                OutForm: Form
+            }, from_specData);
+
+            // 切换单/多规格
+            $('select[name="row[spec_type]"').change(function (e) {
+                var $goodsSpecMany = $('.goods-spec-many')
+                    , $goodsSpecSingle = $('.goods-spec-single');
+                if (e.currentTarget.value === '10') {
+                    $goodsSpecMany.hide() && $goodsSpecSingle.show();
+                } else {
+                    $goodsSpecMany.show() && $goodsSpecSingle.hide();
+                }
+            });
+        },
+        api: {
+            bindevent: function () {
+                Form.api.bindevent($("form[role=form]"));
+            }
+        }
+    };
+    return Controller;
+});
\ No newline at end of file
diff --git a/public/assets/js/backend/litestore/litestoregoods.js b/public/assets/js/backend/litestore/litestoregoods.js
index d76d7e9..01d06f3 100644
--- a/public/assets/js/backend/litestore/litestoregoods.js
+++ b/public/assets/js/backend/litestore/litestoregoods.js
@@ -10,6 +10,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestor
                     add_url: 'litestore/litestoregoods/add',
                     edit_url: 'litestore/litestoregoods/edit',
                     del_url: 'litestore/litestoregoods/del',
+                    discount_url: 'litestore/litestoregoods/discount',
                     multi_url: 'litestore/litestoregoods/multi',
                     import_url: 'litestore/litestoregoods/import',
                     table: 'litestore_goods',
@@ -91,6 +92,28 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template', 'litestor
                     ]
                 ]
             });
+
+
+            $(document).on("click", ".btn-discount", function () {
+                var ids = Table.api.selectedids(table);
+                layer.prompt({
+                        formType: 0,
+                        value: '8.5折',
+                        title: '请输入折扣',
+                        area: ['800px', '350px'] //自定义文本域宽高
+                    },function(value, index, elem){
+                    Fast.api.ajax({
+                        url:'litestore/litestoregoods/discount?id='+ids+'&discount='+value,
+                    },function (data,ret){
+                        Fast.api.success('data');
+                        layer.close(index);
+                        return false;
+                    },function (data,ret){
+                        Fast.api.success('失败')
+                        return true;
+                    });
+                });
+            });
             //*************************** 自定义export开始
             var submitForm = function (ids, layero) {
                 var options = table.bootstrapTable('getOptions');
--
libgit2 0.24.0