dever 3 years ago
parent
commit
396a1979c8

+ 344 - 0
app/factory/assets/pc/html/cashier.html

@@ -0,0 +1,344 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0" />
+<meta name="author" content="siweiyong 2602812659@qq.com"/>
+<title>收银台</title>
+<link rel="stylesheet" href="../script/lib/miniui/themes/default/miniui.css">
+<link rel="stylesheet" href="../script/lib/layui/css/layui.css" />
+<link rel="stylesheet" href="../script/lib/cashier/common.css">
+<link rel="stylesheet" href="../script/lib/layui/admin/modules/plugin/formselects/formselects.css" media="all" />
+<script src="../script/lib/jquery/jquery.min.js"></script>
+<script src="../script/lib/miniui/miniui.js"></script>
+<script src="../script/lib/layui/layui.js"></script>
+<script><{Dever::script()}></script>
+<script src="../script/dever/core.js"></script>
+</head>
+<body style="background: #F6F7F9;">
+<div class="main">
+<form class="layui-form" lay-filter="form">
+	<div class="layui-row">
+		<div class="main_left layui-col-xs12 layui-col-md3">
+			<div class="layui-row">
+				<div class="top">
+					<i class="layui-icon layui-icon-app"></i>商品列表
+				</div>
+				<div class="left_main">
+					<input id="key" class="mini-textbox" placeholder="请输入商品名称" onenter="onKeyEnter"/>
+    				<a class="mini-button" onclick="search()">查询</a> 
+    				<ul id="tree1" class="mini-tree" url="<{$url}>" showTreeIcon="true" textField="name" idField="id" expandOnLoad="true" onNodeClick="onNodeClick">
+					</ul>
+				</div>
+			</div>
+		</div>
+		<div class="main_right layui-col-xs12 layui-col-md9">
+			<div class="layui-row">
+				<div class="top">
+					<label>选择工厂:</label>
+					<div class="layui-input-inline">
+
+						<div><select xm-select="factory_id" xm-select-skin="normal" xm-select-search="<{$search}>" xm-select-search-type="dl" xm-select-radio="" class="update_value form-control layui-input layui-select" name="factory_id" id="factory_id"  ></select></div>
+
+					</div>
+					<div class="layui-input-inline">
+						<button class="layui-btn layui-btn-button" type="button" style="vertical-align: middle;margin-bottom: 2px;" onclick="setFactory()">确认选择</button>
+					</div>
+				</div>
+				<div class="goods_list">
+					<table class="layui-table">
+						<thead>
+							<tr>
+								<th lay-data="{field:'id'}">商品编码</th>
+								<th lay-data="{field:'name'}">商品名称</th>
+								<th lay-data="{field:'price', edit: 'text'}">售价(元)</th>
+								<th lay-data="{field:'number', edit: 'text'}">数量</th>
+								<th lay-data="{field:'operation'}">操作</th>
+							</tr>
+						</thead>
+						<tbody id="goods">
+							
+						</tbody>
+					</table>
+				</div>
+				<div class="total ft16">
+					合计:【<span> 总金额:<i class="totalMoney">0.00</i> </span>】【<span> 总数量:<i class="totalQuantity">0</i> </span>
+				</div>
+				<table class="reading layui-table" lay-even="">
+					<tbody>
+						<tr>
+							<td>选择仓库</td>
+							<td colspan="3">
+								<div class="layui-input-inline">
+									<select xm-select="store_id" xm-select-skin="normal" xm-select-search="<{$search_store}>" xm-select-search-type="dl" xm-select-radio="" class="update_value form-control layui-input layui-select" name="store_id" id="store_id"  ></select>
+								</div>
+								<!--
+								<button class="card_reading layui-btn">读卡</button>
+								<a href="#" class="registration layui-btn layui-btn-primary">会员登记</a>
+								-->
+							</td>
+						</tr>
+						<!--
+						<tr>
+							<td>会员卡号:</td>
+							<td></td>
+							<td>会员姓名:</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td>会员级别:</td>
+							<td></td>
+							<td>有效期:</td>
+							<td></td>
+						</tr>
+						<tr>
+							<td>可用积分:</td>
+							<td></td>
+							<td>可用储值:</td>
+							<td></td>
+						</tr>
+						-->
+					</tbody>
+				</table>
+				<div class="towbtn">
+					<input type="button" id="settlement" value="订货下单">
+				</div>
+			</div>
+		</div>
+	</div>
+</div>
+<div class="mask_box">
+	<div class="mask"></div>
+	<div class="box">
+		<div class="box_top">结算</div>
+		<div class="box_block box_block1">
+			<div class="block_left"><label for="">应付金额:</label></div>
+			<div class="block_right"><input type="text" class="layui-input" value="23131" readonly style="border: none;" /></div>
+		</div>
+		<div class="box_block box_block2">
+			<div class="block_left"><input type="checkbox" name="" />优惠券:</div>
+			<div class="block_right">
+				<select class="layui-select" name="" id="">
+					<option value="0">请选择</option>
+					<option value="1">1</option>
+					<option value="2">2</option>
+					<option value="3">3</option>
+					<option value="4">4</option>
+				</select>
+			</div>
+			<div class="block_left">还需支付:</div>
+			<div class="block_right"><input type="text" class="layui-input" value="32432" readonly style="border: none;" /></div>
+		</div>
+		<div class="box_block box_block3">
+			<div class="block_left"><input type="radio" name="payment" /><label for="use_coupon">现金支付:</label></div>
+			<div class="block_right">
+				<input type="text" class="layui-input" />
+			</div>
+			<br style="clear: both;">
+			<div class="block_left"><input type="radio" name="payment" /><label for="use_coupon">移动支付:</label></div>
+			<div class="block_right">
+				<input type="text" class="layui-input" />
+			</div>
+			<br style="clear: both;">
+			<div class="block_left"><input type="radio" name="payment" /><label for="use_coupon">其他支付:</label></div>
+			<div class="block_right">
+				<input type="text" class="layui-input" />
+			</div>
+		</div>
+		<div class="remark_mess">
+			<div class="block_left">
+				备注:
+			</div>
+			<div class="block_right">
+				<textarea class="layui-textarea" name="" rows="" cols="" maxlength="200" placeholder="最多输入200字符"></textarea>
+			</div>
+			<br style="clear: both;">
+			<div class="block_left">
+				交易时间:
+			</div>
+			<div class="block_right">
+				<input type="text" value="2018-11-23 08:23:43" class="layui-input" readonly style="border: none;" />
+			</div>
+		</div>
+		<div class="bot">
+			<input type="button" value="提交">
+			<input type="text" value="取消">
+		</div>
+	</div>
+</form>
+</div>
+<script>
+	var form;
+	layui.config(
+	{
+		base: '../script/lib/layui/admin/' //静态资源所在路径
+		,version: true
+	}).extend(
+	{
+		index: 'lib/index', //主入口模块
+		formSelects: 'plugin/formselects/formselects'
+	}).use(['index', 'contlist', 'table', 'form', 'formSelects','layer'], function()
+	{
+		var table = layui.table;
+		form = layui.form; 
+		var formSelects = layui.formSelects;
+	});
+
+	$(function()
+	{
+		$("#settlement").click(function(){
+			var store_id = $('.xm-select-parent[fs_id="store_id"] span[fsw="xm-select"]').attr('value');
+			console.info(store_id);
+			if (!store_id) {
+				layui.layer.alert('请先选择仓库');
+
+				return;
+			}
+
+			layui.layer.confirm('确定订货下单吗?', function() {
+				$("#goods tr").each(function(){
+			
+			        //获取当前行的单价
+			        var id = $(this).children("td:eq(0)").html();
+			        var num = $(this).find(".num").val();
+			        console.info(id, num);
+				}) 
+			});
+
+			//$(".mask_box").show();
+		})
+		$(".bot input:nth-child(2)").click(function(){
+			$(".mask_box").hide();
+		})
+
+		$("#goods").on("keyup", ".goods_num", function() {
+			var num = parseInt($(this).val());
+			if (!num || num <= 0) {
+				num = 1;
+				$(this).val(1);
+			}
+	        var id = $(this).parent().attr('value');
+	        goods[id].num = num;
+			setTotal();
+		})
+	})
+
+	mini.parse();
+    var tree = mini.get("tree1");
+
+    function search() 
+    {
+        var key = mini.get("key").getValue();
+        if (key == "") {
+            tree.clearFilter();
+        } else {
+            key = key.toLowerCase();                
+            tree.filter(function (node) {
+                var name = node.name ? node.name.toLowerCase() : "";
+                if (name.indexOf(key) != -1) {
+                    return true;
+                }
+            });
+        }
+    }
+    function onKeyEnter(e)
+    {
+        search();
+    }
+
+    var goods = {};
+	function onNodeClick()
+	{  
+        var node = mini.get("tree1").getSelectedNode();
+  		if(node.end) {
+  			var key = node.id;
+  			if (!goods[key]) {
+  				goods[key] = node;
+  				goods[key].price = parseFloat(goods[key].price);
+  				goods[key].num = 1;
+  				create(node);
+  				setTotal();
+  			} else {
+  				add(key);
+  			}
+  		}
+	}
+
+	function get(key)
+	{
+		return $('#goods_' + key);
+	}
+
+	function create(node)
+	{
+		if (!get(node.id).length) {
+			var addtr = '<tr class="mytr" id="goods_'+node.id+'">';
+			addtr += '<td class="goods_id">'+node.id+'</td>';
+			addtr += '<td class="goods_name">'+node.name+'</td>'	;					
+			addtr += '<td class="goods_price">'+node.price+'</td>';
+			addtr += '<td><div class="jiajian" value='+node.id+'><span class="jian" onclick="dec(\''+node.id+'\')">-</span><input type="text" value="'+node.num+'" class="goods_num"><span class="jia" onclick="add(\''+node.id+'\')">+</span></div></td>';					
+			addtr += '<td><button class="delete_btn" onclick="del(\''+node.id+'\')">删除</button></td>';						
+			addtr += '</tr>';
+			$("#goods").append(addtr);
+		}
+	}
+
+	function add(id)
+	{
+		goods[id].num += 1;
+		get(id).find('.goods_num').val(goods[id].num);
+		setTotal();
+    }
+	
+	function dec(id)
+	{
+        goods[id].num -= 1;
+		get(id).find('.goods_num').val(goods[id].num);
+		setTotal();
+    }
+
+    function del(id)
+	{
+        delete goods[id];
+		get(id).remove();
+		setTotal();
+    }
+
+
+	/*
+	//点击 - 单价 - 可编辑
+	$("#goods").on("click","td.danjia",function(){
+		if(!$(this).is('.bj')){   
+			var currentPrice = $(this).html();
+			$(this).focus();
+			$(this).addClass('bj').html('<input type="tel" class="layui-input" value="'+$(this).text()+'" />').find('input').focus().blur();    
+		} 
+	})
+	*/
+	
+	function setTotal()
+	{
+		var cash = 0;
+		var num = 0;
+		for (var i in goods) {
+			num += goods[i].num;
+			cash += goods[i].price;
+		}
+		$(".totalQuantity").html(num);
+		$(".totalMoney").html(cash*num); 
+	}
+
+	function setFactory()
+	{
+		var factory_id = $('.xm-select-parent[fs_id="factory_id"] span[fsw="xm-select"]').attr('value');
+		if (!factory_id) {
+			layui.layer.alert('请选择工厂');
+			return;
+		}
+		layui.layer.confirm('确定切换工厂吗?切换后现在选择的商品都将清空', function() {
+			location.href = '<{$host}>&factory_id=' + factory_id;
+		});
+	}
+</script>
+</body>
+</html>

+ 33 - 0
app/factory/database/goods_sku.php

@@ -126,6 +126,39 @@ $config = array
     # request 请求接口定义
     'request' => array
     (
+        'getDataPage' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'factory_id' => array('yes-t_1.factory_id'),
+                'name' => array('yes-t_2.name', 'like'),
+                'sell_num' => array('yes', '<'),
+                'column' => array('yes-t_2.column_id', 'like'),
+                'category' => array('yes-t_2.category', 'like'),
+                'top_category_id' => array('yes-t_2.top_category_id'),
+                'second_category_id' => array('yes-t_2.second_category_id'),
+                'category_id' => array('yes-t_2.category_id'),
+                'status' => array('yes-t_2.status', 1),
+                'state' => array('yes-t_2.state', 1),
+            ),
+            # 联表
+            'join' => array
+            (
+                array
+                (
+                    'table' => 'goods/info',
+                    'type' => 'left join',
+                    'on' => array('goods_id','id'),
+                    'col' => 'goods_id',
+                ),
+            ),
+            'type' => 'all',
+            'order' => array('t_2.reorder' => 'desc', 't_2.id' => 'desc', 't_1.p_price' => 'asc'),
+            //'page' => array(30, 'list'),
+            'col' => '*,t_2.name,t_2.cover,t_2.id as id,t_1.sell_num',
+        ),
+
         # 更新售出量
         'incSell' => array
         (

+ 33 - 28
app/factory/database/order.php

@@ -1,16 +1,18 @@
 <?php
-
-$pay_status = Dever::config('base', 'pay')->pay['status'];
-
 $status = array
 (
     1 => '待支付',
-    2 => '待审核',
-    3 => '待发货',
-    4 => '待收货确认',
-    5 => '已完成',
-    6 => '已完成(有退款)',
-    7 => '已取消',
+    2 => '待生产发货',
+    3 => '已发货',
+    4 => '已到货',
+    5 => '已取消',
+    6 => '缺货与报损',
+);
+
+$type = array
+(
+    1 => '仓库',
+    2 => '门店',
 );
 
 return array
@@ -21,6 +23,7 @@ return array
     'lang' => '订货单',
     'order' => 99,
     'menu' => false,
+    'status' => $status,
     # 数据结构
     'struct' => array
     (
@@ -48,41 +51,43 @@ return array
             'list'      => 'Dever::load("factory/info-find#name", {factory_id})',
         ),
 
-        'store_id'      => array
+        'name'      => array
         (
-            'type'      => 'int-11',
-            'name'      => '所属仓库',
-            'default'   => '-1',
-            'desc'      => '所属仓库',
-            'match'     => 'is_numeric',
-            'list'      => 'Dever::load("store/info-find#name", {store_id})',
+            'type'      => 'varchar-800',
+            'name'      => '订单名称',
+            'default'   => '',
+            'desc'      => '订单名称',
+            'match'     => 'is_string',
+            'update'    => 'text',
         ),
 
-        'store_order_id' => array
+        'order_num'      => array
         (
-            'type'      => 'int-11',
-            'name'      => '仓库订单id',
+            'type'      => 'varchar-100',
+            'name'      => '订单编号',
             'default'   => '',
-            'desc'      => '仓库订单id',
-            'match'     => 'is_numeric',
+            'desc'      => '订单编号',
+            'match'     => 'is_string',
+            'update'    => 'text',
+            'search'    => 'fulltext',
+            'list'      => true,
         ),
 
-        'shop_id'      => array
+        'type'      => array
         (
             'type'      => 'int-11',
-            'name'      => '所属门店',
+            'name'      => '采购来源',
             'default'   => '',
-            'desc'      => '所属门店',
+            'desc'      => '采购来源',
             'match'     => 'is_numeric',
-            'list'      => 'Dever::load("shop/info-find#name", {shop_id})',
         ),
 
-        'shop_order_id' => array
+        'type_id'      => array
         (
             'type'      => 'int-11',
-            'name'      => '门店订单id',
+            'name'      => '来源id',
             'default'   => '',
-            'desc'      => '门店订单id',
+            'desc'      => '来源id',
             'match'     => 'is_numeric',
         ),
 

+ 40 - 5
app/factory/database/order_goods.php

@@ -3,8 +3,8 @@
 $status = array
 (
     1 => '正常',
-    2 => '缺货',
-    3 => '退款',
+    2 => '已申报',
+    3 => '退款',
 );
 
 return array
@@ -14,6 +14,7 @@ return array
     # 显示给用户看的名称
     'lang' => '订单商品表',
     'menu' => false,
+    'status' => $status,
     # 数据结构
     'struct' => array
     (
@@ -37,6 +38,8 @@ return array
             'default'   => '',
             'desc'      => '所属工厂',
             'match'     => 'is_numeric',
+            'update'    => 'hidden',
+            'value'     => Dever::input('search_option_factory_id'),
             'list'      => 'Dever::load("factory/info-find#name", {factory_id})',
         ),
 
@@ -63,7 +66,7 @@ return array
         (
             'type'      => 'int-11',
             'name'      => 'sku_id',
-            'default'   => '',
+            'default'   => '-1',
             'desc'      => 'sku_id',
             'match'     => 'is_numeric',
         ),
@@ -128,11 +131,43 @@ return array
 
     'manage' => array
     (
-        
+        'insert' => false,
+        'delete' => false,
+        'page_list_table' => 'buy_order_goods',
     ),
 
     'request' => array
     (
-        
+        # 获取单条数据
+        'getIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'uid' => 'yes',
+                'shop_id' => 'yes',
+                'order_id' => 'yes',
+                'status' => 1,
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*|id',
+        ),
+
+        # 获取多条数据
+        'getDataByIds' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'uid' => 'yes',
+                'shop_id' => 'yes',
+                'order_id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'col' => '*',
+        ),
     ),
 );

+ 49 - 0
app/factory/lib/Goods.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace Factory\Lib;
+
+use Dever;
+
+class Goods
+{
+    # 获取店铺的商品SKU列表
+    public function getSkuList($factory)
+    {
+        $table = 'factory/goods_sku';
+        $where['factory_id'] = isset($factory['id']) ? $factory['id'] : $factory;
+        $method = 'getDataPage';
+        
+        $name = Dever::input('name');
+        if ($name) {
+            $where['name'] = $name;
+        }
+        
+        $data = Dever::db($table)->$method($where);
+
+        $result = array();
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k] = Dever::load('goods/lib/info')->getPayInfo($v, $v['sku_id']);
+                if (!isset($result[$v['id']])) {
+                    $result[$v['id']]['id'] = $v['id'];
+                    $result[$v['id']]['name'] = $v['name'];
+                    $result[$v['id']]['price'] = $v['p_price'];
+                    $result[$v['id']]['children'] = array();
+                }
+                if (isset($data[$k]['attr']) && $data[$k]['attr']) {
+                    $result[$v['id']]['children'][] = array
+                    (
+                    	'id' => $v['id'] . '-' . $data[$k]['sku_id'],
+                        'name' => $v['name'] . '-' . $data[$k]['sku_name'],
+                        'price' => $data[$k]['p_price'] ? $data[$k]['p_price'] : 0,
+                        'end' => true,
+                    );
+                } else {
+                	$result[$v['id']]['end'] = true;
+                }
+            }
+        }
+
+        return array_values($result);
+    }
+}

+ 25 - 0
app/factory/lib/Manage.php

@@ -142,4 +142,29 @@ class Manage
 
         return $data;
     }
+
+    # 获取工厂
+    public function search_api()
+    {
+        return Dever::search('factory/info');
+    }
+
+    # 获取工厂的商品列表
+    public function goods_api()
+    {
+        $factory_id = Dever::input('factory_id', 1);
+        return Dever::outDiy(Dever::load('factory/lib/goods')->getSkuList($factory_id));
+    }
+
+    # 获取收银台
+    public function cashier_api()
+    {
+        $data = array();
+        $factory_id = Dever::input('factory_id', 1);
+        $data['host'] = Dever::url('lib/manage.cashier', 'factory');
+        $data['url'] = Dever::url('lib/manage.goods?factory_id=' . $factory_id, 'factory');
+        $data['search'] = Dever::url('lib/manage.search?yes='.$factory_id.'&json=1', 'factory');
+        $data['search_store'] = Dever::url('lib/manage.search?json=1', 'store');
+        return Dever::render('cashier', $data);
+    }
 }

+ 1 - 1
app/factory/lib/Order.php

@@ -35,7 +35,7 @@ class Order
 			$data['status'] = 3;
 			$data['price'] = $price;
 			$data['num'] = $num;
-			$id = $state = Dever::db('shop/buy_order')->insert($where);
+			$id = $state = Dever::db('shop/buy_order')->insert($data);
 		} else {
 			$id = $info['id'];
 

+ 1 - 1
app/goods/database/info.php

@@ -501,7 +501,7 @@ $config = array
             'col' => '*,name as value,name as label|id',
         ),
 
-        # 后台搜索用到
+        # 后台搜索用到 也可以不加,自动生成
         'search' => array
         (
             # 匹配的正则或函数 选填项

+ 17 - 0
app/goods/database/info_sku.php

@@ -180,6 +180,23 @@ $config = array
     # request 请求接口定义
     'request' => array
     (
+        # 后台搜索用到 也可以不加,自动生成
+        'search' => array
+        (
+            # 匹配的正则或函数 选填项
+            'option' => array
+            (
+                'ids' => array('yes-id', 'in'),
+                'info_id' => 'yes',
+                'id' => 'yes',
+                'state' => 1,
+            ),
+            'type' => 'all',
+            'order' => array('reorder' => 'desc', 'id' => 'desc'),
+            'limit' => '0,10',
+            'col' => 'key as name, id, id as value, "" as selected, "" as disabled|id',
+        ),
+
         # 列表
         'getData' => array
         (

+ 1 - 0
app/goods/lib/Info.php

@@ -257,6 +257,7 @@ class Info
             if ($sku > 0) {
                 $where['info_id'] = $info['id'];
                 $where['id'] = $sku;
+                $where['type'] = 2;
                 $sku = Dever::db('goods/info_sku')->find($where);
                 if ($sku) {
                     $info['sku_id'] = $sku['id'];

+ 18 - 29
app/goods/lib/Manage.php

@@ -30,11 +30,6 @@ class Manage
 
     public function search_api()
     {
-        $table = 'goods/info';
-        $keyword = Dever::input('keyword');
-
-        $yes = Dever::input('yes');
-
         $where = array();
 
         $cate = Dever::input('cate');
@@ -46,35 +41,29 @@ class Manage
         if ($price_type) {
             $where['price_type'] = $price_type;
         }
+        return Dever::search('goods/info', $where);
+    }
 
-        if ($yes) {
-            $yes = Dever::db($table)->search(array('ids' => $yes));
-        }
-        if (!$keyword) {
-            $where['limit'] = '0,50';
-            $data = Dever::db($table)->search($where);
-        } else {
-            $where['name'] = $keyword;
-            $data = Dever::db($table)->search($where);
+    public function search_sku_api()
+    {
+        $where = array();
+
+        $info_id = Dever::input('info_id');
+        if ($info_id) {
+            $where['info_id'] = $info_id;
         }
 
-        $result = array();
-        if ($yes) {
-            foreach ($yes as $k => $v) {
-                if (isset($data[$k])) {
-                    unset($data[$k]);
-                }
-                $yes[$k]['selected'] = 'selected';
-            }
-            $data = $yes + $data;
+        $data = Dever::search('goods/info_sku', $where);
 
-            $data = array_merge($data, array());
-        } else {
-            $data = array_merge($data, array());
-        }
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $v['attr'] = Dever::json_decode($v['attr']);
 
-        if (!$data) {
-            Dever::alert('暂无数据');
+                if ($v['attr']) {
+                    $v['attr'] = Dever::load('attr/api')->getInfoByJson($v['attr']);
+                    $v['name'] = $v['attr']['string'];
+                }
+            }
         }
 
         return $data;

+ 53 - 2
app/goods/lib/Sku.php

@@ -35,6 +35,8 @@ class Sku
         
         $data['attr'] = Dever::input('attr');
         $data['key'] = Dever::input('key');
+        $data['option_attr'] = Dever::input('option_attr');
+        $data['option_key'] = Dever::input('option_key');
         $data['hook'] = Dever::input('hook');
 
         $data['set'] = $this->getSet($data['other']);
@@ -200,6 +202,55 @@ class Sku
             }
         }
 
+        if ($config['option_key']) {
+
+            if (!is_array($config['option_key'])) {
+                $config['option_key'] = explode(',', $config['option_key']);
+            }
+            foreach ($config['option_key'] as $k => $v) {
+                $type = 3;
+                if (strstr($v, '||')) {
+                    $temp = explode('||', $v);
+                    $v = $temp[0];
+                    $type = $temp[1];
+                }
+                if (isset($config['option_attr'][$k])) {
+                    
+                    $data = $where;
+                    if ($config['other']) {
+                        $sku = Dever::db('goods/info_sku')->one(array('key' => $v, 'info_id' => $config['goods_id']));
+                        if (!$sku) {
+                            continue;
+                        }
+                        $data[$key] = $sku['id'];
+
+                        $info = Dever::db($sku_table)->one($data);
+                    } else {
+                        $info = Dever::db('goods/info_sku')->one(array('key' => $v, 'info_id' => $config['goods_id']));
+                        $data['attr'] = $config['option_attr'][$k];
+                        $data[$key] = $v;
+                    }
+
+                    $data['type'] = $type;
+                    
+                    foreach ($config['set']['col'] as $k1 => $v1) {
+                        $value = Dever::input('option_' . $k1);
+                        if (isset($value[$k])) {
+                            $data[$k1] = $value[$k];
+                        }
+                    }
+
+                    Dever::config('base')->hook = false;
+                    if (!$info) {
+                        $temp = Dever::db($sku_table)->insert($data);
+                    } else {
+                        $data['where_id'] = $info['id'];
+                        Dever::db($sku_table)->update($data);
+                    }
+                }
+            }
+        }
+
         Dever::config('base')->hook = true;
 
         Dever::out('yes');
@@ -451,7 +502,7 @@ class Sku
                             $v1 = str_replace('|', '', $v1);
                             $option_body .= '<td width="30">'.$value.'</td>';
                         } else {
-                            $option_body .= '<td width="30"><input type="text" class="layui-input" name="'.$k1.'['.$k.']"  value="'.$value.'"/></td>';
+                            $option_body .= '<td width="30"><input type="text" class="layui-input" name="option_'.$k1.'['.$k.']"  value="'.$value.'"/></td>';
                         }
                         
                     } else {
@@ -461,7 +512,7 @@ class Sku
 
                 if ($update) {
                     $key .= '||3';
-                    $option_body .= '<input type="hidden" name="key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="attr['.$k.']">'.json_encode($id).'</textarea>';
+                    $option_body .= '<input type="hidden" name="option_key['.$k.']" value="'.$key.'"/><textarea style="display:none;" name="option_attr['.$k.']">'.json_encode($id).'</textarea>';
                 }
                 
                 $option_body .= '</tr>';

+ 5 - 0
app/store/lib/Manage.php

@@ -171,4 +171,9 @@ class Manage
 
         return $data;
     }
+
+    public function search_api()
+    {
+        return Dever::search('store/info');
+    }
 }