-
- {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
-
- {{/if}}
- {{php}}
- $hook_name = 'plugins_view_home_floor_inside_top';
- $hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>false, 'floor_id'=>$key+1, 'floor'=>$floor]);
- if(!empty($hook_data) && is_array($hook_data))
+ {{/if}}
+ {{php}}
+ $hook_name = 'plugins_view_home_floor_top_'.($key+1);
+ $hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>false, 'floor_id'=>$key+1, 'floor'=>$floor]);
+ if(!empty($hook_data) && is_array($hook_data))
+ {
+ foreach($hook_data as $hook)
{
- foreach($hook_data as $hook)
+ if(is_string($hook) || is_int($hook))
{
- if(is_string($hook) || is_int($hook))
- {
- echo htmlspecialchars_decode($hook);
- }
+ echo htmlspecialchars_decode($hook);
}
}
- {{/php}}
+ }
+ {{/php}}
-
-
-
-
{{$floor.describe}}
+
+
+
+
+
{{$floor.name}}
+
{{$floor.vice_name}}
+
+ {{if !empty($floor['config_keywords']) and is_array($floor['config_keywords'])}}
+ {{foreach $floor.config_keywords as $wd}}
+
{{$wd}}
+ {{/foreach}}
+ {{/if}}
+
+
+ 更多
+
- {{if !empty($floor['big_images'])}}
-
-
-
- {{/if}}
-
-
-
+
+
+
+
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
- plugins_view_home_aggregation_inside_bottom
+ plugins_view_home_floor_inside_top
{{/if}}
{{php}}
- $hook_name = 'plugins_view_home_aggregation_inside_bottom';
+ $hook_name = 'plugins_view_home_floor_inside_top';
$hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>false, 'floor_id'=>$key+1, 'floor'=>$floor]);
if(!empty($hook_data) && is_array($hook_data))
{
@@ -228,48 +208,110 @@
}
}
{{/php}}
-
-
-
- {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
-
- plugins_view_home_floor_bottom_{{$key+1}}
-
- {{/if}}
- {{php}}
- $hook_name = 'plugins_view_home_floor_bottom_'.($key+1);
- $hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>false, 'floor_id'=>$key+1, 'floor'=>$floor]);
- if(!empty($hook_data) && is_array($hook_data))
- {
- foreach($hook_data as $hook)
+
+ {{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
+
+ plugins_view_home_floor_bottom_{{$key+1}}
+
+ {{/if}}
+ {{php}}
+ $hook_name = 'plugins_view_home_floor_bottom_'.($key+1);
+ $hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>false, 'floor_id'=>$key+1, 'floor'=>$floor]);
+ if(!empty($hook_data) && is_array($hook_data))
{
- if(is_string($hook) || is_int($hook))
+ foreach($hook_data as $hook)
{
- echo htmlspecialchars_decode($hook);
+ if(is_string($hook) || is_int($hook))
+ {
+ echo htmlspecialchars_decode($hook);
+ }
}
}
- }
- {{/php}}
- {{/foreach}}
- {{/if}}
-
+ {{/php}}
+ {{/foreach}}
+ {{/if}}
+
+{{/if}}
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
@@ -371,4 +391,7 @@
{{/foreach}}
{{/if}}
-{{include file="public/footer" /}}
\ No newline at end of file
+{{include file="public/footer" /}}
+
+
+{{include file="../../../layout/view/form_back" /}}
\ No newline at end of file
diff --git a/application/index/view/default/public/footer.html b/application/index/view/default/public/footer.html
index 2781d304dcdb9dfa382e5bd31be361da5f7c283a..ceb9948f7c12d9ecdf464dfcf9603d8c203e8031 100755
--- a/application/index/view/default/public/footer.html
+++ b/application/index/view/default/public/footer.html
@@ -85,6 +85,9 @@
+{{if isset($is_load_layout_admin) and $is_load_layout_admin eq 1}}
+
+{{/if}}
{{if !empty($plugins_js)}}
diff --git a/application/index/view/default/public/header.html b/application/index/view/default/public/header.html
index 118f4de1a47ea0bced2d43ffa59b2e34a2275f1b..7c376551d659494aef800281072106dc491d793b 100755
--- a/application/index/view/default/public/header.html
+++ b/application/index/view/default/public/header.html
@@ -24,9 +24,15 @@
-
+
{{if !empty($plugins_css)}}
+ {{/if}}
+ {{if isset($is_load_layout) and $is_load_layout eq 1}}
+
+ {{/if}}
+ {{if isset($is_load_layout_admin) and $is_load_layout_admin eq 1}}
+
{{/if}}
{{if !empty($module_css)}}
diff --git a/application/lang/zh-cn.php b/application/lang/zh-cn.php
index 3ef2935426841d99fb8dbd12137beafe2b82f220..9ce54ddad98ba616e85264692dc6d4fe18babe22 100755
--- a/application/lang/zh-cn.php
+++ b/application/lang/zh-cn.php
@@ -362,6 +362,7 @@ return [
'common_site_floor_data_type_list' => [
0 => ['value' => 0, 'name' => '自动模式', 'checked' => true],
1 => ['value' => 1, 'name' => '手动模式'],
+ 2 => ['value' => 2, 'name' => '拖拽模式'],
],
// 色彩值
diff --git a/application/layout/service/BaseLayout.php b/application/layout/service/BaseLayout.php
new file mode 100644
index 0000000000000000000000000000000000000000..49316d5e06f2dc6d09b65161ebbbd8535c3f5864
--- /dev/null
+++ b/application/layout/service/BaseLayout.php
@@ -0,0 +1,769 @@
+ '实线',
+ 'dashed' => '虚线',
+ 'dotted' => '点状',
+ 'double' => '双线',
+ ];
+
+ // 商品样式类型
+ public static $goods_view_list_show_style = [
+ 'routine' => '常规模式',
+ 'rolling' => '滚动模式',
+ ];
+
+ // 多图样式类型
+ public static $many_images_view_list_show_style = [
+ 'routine' => '轮播模式',
+ 'rolling' => '滚动模式',
+ 'list' => '列表模式',
+ ];
+
+ /**
+ * 配置处理-管理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-17
+ * @desc description
+ * @param [array] $config [配置信息]
+ * @param [array] $params [输入参数]
+ */
+ public static function ConfigAdminHandle($config, $params = [])
+ {
+ if(!empty($config))
+ {
+ // 是否数组
+ if(!is_array($config))
+ {
+ $config = json_decode($config, true);
+ }
+ if(!empty($config))
+ {
+ foreach($config as &$v)
+ {
+ // 配置信息处理
+ if(!empty($v['config']))
+ {
+ $v['config']['frontend_config'] = empty($v['config']['frontend_config']) ? '' : self::FrontendConfigHandle($v['config']['frontend_config']);
+ }
+
+ // 布局类型
+ $v['value_arr'] = explode(':', $v['value']);
+
+ // 布局
+ if(!empty($v['children']) && is_array($v['children']))
+ {
+ foreach($v['children'] as &$vs)
+ {
+ // 配置信息处理
+ if(!empty($vs['config']))
+ {
+ $vs['config']['frontend_config'] = empty($vs['config']['frontend_config']) ? '' : self::FrontendConfigHandle($vs['config']['frontend_config']);
+ }
+
+ // 容器
+ if(!empty($vs['children']) && is_array($vs['children']))
+ {
+ // 模块
+ foreach($vs['children'] as &$vss)
+ {
+ if(!empty($vss['value']) && !empty($vss['config']))
+ {
+ // 前端配置信息处理
+ $vss['config']['frontend_config'] = empty($vss['config']['frontend_config']) ? '' : self::FrontendConfigHandle($vss['config']['frontend_config']);
+
+ // 滚动配置
+ if(array_key_exists('view_list_show_style_value', $vss['config']))
+ {
+ $vss['config']['view_list_show_style_value_arr'] = empty($vss['config']['view_list_show_style_value']) ? '' : json_decode(urldecode($vss['config']['view_list_show_style_value']), true);
+ }
+
+ // 根据模块类型处理
+ switch($vss['value'])
+ {
+ // 视频 video
+ case 'video' :
+ $vss['config']['content_video'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_video']);
+ break;
+
+ // 单图 images
+ case 'images' :
+ $vss['config']['content_images'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_images']);
+ break;
+
+ // 多图 many-images
+ case 'many-images' :
+ foreach($vss['config']['data_list'] as &$mil)
+ {
+ $mil['images'] = ResourcesService::AttachmentPathViewHandle($mil['images']);
+ }
+ $key = 'content_images_';
+ foreach($vss['config'] as $mik=>$miv)
+ {
+ if(substr($mik, 0, strlen($key)) == $key)
+ {
+ $vss['config'][$mik] = ResourcesService::AttachmentPathViewHandle($miv);
+ }
+ }
+ break;
+
+ // 商品
+ case 'goods' :
+ $p = [
+ 'data_type' => $vss['config']['goods_data_type'],
+ ];
+ switch($vss['config']['goods_data_type'])
+ {
+ // 指定商品
+ case 'goods' :
+ $p['goods_ids'] = $vss['config']['goods_ids'];
+ break;
+
+ // 商品分类
+ case 'category' :
+ $category = json_decode(urldecode($vss['config']['goods_category_value']), true);
+ $p['category_id'] = $category[count($category)-1]['id'];
+ $p['order_limit_number'] = empty($vss['config']['goods_order_limit_number']) ? 0 : $vss['config']['goods_order_limit_number'];
+ break;
+ }
+ $res = self::GoodsDataList($p);
+ $vss['config']['data_list'] = $res['data'];
+ break;
+
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //print_r($config);die;
+ return $config;
+ }
+
+ /**
+ * 配置处理-展示使用
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-17
+ * @desc description
+ * @param [array] $config [配置信息]
+ * @param [array] $params [输入参数]
+ */
+ public static function ConfigHandle($config, $params = [])
+ {
+ if(!empty($config))
+ {
+ // 是否数组
+ if(!is_array($config))
+ {
+ $config = json_decode($config, true);
+ }
+ if(!empty($config))
+ {
+ foreach($config as &$v)
+ {
+ // 配置信息处理
+ if(!empty($v['config']))
+ {
+ // 配置信息处理
+ $v['config'] = self::ConfigViewFieldHandle($v['config']);
+ }
+
+ // 布局类型
+ $v['value_arr'] = explode(':', $v['value']);
+
+ // 布局
+ if(!empty($v['children']) && is_array($v['children']))
+ {
+ foreach($v['children'] as &$vs)
+ {
+ // 配置信息处理
+ if(!empty($vs['config']))
+ {
+ // 配置信息处理
+ $vs['config'] = self::ConfigViewFieldHandle($vs['config']);
+ }
+
+ // 容器
+ if(!empty($vs['children']) && is_array($vs['children']))
+ {
+ // 模块
+ foreach($vs['children'] as &$vss)
+ {
+ if(!empty($vss['value']) && !empty($vss['config']))
+ {
+ // 配置信息处理
+ $vss['config'] = self::ConfigViewFieldHandle($vss['config']);
+
+ // 根据模块类型处理
+ switch($vss['value'])
+ {
+ // 视频 video
+ case 'video' :
+ $vss['config']['video'] = ResourcesService::AttachmentPathViewHandle($vss['config']['content_video']);
+ unset($vss['config']['content_video']);
+ break;
+
+ // 单图 images
+ case 'images' :
+ // 配置重新组合
+ $vss['config'] = [
+ 'frontend_config' => $vss['config']['frontend_config'],
+ 'images' => ResourcesService::AttachmentPathViewHandle($vss['config']['content_images']),
+ 'url' => self::LayoutUrlValueHandle($vss['config']['content_to_type'], $vss['config']['content_to_value']),
+ ];
+ break;
+
+ // 多图 many-images
+ case 'many-images' :
+ foreach($vss['config']['data_list'] as &$mil)
+ {
+ $mil = [
+ 'images' => ResourcesService::AttachmentPathViewHandle($mil['images']),
+ 'url' => self::LayoutUrlValueHandle($mil['type'], $mil['value']),
+ ];
+ }
+ break;
+
+ // 商品
+ case 'goods' :
+ $p = [
+ 'data_type' => $vss['config']['goods_data_type'],
+ ];
+ switch($vss['config']['goods_data_type'])
+ {
+ // 指定商品
+ case 'goods' :
+ $p['goods_ids'] = $vss['config']['goods_ids'];
+ break;
+
+ // 商品分类
+ case 'category' :
+ $category = json_decode(urldecode($vss['config']['goods_category_value']), true);
+ $p['category_id'] = $category[count($category)-1]['id'];
+ $p['order_limit_number'] = empty($vss['config']['goods_order_limit_number']) ? 0 : $vss['config']['goods_order_limit_number'];
+ break;
+ }
+ $res = self::GoodsDataList($p);
+ $vss['config']['data_list'] = $res['data'];
+ break;
+
+ // 标题
+ case 'title' :
+ // 关键字
+ $keywords_list = [];
+ if(!empty($vss['config']['keywords_list']))
+ {
+ foreach($vss['config']['keywords_list'] as $wd)
+ {
+ $keywords_list[] = [
+ 'keywords' => $wd['content_keywords'],
+ 'color' => empty($wd['style_keywords_color']) ? '' : $wd['style_keywords_color'],
+ 'url' => self::LayoutUrlValueHandle($wd['content_to_type'], $wd['content_to_value']),
+ ];
+ }
+ }
+
+ // 配置重新组合
+ $vss['config'] = [
+ 'frontend_config' => $vss['config']['frontend_config'],
+ 'title' => $vss['config']['content_title'],
+ 'title_vice' => $vss['config']['content_title_vice'],
+ 'title_more' => $vss['config']['content_title_more'],
+ 'title_more_url' => self::LayoutUrlValueHandle($vss['config']['content_to_type'], $vss['config']['content_to_value']),
+ 'keywords_list' => $keywords_list,
+ ];
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //print_r($config);die;
+ return $config;
+ }
+
+ /**
+ * 配置信息字段处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-22
+ * @desc description
+ * @param [array] $config [配置信息]
+ */
+ public static function ConfigViewFieldHandle($config)
+ {
+ if(!empty($config) && is_array($config))
+ {
+ // 配置信息多余字段移除
+ $arr = [
+ 'style_',
+ 'content_item_keywords_',
+ 'content_images_',
+ 'content_to_type_',
+ 'content_to_name_',
+ 'content_to_value_',
+ 'view_list_number_',
+ ];
+ foreach($config as $k=>$v)
+ {
+ foreach($arr as $f)
+ {
+ $length = strlen($f);
+ if(substr($k, 0, $length) == $f)
+ {
+ unset($config[$k]);
+ }
+ }
+ }
+
+ // 前端配置处理
+ $config['frontend_config'] = empty($config['frontend_config']) ? '' : self::FrontendConfigHandle($config['frontend_config']);
+
+ // 滚动配置
+ if(array_key_exists('view_list_show_style_value', $config))
+ {
+ $config['view_list_show_style_value_arr'] = empty($config['view_list_show_style_value']) ? '' : json_decode(urldecode($config['view_list_show_style_value']), true);
+ unset($config['view_list_show_style_value']);
+ }
+ }
+ return $config;
+ }
+
+ /**
+ * 链接地址处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-22
+ * @desc description
+ * @param [string] $type [类型]
+ * @param [string] $value [特殊地址配置值]
+ */
+ public static function LayoutUrlValueHandle($type, $value)
+ {
+ // 当前客户端类型
+ $client_type = ApplicationClientType();
+
+ // url地址、默认空字符串
+ $url = '';
+
+ // 静态地址定义-web端
+ $static_url_web_arr = [
+ 'home' => __MY_URL__,
+ 'goods_category' => MyUrl('index/category/index'),
+ 'cart' => MyUrl('index/cart/index'),
+ 'user_center' => MyUrl('index/user/index'),
+ 'user_order_list' => MyUrl('index/order/index'),
+ 'user_order_aftersale_list' => MyUrl('index/orderaftersale/index'),
+ 'user_goods_favor_list' => MyUrl('index/usergoodsfavor/index'),
+ 'user_address_list' => MyUrl('index/useraddress/index'),
+ 'user_goods_browse_list' => MyUrl('index/usergoodsbrowse/index'),
+ 'user_integral_list' => MyUrl('index/userintegral/index'),
+ 'user_answer_list' => MyUrl('index/answer/index'),
+ 'user_message_list' => MyUrl('index/message/index'),
+ ];
+
+ // 静态地址定义-手机端
+ $static_url_app_arr = [
+ 'home' => '/pages/index/index',
+ 'goods_category' => '/pages/goods-category/goods-category',
+ 'cart' => '/pages/cart/cart',
+ 'user_center' => '/pages/user/user',
+ 'user_order_list' => '/pages/user-order/user-order',
+ 'user_order_aftersale_list' => '/pages/user-orderaftersale/user-orderaftersale',
+ 'user_goods_favor_list' => '/pages/user-faovr/user-faovr',
+ 'user_address_list' => '/pages/user-address/user-address',
+ 'user_goods_browse_list' => '/pages/user-goods-browse/user-goods-browse',
+ 'user_integral_list' => '/pages/user-integral/user-integral',
+ 'user_answer_list' => '/pages/user-answer-list/user-answer-list',
+ 'user_message_list' => '/pages/message/message',
+ ];
+
+ // 静态地址
+ $static_url_arr = ($client_type == 'pc') ? $static_url_web_arr : $static_url_app_arr;
+ if(array_key_exists($type, $static_url_arr))
+ {
+ $url = $static_url_arr[$type];
+ } else {
+ switch($type)
+ {
+ // 商品
+ case 'goods' :
+ if(!empty($value) && $value['id'])
+ {
+ $url = MyUrl('index/goods/index', ['id'=>$value['id']]);
+ }
+ break;
+
+ // 商品分类
+ case 'goods_search' :
+ $url = 'goods_search';
+ break;
+ }
+ }
+ return $url;
+ }
+
+ /**
+ * 前端配置处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-18
+ * @desc description
+ * @param [array] $data [配偶者数据]
+ */
+ public static function FrontendConfigHandle($data)
+ {
+ if(!empty($data) && is_array($data))
+ {
+ foreach($data as &$v)
+ {
+ if(is_array($v))
+ {
+ foreach($v as &$vs)
+ {
+ $vs = empty($vs) ? '' : urldecode($vs);
+ }
+ } else {
+ $v = empty($v) ? '' : urldecode($v);
+ }
+ }
+ }
+ return $data;
+ }
+
+ /**
+ * 商品搜索
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2020-07-13
+ * @desc description
+ * @param [array] $params [输入参数]
+ */
+ public static function GoodsSearchList($params = [])
+ {
+ // 返回数据
+ $result = [
+ 'page_total' => 0,
+ 'page_size' => 20,
+ 'page' => max(1, isset($params['page']) ? intval($params['page']) : 1),
+ 'total' => 0,
+ 'data' => [],
+ ];
+
+ // 条件
+ $where = [
+ ['g.is_delete_time', '=', 0],
+ ['g.is_shelves', '=', 1],
+ ];
+
+ // 关键字
+ if(!empty($params['keywords']))
+ {
+ $where[] = ['g.title', 'like', '%'.$params['keywords'].'%'];
+ }
+
+ // 数据分类id
+ if(!empty($params['category_id']))
+ {
+ // 默认系统商品分类,并读取分类子级
+ $category_field = empty($params['category_field']) ? 'gci.category_id' : $params['category_field'];
+ if($category_field == 'gci.category_id')
+ {
+ $category_id = GoodsService::GoodsCategoryItemsIds([intval($params['category_id'])]);
+ } else {
+ $category_id = [intval($params['category_id'])];
+ }
+ $where[] = [$category_field, 'in', $category_id];
+ }
+
+ // 获取商品总数
+ $result['total'] = GoodsService::CategoryGoodsTotal($where);
+
+ // 获取商品列表
+ if($result['total'] > 0)
+ {
+ // 基础参数
+ $field = 'g.id,g.title,g.images';
+ $order_by = 'g.id desc';
+
+ // 分页计算
+ $m = intval(($result['page']-1)*$result['page_size']);
+ $ret = GoodsService::CategoryGoodsList(['where'=>$where, 'm'=>$m, 'n'=>$result['page_size'], 'field'=>$field, 'order_by'=>$order_by]);
+ $result['data'] = $ret['data'];
+ $result['page_total'] = ceil($result['total']/$result['page_size']);
+ // 数据处理
+ if(!empty($result['data']) && is_array($result['data']) && !empty($params['goods_ids']))
+ {
+ $goods_ids = is_array($params['goods_ids']) ? $params['goods_ids'] : explode(',', $params['goods_ids']);
+ foreach($result['data'] as &$v)
+ {
+ // 是否已添加
+ $v['is_exist'] = in_array($v['id'], $goods_ids) ? 1 : 0;
+ }
+ }
+ }
+ return DataReturn('处理成功', 0, $result);
+ }
+
+ /**
+ * 商品数据
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2020-07-13
+ * @desc description
+ * @param [array] $params [输入参数]
+ */
+ public static function GoodsDataList($params = [])
+ {
+ // 数据类型、默认商品
+ $data_type = empty($params['data_type']) ? 'goods' : $params['data_type'];
+ switch($data_type)
+ {
+ // 商品
+ case 'goods' :
+ // 参数处理
+ if(empty($params['goods_ids']))
+ {
+ return DataReturn('商品id为空', -1);
+ }
+ if(!is_array($params['goods_ids']))
+ {
+ $params['goods_ids'] = explode(',', $params['goods_ids']);
+ }
+
+ // 读取数量
+ $m = 0;
+ $n = 50;
+
+ // 获取商品
+ $order_by = 'id desc';
+ $field = 'id,title,images,price,original_price,min_price,max_price,min_original_price,max_original_price,inventory,inventory_unit';
+ $where = [
+ ['is_delete_time', '=', 0],
+ ['is_shelves', '=', 1],
+ ['id', 'in', $params['goods_ids']],
+ ];
+ break;
+
+ // 商品分类
+ case 'category' :
+ // 参数处理
+ if(empty($params['category_id']))
+ {
+ return DataReturn('商品分类id为空', -1);
+ }
+
+ // 排序处理
+ $order_by_type_list = lang('goods_order_by_type_list');
+ $order_by_rule_list = lang('goods_order_by_rule_list');
+
+ // 排序类型
+ $order_by_type = empty($params['order_by_type']) ? $order_by_type_list[0]['value'] : (array_key_exists($params['order_by_type'], $order_by_type_list) ? $order_by_type_list[$params['order_by_type']]['value'] : $order_by_type_list[0]['value']);
+
+ // 排序规则
+ $order_by_rule = empty($params['order_by_rule']) ? $order_by_rule_list[0]['value'] : (array_key_exists($params['order_by_rule'], $order_by_rule_list) ? $order_by_rule_list[$params['order_by_rule']]['value'] : $order_by_rule_list[0]['value']);
+
+ // 读取数量
+ $m = 0;
+ $n = min(empty($params['order_limit_number']) ? 50 : intval($params['order_limit_number']), 50);
+
+ // 获取商品
+ $order_by = $order_by_type.' '.$order_by_rule;
+ $field = 'g.id,g.title,g.images,g.price,g.original_price,g.min_price,g.max_price,g.min_original_price,g.max_original_price,g.inventory,g.inventory_unit';
+ $where = [
+ ['gci.category_id', 'in', GoodsService::GoodsCategoryItemsIds([intval($params['category_id'])])],
+ ['g.is_delete_time', '=', 0],
+ ['g.is_shelves', '=', 1],
+ ];
+ break;
+
+ default :
+ return DataReturn('数据类型未处理['.$params['data_type'].']', -1);
+ }
+
+ // 商品搜索列表读取钩子
+ $hook_name = 'plugins_layout_service_search_goods_begin';
+ Hook::listen($hook_name, [
+ 'hook_name' => $hook_name,
+ 'is_backend' => true,
+ 'params' => $params,
+ 'data_type' => $data_type,
+ 'where' => &$where,
+ 'field' => &$field,
+ 'm' => &$m,
+ 'n' => &$n,
+ 'order_by' => &$order_by,
+ ]);
+
+ // 根据请求类型处理数据读取
+ switch($data_type)
+ {
+ // 商品
+ case 'goods' :
+ $request_params = [
+ 'where' => $where,
+ 'm' => $m,
+ 'n' => $n,
+ 'field' => $field,
+ 'order_by' => $order_by,
+ ];
+ $ret = GoodsService::GoodsList($request_params);
+ break;
+
+ // 商品分类
+ case 'category' :
+ $ret = GoodsService::GoodsDataHandle(Db::name('Goods')->alias('g')->join(['__GOODS_CATEGORY_JOIN__'=>'gci'], 'g.id=gci.goods_id')->field($field)->where($where)->group('g.id')->order($order_by)->limit($m, $n)->select());
+ break;
+ }
+ if(!empty($ret) && isset($ret['code']) && $ret['code'] == 0 && !empty($ret['data']))
+ {
+ return $ret;
+ }
+ return DataReturn('无商品信息', -1);
+ }
+
+ /**
+ * 页面数据
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-14
+ * @desc description
+ * @param [array] $params [输入参数]
+ */
+ public static function PagesList($params = [])
+ {
+ return [
+ // 公共
+ 'common' => [
+ 'name' => '系统页面',
+ 'data' => [
+ [
+ 'value' => 'home',
+ 'name' => '商城首页',
+ ],
+ [
+ 'value' => 'goods_category',
+ 'name' => '全部商品分类',
+ ],
+ [
+ 'value' => 'goods_search',
+ 'name' => '商品搜索',
+ 'tips' => '可带参数(关键字、商品分类id、品牌id)',
+ ],
+ [
+ 'value' => 'goods',
+ 'name' => '单一商品',
+ ],
+ [
+ 'value' => 'cart',
+ 'name' => '购物车',
+ ],
+ [
+ 'value' => 'user_center',
+ 'name' => '用户中心',
+ ],
+ [
+ 'value' => 'user_order_list',
+ 'name' => '我的订单',
+ ],
+ [
+ 'value' => 'user_order_aftersale_list',
+ 'name' => '订单售后',
+ ],
+ [
+ 'value' => 'user_goods_favor_list',
+ 'name' => '商品收藏',
+ ],
+ [
+ 'value' => 'user_address_list',
+ 'name' => '我的地址',
+ ],
+ [
+ 'value' => 'user_goods_browse_list',
+ 'name' => '我的足迹',
+ ],
+ [
+ 'value' => 'user_integral_list',
+ 'name' => '我的积分',
+ ],
+ [
+ 'value' => 'user_message_list',
+ 'name' => '我的消息',
+ ],
+ [
+ 'value' => 'user_answer_list',
+ 'name' => '问答/留言',
+ ],
+ ],
+ ],
+
+ // 插件
+ 'plugins' => [
+ 'name' => '扩展模块',
+ 'data' => [
+ [
+ 'name' => '多商户',
+ 'value' => 'shop',
+ 'tips' => '暂时不支持小程序',
+ 'data' => [
+ [
+ 'value' => 'home',
+ 'name' => '店铺首页',
+ ],
+ [
+ 'value' => 'goods_category',
+ 'name' => '商品分类',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ];
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/layout/view/base.html b/application/layout/view/base.html
new file mode 100644
index 0000000000000000000000000000000000000000..139c33bb1eb77f6ce0accdd0669fddbb524b9d9d
--- /dev/null
+++ b/application/layout/view/base.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
×
+
1. 手机模式下每一块布局全部自动100%展示、从左往右依次往下排版
+
2. 布局宽度以100%分为12块、每一块占比(8.33%)
+
3. 小屏(640px及以下)、中屏(641px及以上)、大屏(1025px及以上)
+
+
+
+ 100%
+ 6 : 6
+ 9 : 3
+ 3 : 9
+ 6 : 3 : 3
+ 3 : 6 : 3
+ 3 : 3 : 6
+ x 3
+ x 4
+ x 6
+
+
+
+
+
+
+ 单图
+ 多图
+ 视频
+ 商品
+ 标题
+ 辅助线
+ 辅助空白
+
+
+
+
+
+
+
+ {{if !empty($layout_data) and is_array($layout_data)}}
+ {{foreach $layout_data as $k=>$v}}
+ {{if !empty($v['value']) and !empty($v['children']) and is_array($v['children']) and !empty($v['value_arr']) and count($v['children']) eq count($v['value_arr'])}}
+
+
+
+
+ 布局设置
+ 布局移除
+
+
+ {{foreach $v.children as $ks=>$vs}}
+ {{if count($v['value_arr']) eq 1}}
+ {{include file="../../../layout/view/public/common/module_admin" /}}
+ {{else /}}
+
+ {{include file="../../../layout/view/public/common/module_admin" /}}
+
+ {{/if}}
+ {{/foreach}}
+
+
+ {{/if}}
+ {{/foreach}}
+ {{else /}}
+
布局拖放到该区域松开鼠标即可
+ {{/if}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_layout_config" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_images" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_many_images" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_video" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_goods" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_title" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_border" /}}
+
+
+{{include file="../../../layout/view/public/offcanvas/offcanvas_module_config_height" /}}
+
+
+{{include file="../../../layout/view/public/modal/modal_module_rolling_config" /}}
+
+
+{{include file="../../../layout/view/public/modal/modal_module_list_config" /}}
+
+
+{{include file="../../../layout/view/public/modal/modal_module_title_keywords" /}}
+
+
+{{include file="../../../layout/view/public/modal/modal_module_pages_select" /}}
+
+
+{{include file="../../../layout/view/public/popup/popup_module_goods_select" /}}
+
+
+{{include file="../../../layout/view/public/popup/popup_module_goods_search" /}}
+
+
+{{include file="../../../layout/view/public/popup/popup_module_goods_category" /}}
\ No newline at end of file
diff --git a/application/layout/view/form_back.html b/application/layout/view/form_back.html
new file mode 100644
index 0000000000000000000000000000000000000000..5feb0126f8239cac54d7c0f0c3df17299d4fe6a7
--- /dev/null
+++ b/application/layout/view/form_back.html
@@ -0,0 +1,74 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/common/goods_category_choice.html b/application/layout/view/public/common/goods_category_choice.html
new file mode 100644
index 0000000000000000000000000000000000000000..7f012fa49d9775afe4bf7f3bbd7ee344ae5ad000
--- /dev/null
+++ b/application/layout/view/public/common/goods_category_choice.html
@@ -0,0 +1,24 @@
+{{if !empty($goods_category_list)}}
+
+
+ 您当前选择的商品类别是:
+
+
+{{else /}}
+
无商品分类
+{{/if}}
\ No newline at end of file
diff --git a/application/layout/view/public/common/goodssearch.html b/application/layout/view/public/common/goodssearch.html
new file mode 100644
index 0000000000000000000000000000000000000000..91635b02700b0d6987331e727233104589a16762
--- /dev/null
+++ b/application/layout/view/public/common/goodssearch.html
@@ -0,0 +1,21 @@
+{{if !empty($data)}}
+ {{foreach $data as $v}}
+
+
+
+
+
+
{{$v.title}}
+
+ {{if isset($v['is_exist']) and $v['is_exist'] eq 1}}
+
+ {{else /}}
+
+ {{/if}}
+
+
+
+ {{/foreach}}
+{{else /}}
+
没有相关商品
+{{/if}}
\ No newline at end of file
diff --git a/application/layout/view/public/common/module_admin.html b/application/layout/view/public/common/module_admin.html
new file mode 100644
index 0000000000000000000000000000000000000000..2438b108465a364d6367f0babb98118f45ed850b
--- /dev/null
+++ b/application/layout/view/public/common/module_admin.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+ {{if !empty($vs['children']) and is_array($vs['children'])}}
+ {{foreach $vs.children as $kss=>$vss}}
+
+
+
+
+
+
+
+ {{if !empty($vss['config'])}}
+
+ {{switch vss.value}}
+ {{case images}}
+
+
+
+ {{/case}}
+ {{case many-images}}
+ {{switch vss.config.view_list_show_style}}
+ {{case rolling}}
+
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+
+
+ {{/foreach}}
+
+
+ {{/case}}
+ {{case list}}
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+ {{/foreach}}
+
+ {{/case}}
+ {{default /}}
+
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+
+
+ {{/foreach}}
+
+
+ {{/switch}}
+ {{/case}}
+ {{case video}}
+
+ your browser does not support the video tag
+
+ {{/case}}
+ {{case goods}}
+ {{switch vss.config.view_list_show_style}}
+ {{case rolling}}
+
+
+
+ {{foreach $vss.config.data_list as $g}}
+
+
+
+
+
+
+
+
{{$currency_symbol}}{{$g.price}}
+
+
+
+ {{/foreach}}
+
+
+
+ {{/case}}
+ {{default /}}
+
+ {{foreach $vss.config.data_list as $g}}
+
+
+
+
+
+
+
+
{{$currency_symbol}}{{$g.price}}
+
+
+
+ {{/foreach}}
+
+ {{/switch}}
+ {{/case}}
+ {{case title}}
+
+
{{$vss.config.content_title}}
+ {{if !empty($vss['config']['content_title_vice'])}}
+
{{$vss.config.content_title_vice}}
+ {{/if}}
+ {{if !empty($vss['config']['keywords_list'])}}
+
+ {{foreach $vss.config.keywords_list as $wd}}
+
{{$wd.content_keywords}}
+ {{/foreach}}
+
+ {{/if}}
+ {{if !empty($vss['config']['content_title_more'])}}
+
+ {{/if}}
+
+ {{/case}}
+ {{/switch}}
+
+ {{else /}}
+
{{$vss.name}}
+ {{/if}}
+
+
+ {{/foreach}}
+ {{else /}}
+
模块内容区域
+ {{/if}}
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/common/module_view.html b/application/layout/view/public/common/module_view.html
new file mode 100644
index 0000000000000000000000000000000000000000..8dcca51887608b8c57d91a25e4f407b3ff7a2ae1
--- /dev/null
+++ b/application/layout/view/public/common/module_view.html
@@ -0,0 +1,138 @@
+
+
+ {{if !empty($vs['children']) and is_array($vs['children'])}}
+ {{foreach $vs.children as $kss=>$vss}}
+
+
+ {{if !empty($vss['config'])}}
+
+ {{switch vss.value}}
+ {{case images}}
+
+
+
+ {{/case}}
+ {{case many-images}}
+ {{switch vss.config.view_list_show_style}}
+ {{case rolling}}
+
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+
+
+ {{/foreach}}
+
+
+ {{/case}}
+ {{case list}}
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+ {{/foreach}}
+
+ {{/case}}
+ {{default /}}
+
+
+ {{foreach $vss.config.data_list as $i}}
+
+
+
+
+
+ {{/foreach}}
+
+
+ {{/switch}}
+ {{/case}}
+ {{case video}}
+
+ your browser does not support the video tag
+
+ {{/case}}
+ {{case goods}}
+ {{switch vss.config.view_list_show_style}}
+ {{case rolling}}
+
+
+
+ {{foreach $vss.config.data_list as $g}}
+
+
+
+
+
+
+
+
{{$currency_symbol}}{{$g.price}}
+
+
+
+ {{/foreach}}
+
+
+
+ {{/case}}
+ {{default /}}
+
+ {{foreach $vss.config.data_list as $g}}
+
+
+
+
+
+
+
+
{{$currency_symbol}}{{$g.price}}
+
+
+
+ {{/foreach}}
+
+ {{/switch}}
+ {{/case}}
+ {{case title}}
+
+
{{$vss.config.title}}
+ {{if !empty($vss['config']['title_vice'])}}
+
{{$vss.config.title_vice}}
+ {{/if}}
+ {{if !empty($vss['config']['keywords_list'])}}
+
+ {{foreach $vss.config.keywords_list as $wd}}
+
{{$wd.keywords}}
+ {{/foreach}}
+
+ {{/if}}
+ {{if !empty($vss['config']['title_more'])}}
+
+ {{/if}}
+
+ {{/case}}
+ {{/switch}}
+
+ {{else /}}
+
{{$vss.name}}
+ {{/if}}
+
+
+ {{/foreach}}
+ {{/if}}
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/content/goods_show_style.html b/application/layout/view/public/content/goods_show_style.html
new file mode 100644
index 0000000000000000000000000000000000000000..bc659d0aabd0b3a46aa43b15b5097c066182a46d
--- /dev/null
+++ b/application/layout/view/public/content/goods_show_style.html
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/content/many_images_show_style.html b/application/layout/view/public/content/many_images_show_style.html
new file mode 100644
index 0000000000000000000000000000000000000000..f20cd546731deead71d09678838e84c92aa3a3a3
--- /dev/null
+++ b/application/layout/view/public/content/many_images_show_style.html
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/content/media_fixed.html b/application/layout/view/public/content/media_fixed.html
new file mode 100644
index 0000000000000000000000000000000000000000..2beb0ea0241c4b0aad3df715feef701599c99c34
--- /dev/null
+++ b/application/layout/view/public/content/media_fixed.html
@@ -0,0 +1,26 @@
+
+{{include file="../../../layout/view/public/style/height" key="[key]" required="[required]" height="800" name="[name]" /}}
+
+
+
+ 是否宽度100%
+
+
+
+
+
+ 是否高度100%
+
+
+
+
+
+ 是否居中
+
+
+
+
+
+ 是否铺满容器
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/content/view_list_number.html b/application/layout/view/public/content/view_list_number.html
new file mode 100644
index 0000000000000000000000000000000000000000..e0a51f0427dec64929f11596b773fdb64d6f9cb9
--- /dev/null
+++ b/application/layout/view/public/content/view_list_number.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/modal/modal_module_list_config.html b/application/layout/view/public/modal/modal_module_list_config.html
new file mode 100644
index 0000000000000000000000000000000000000000..1b7e703ee8c8eaf8aefc79c0571a6ab28e5f9e1f
--- /dev/null
+++ b/application/layout/view/public/modal/modal_module_list_config.html
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/modal/modal_module_pages_select.html b/application/layout/view/public/modal/modal_module_pages_select.html
new file mode 100644
index 0000000000000000000000000000000000000000..05872f84e892855da7a0ce38e61a68a4e3599555
--- /dev/null
+++ b/application/layout/view/public/modal/modal_module_pages_select.html
@@ -0,0 +1,60 @@
+
+
+
+
+ {{if !empty($pages_list)}}
+
+ {{else /}}
+ {{include file="public/not_data" /}}
+ {{/if}}
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/modal/modal_module_rolling_config.html b/application/layout/view/public/modal/modal_module_rolling_config.html
new file mode 100644
index 0000000000000000000000000000000000000000..901d6b14a139c3a3128766ca437f430b07ed6183
--- /dev/null
+++ b/application/layout/view/public/modal/modal_module_rolling_config.html
@@ -0,0 +1,33 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/modal/modal_module_title_keywords.html b/application/layout/view/public/modal/modal_module_title_keywords.html
new file mode 100644
index 0000000000000000000000000000000000000000..e265ab295cba0157a3883104ccea0e15cb699bc3
--- /dev/null
+++ b/application/layout/view/public/modal/modal_module_title_keywords.html
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_layout_config.html b/application/layout/view/public/offcanvas/offcanvas_layout_config.html
new file mode 100644
index 0000000000000000000000000000000000000000..16034d205adef22c7dab619eeed11ce402bd35b1
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_layout_config.html
@@ -0,0 +1,87 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_border.html b/application/layout/view/public/offcanvas/offcanvas_module_config_border.html
new file mode 100644
index 0000000000000000000000000000000000000000..f725032c9ad3d4989abec79b2280c5402b440798
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_border.html
@@ -0,0 +1,27 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_goods.html b/application/layout/view/public/offcanvas/offcanvas_module_config_goods.html
new file mode 100644
index 0000000000000000000000000000000000000000..90aa30858ba0d3a728bdd4b11bd46128f2e7a2ae
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_goods.html
@@ -0,0 +1,127 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_height.html b/application/layout/view/public/offcanvas/offcanvas_module_config_height.html
new file mode 100644
index 0000000000000000000000000000000000000000..69f7d0b4c11e60464a3402dddc23feb514227432
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_height.html
@@ -0,0 +1,27 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_images.html b/application/layout/view/public/offcanvas/offcanvas_module_config_images.html
new file mode 100644
index 0000000000000000000000000000000000000000..a43f596d0c002a129fca540278c19a6988c6862c
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_images.html
@@ -0,0 +1,68 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_many_images.html b/application/layout/view/public/offcanvas/offcanvas_module_config_many_images.html
new file mode 100644
index 0000000000000000000000000000000000000000..143c011f41bcc49402a818dfc62028e01cf66ec4
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_many_images.html
@@ -0,0 +1,58 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_title.html b/application/layout/view/public/offcanvas/offcanvas_module_config_title.html
new file mode 100644
index 0000000000000000000000000000000000000000..c06da6bf6fafb2ff0c1dbf5c82c079b8532d2b8f
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_title.html
@@ -0,0 +1,79 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/offcanvas/offcanvas_module_config_video.html b/application/layout/view/public/offcanvas/offcanvas_module_config_video.html
new file mode 100644
index 0000000000000000000000000000000000000000..b1aaf73ed68d2759a928874c9ae534c994866515
--- /dev/null
+++ b/application/layout/view/public/offcanvas/offcanvas_module_config_video.html
@@ -0,0 +1,63 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/popup/popup_module_goods_category.html b/application/layout/view/public/popup/popup_module_goods_category.html
new file mode 100644
index 0000000000000000000000000000000000000000..42cd515594966a4d3b1f443bec5602a50f59e970
--- /dev/null
+++ b/application/layout/view/public/popup/popup_module_goods_category.html
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/popup/popup_module_goods_search.html b/application/layout/view/public/popup/popup_module_goods_search.html
new file mode 100644
index 0000000000000000000000000000000000000000..7b88599964fe0fda814f7c4fbe5c710bc6604306
--- /dev/null
+++ b/application/layout/view/public/popup/popup_module_goods_search.html
@@ -0,0 +1,59 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/popup/popup_module_goods_select.html b/application/layout/view/public/popup/popup_module_goods_select.html
new file mode 100644
index 0000000000000000000000000000000000000000..79aa6b0b83889cb9c19d282354033da4f32e658e
--- /dev/null
+++ b/application/layout/view/public/popup/popup_module_goods_select.html
@@ -0,0 +1,56 @@
+
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/background_color.html b/application/layout/view/public/style/background_color.html
new file mode 100644
index 0000000000000000000000000000000000000000..54eca7e5717f0eeb4e04248ae4c99df7ae5f64ae
--- /dev/null
+++ b/application/layout/view/public/style/background_color.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_radius.html b/application/layout/view/public/style/border_radius.html
new file mode 100644
index 0000000000000000000000000000000000000000..389cc5f2cbf86a76962cd431fc94763d8f809d7a
--- /dev/null
+++ b/application/layout/view/public/style/border_radius.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_style.html b/application/layout/view/public/style/border_style.html
new file mode 100644
index 0000000000000000000000000000000000000000..56da7647054631c86da23b91b871e577d52c6d64
--- /dev/null
+++ b/application/layout/view/public/style/border_style.html
@@ -0,0 +1,11 @@
+
+ 边线类型
+ {{if !empty($border_style_type_list)}}
+
+ 请选择
+ {{foreach $border_style_type_list as $k=>$v}}
+ {{$v}}
+ {{/foreach}}
+
+ {{/if}}
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_style_4.html b/application/layout/view/public/style/border_style_4.html
new file mode 100644
index 0000000000000000000000000000000000000000..f7c1dd5d04b8ba7acbb8af71c3fd091d66f210b9
--- /dev/null
+++ b/application/layout/view/public/style/border_style_4.html
@@ -0,0 +1,31 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_width_4.html b/application/layout/view/public/style/border_width_4.html
new file mode 100644
index 0000000000000000000000000000000000000000..5b356bc83f55bf900131925e3d47d8c02f4772ef
--- /dev/null
+++ b/application/layout/view/public/style/border_width_4.html
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_width_color.html b/application/layout/view/public/style/border_width_color.html
new file mode 100644
index 0000000000000000000000000000000000000000..3b5e325c3fbca7cab046f9da54cbfc3051468a38
--- /dev/null
+++ b/application/layout/view/public/style/border_width_color.html
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/border_width_color_4.html b/application/layout/view/public/style/border_width_color_4.html
new file mode 100644
index 0000000000000000000000000000000000000000..1b426dc349b569aa8aaf9b13be31d15814c1b38d
--- /dev/null
+++ b/application/layout/view/public/style/border_width_color_4.html
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/color.html b/application/layout/view/public/style/color.html
new file mode 100644
index 0000000000000000000000000000000000000000..74048589e3067cd986d6f263cc8b2c4bdb0c7c1d
--- /dev/null
+++ b/application/layout/view/public/style/color.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/height.html b/application/layout/view/public/style/height.html
new file mode 100644
index 0000000000000000000000000000000000000000..0c362f4b8a1320a5005c9639546417ef2cd6f79b
--- /dev/null
+++ b/application/layout/view/public/style/height.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/input_color.html b/application/layout/view/public/style/input_color.html
new file mode 100644
index 0000000000000000000000000000000000000000..648c01213fe996cdb1c547488792ad5bc3fa4a2f
--- /dev/null
+++ b/application/layout/view/public/style/input_color.html
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/margin.html b/application/layout/view/public/style/margin.html
new file mode 100644
index 0000000000000000000000000000000000000000..f5c91169b4fed4e801a6ab840258d8bf571cc46e
--- /dev/null
+++ b/application/layout/view/public/style/margin.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/margin_4.html b/application/layout/view/public/style/margin_4.html
new file mode 100644
index 0000000000000000000000000000000000000000..b3ab63189995038a0969d10b97e37c76dcab4910
--- /dev/null
+++ b/application/layout/view/public/style/margin_4.html
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/padding.html b/application/layout/view/public/style/padding.html
new file mode 100644
index 0000000000000000000000000000000000000000..a82aef863b9a6f4d61f79cf75eb4902bbd3828ea
--- /dev/null
+++ b/application/layout/view/public/style/padding.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/padding_4.html b/application/layout/view/public/style/padding_4.html
new file mode 100644
index 0000000000000000000000000000000000000000..6da8b8cd0c65e1efa151d74e794bdc7a2624b68c
--- /dev/null
+++ b/application/layout/view/public/style/padding_4.html
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/application/layout/view/public/style/width.html b/application/layout/view/public/style/width.html
new file mode 100644
index 0000000000000000000000000000000000000000..b86210cba06cedadba8d85845e6f69f0349ad396
--- /dev/null
+++ b/application/layout/view/public/style/width.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/application/layout/view/view.html b/application/layout/view/view.html
new file mode 100644
index 0000000000000000000000000000000000000000..cb5d224354d0e32ad1c518b9af4d2d80e0a08c04
--- /dev/null
+++ b/application/layout/view/view.html
@@ -0,0 +1,21 @@
+
+ {{if !empty($layout_data) and is_array($layout_data)}}
+ {{foreach $layout_data as $k=>$v}}
+ {{if !empty($v['value']) and !empty($v['children']) and is_array($v['children']) and !empty($v['value_arr']) and count($v['children']) eq count($v['value_arr']) and $v['status'] eq 1}}
+
+
+ {{foreach $v.children as $ks=>$vs}}
+ {{if count($v['value_arr']) eq 1}}
+ {{include file="../../../layout/view/public/common/module_view" /}}
+ {{else /}}
+
+ {{include file="../../../layout/view/public/common/module_view" /}}
+
+ {{/if}}
+ {{/foreach}}
+
+
+ {{/if}}
+ {{/foreach}}
+ {{/if}}
+
\ No newline at end of file
diff --git a/application/service/ConfigService.php b/application/service/ConfigService.php
index 60b289f31effbb2dd7419d7d351740dd430b30e0..6713b67dfdb5d1a1d1541d3cb8bb312eae8770fd 100755
--- a/application/service/ConfigService.php
+++ b/application/service/ConfigService.php
@@ -40,6 +40,7 @@ class ConfigService
'admin_email_login_template',
'home_email_login_template',
'home_site_security_record_url',
+ 'layout_index_home_data',
];
// 附件字段列表
diff --git a/application/service/GoodsService.php b/application/service/GoodsService.php
index 742199d358ef5bef901a1693c2ed5d8b483142e4..b959cfeab6f70880add13332aa04bd0e3281eead 100755
--- a/application/service/GoodsService.php
+++ b/application/service/GoodsService.php
@@ -241,6 +241,7 @@ class GoodsService
// 数据模式
// 0 自动模式
// 1 手动模式
+ // 2 拖拽模式
$floor_data_type = MyC('home_index_floor_data_type', 0, true);
// 数据处理
diff --git a/application/service/LayoutService.php b/application/service/LayoutService.php
new file mode 100644
index 0000000000000000000000000000000000000000..ce23d87685067a25746f928281277267fb7c10c6
--- /dev/null
+++ b/application/service/LayoutService.php
@@ -0,0 +1,103 @@
+ 'layout_index_home_data',
+ ];
+
+ /**
+ * 布局配置保存
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-22
+ * @desc description
+ * @param [string] $key [数据key值]
+ * @param [array] $params [输入参数]
+ */
+ public static function LayoutConfigSave($key, $params)
+ {
+ // key 值是否存在
+ if(!array_key_exists($key, self::$layout_key))
+ {
+ return DataReturn('布局key值有', -1);
+ }
+
+ // 保存数据
+ $config = empty($params['config']) ? '' : (is_array($params['config']) ? json_encode($params['config'], JSON_UNESCAPED_UNICODE) : htmlspecialchars_decode($params['config'])) ;
+ $ret = ConfigService::ConfigSave([self::$layout_key[$key]=>$config]);
+ if($ret['code'] == 0)
+ {
+ $ret['msg'] = '操作成功';
+ }
+ return $ret;
+ }
+
+ /**
+ * 布局配置获取-管理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-22
+ * @desc description
+ * @param [string] $key [数据key值]
+ */
+ public static function LayoutConfigAdminData($key)
+ {
+ // key 值是否存在
+ if(!array_key_exists($key, self::$layout_key))
+ {
+ return DataReturn('布局key值有', -1);
+ }
+
+ // 配置数据
+ $config = BaseLayout::ConfigAdminHandle(MyC(self::$layout_key[$key]));
+ return DataReturn('success', 0, $config);
+ }
+
+ /**
+ * 布局配置获取-展示使用
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-22
+ * @desc description
+ * @param [string] $key [数据key值]
+ */
+ public static function LayoutConfigData($key)
+ {
+ // key 值是否存在
+ if(!array_key_exists($key, self::$layout_key))
+ {
+ return DataReturn('布局key值有', -1);
+ }
+
+ // 配置数据
+ $config = BaseLayout::ConfigHandle(MyC(self::$layout_key[$key]));
+ return DataReturn('success', 0, $config);
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/tags.php b/application/tags.php
index 975bac18d9cc7ae16e6fc091999860bb81e6b180..3f7bea4b7519198b623c3985ab97feecddf28e12 100755
--- a/application/tags.php
+++ b/application/tags.php
@@ -32,5 +32,168 @@ return array (
'log_write' =>
array (
),
+ 'plugins_admin_css' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_css' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\salerecords\\Hook',
+ 2 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_js' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\salerecords\\Hook',
+ 2 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_navigation_header_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_users_center_left_menu_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\usercdkey\\Hook',
+ ),
+ 'plugins_service_header_navigation_top_right_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\usercdkey\\Hook',
+ ),
+ 'plugins_service_goods_save_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_editor_path_type_admin_goods_saveinfo' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_view_goods_detail_right_content_bottom' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_view_goods_detail_base_bottom' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\salerecords\\Hook',
+ ),
+ 'plugins_view_goods_detail_base_buy_nav_min_inside_begin' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_warehouse_handle_end' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_buy_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_buy_order_insert_begin' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_buy_order_insert_end' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_order_status_change_history_success_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_order_aftersale_audit_handle_end' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_view_admin_goods_save' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_goods_handle_end' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ 1 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_module_form_admin_goods_index' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_module_form_admin_goods_detail' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_service_goods_buy_nav_button_handle' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_layout_service_search_goods_begin' =>
+ array (
+ 0 => 'app\\plugins\\shop\\Hook',
+ ),
+ 'plugins_view_home_floor_bottom' =>
+ array (
+ 0 => 'app\\plugins\\salerecords\\Hook',
+ ),
+ 'plugins_service_base_data_return_api_index_index' =>
+ array (
+ 0 => 'app\\plugins\\salerecords\\Hook',
+ ),
+ 'plugins_service_base_data_return_api_goods_detail' =>
+ array (
+ 0 => 'app\\plugins\\salerecords\\Hook',
+ ),
+ 'plugins_service_quick_navigation_pc' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_h5' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_weixin' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_alipay' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_baidu' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_qq' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_quick_navigation_toutiao' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_view_buy_form_inside' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_view_buy_base_confirm_top' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_buy_group_goods_handle' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_base_data_return_api_buy_index' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
+ 'plugins_service_user_register_end' =>
+ array (
+ 0 => 'app\\plugins\\points\\Hook',
+ ),
);
?>
\ No newline at end of file
diff --git a/changelog.txt b/changelog.txt
index 905c117732513a9026488de1584be6fa1fe5c9c5..eda1f21fe93355cd1e34cf58c7a16e29eb5416b4 100755
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,16 @@
++=========================================================+
+ ShopXO --- http://shopxo.net
++=========================================================+
+全局
+ 1.
+
+web端
+ 1. 商品详情小导航优化
+
+插件
+ 1. 新增销售记录插件(首页展示最新销售商品、商品详情浮窗提示)
+
+
+=========================================================+
ShopXO 2.0.3 Release 20210527 http://shopxo.net
+=========================================================+
diff --git a/config/app.php b/config/app.php
index 726db50bb81a99ce9a71303358e828d36ffb54da..6d3a2b11450a8de77f2d920e431712abc66b767e 100755
--- a/config/app.php
+++ b/config/app.php
@@ -19,7 +19,7 @@ return [
// 应用地址
'app_host' => '',
// 应用调试模式
- 'app_debug' => false,
+ 'app_debug' => true,
// 应用Trace
'app_trace' => false,
// 是否支持多模块
diff --git a/extend/payment/SliWeixin.php b/extend/payment/SliWeixin.php
new file mode 100644
index 0000000000000000000000000000000000000000..206cb728c2395487d6f79f8d3046f6df82373a21
--- /dev/null
+++ b/extend/payment/SliWeixin.php
@@ -0,0 +1,353 @@
+config = $params;
+ }
+
+ /**
+ * 配置信息
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2018-09-19
+ * @desc description
+ */
+ public function Config()
+ {
+ // 基础信息
+ $base = [
+ 'name' => '星链-微信', // 插件名称
+ 'version' => '1.0.0', // 插件版本
+ 'apply_version' => '不限', // 适用系统版本描述
+ 'apply_terminal'=> ['pc','h5'], // 适用终端 默认全部 ['pc', 'h5', 'ios', 'android', 'alipay', 'weixin', 'baidu']
+ 'desc' => '适用PC+H5,即时到帐支付方式,跨境支付。
立即申请 ', // 插件描述(支持html)
+ 'author' => 'Devil', // 开发者
+ 'author_url' => 'http://shopxo.net/', // 开发者主页
+ ];
+
+ // 配置信息
+ $element = [
+ [
+ 'element' => 'input',
+ 'type' => 'text',
+ 'default' => '',
+ 'name' => 'accounts',
+ 'placeholder' => '登录帐号',
+ 'title' => '登录帐号',
+ 'is_required' => 0,
+ 'message' => '请填写登录帐号',
+ ],
+ [
+ 'element' => 'input',
+ 'type' => 'text',
+ 'default' => '',
+ 'name' => 'secret',
+ 'placeholder' => '密钥',
+ 'title' => '密钥',
+ 'is_required' => 0,
+ 'message' => '请填写密钥',
+ ],
+ [
+ 'element' => 'input',
+ 'type' => 'text',
+ 'default' => 'CNY',
+ 'name' => 'currency',
+ 'placeholder' => '货币',
+ 'title' => '货币',
+ 'is_required' => 0,
+ 'message' => '请填写货币',
+ ],
+ ];
+
+ return [
+ 'base' => $base,
+ 'element' => $element,
+ ];
+ }
+
+ /**
+ * 支付入口
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2018-09-19
+ * @desc description
+ * @param [array] $params [输入参数]
+ */
+ public function Pay($params = [])
+ {
+ // 参数
+ if(empty($params))
+ {
+ return DataReturn('参数不能为空', -1);
+ }
+
+ // 配置信息
+ if(empty($this->config))
+ {
+ return DataReturn('支付缺少配置', -1);
+ }
+
+ // 处理支付
+ $parameter = [
+ 'login' => $this->config['accounts'],
+ 'orderno' => $params['order_no'],
+ 'paymode' => $this->pay_type,
+ 'currency' => $this->config['currency'],
+ 'amount' => (int) (($params['total_price']*1000)/10),
+ 'product' => $params['name'],
+ 'ip' => GetClientIP(),
+ 'notifyurl' => $params['notify_url'],
+ 'callbackurl' => $params['redirect_url'],
+ 'rejecturl' => $params['call_back_url'],
+ ];
+
+ // 签名
+ $parameter['md5check'] = $this->GetParamSign($parameter);
+
+ $url = 'https://www.sli.money/api/main/v1/payment/request';
+ $ret = $this->HttpRequest($url, $parameter);
+ if($ret['code'] == 0)
+ {
+ return DataReturn('success', 0, $ret['data']['payurl']);
+ }
+ return $ret;
+ }
+
+ /**
+ * 签名生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2018-09-19
+ * @desc description
+ * @param [array] $params [输入参数]
+ * @param [boolean] $is_ksort [是否需要排序]
+ * @param [string] $key_field [密钥字段key]
+ */
+ private function GetParamSign($params = [], $is_ksort = false, $key_field = 'secret')
+ {
+ $string = '';
+ if($is_ksort)
+ {
+ ksort($params);
+ }
+ foreach($params AS $key=>$val)
+ {
+ if(!in_array($key, ['sign']))
+ {
+ $string .= $key.'='.$val.'&';
+ }
+ }
+
+ return md5($string.$key_field.'='.$this->config['secret']);
+ }
+
+ /**
+ * 支付回调处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2018-09-19
+ * @desc description
+ * @param [array] $params [输入参数]
+ */
+ public function Respond($params = [])
+ {
+ if(empty($this->config))
+ {
+ return DataReturn('配置有误', -1);
+ }
+ if(empty($params['refno']))
+ {
+ return DataReturn('支付失败', -1);
+ }
+ if(empty($params['sign']))
+ {
+ return DataReturn('签名为空', -1);
+ }
+
+ // 签名验证
+ $sign = $this->GetParamSign($params, true, 'key');
+ if($sign != $params['sign'])
+ {
+ return DataReturn('签名错误', -1);
+ }
+
+ // 支付状态
+ if(isset($params['errcode']))
+ {
+ switch($params['errcode'])
+ {
+ // 收款方报故障单
+ case 9040 :
+ $ret = DataReturn('收款平台故障', -10);
+ break;
+
+ // 交易取消
+ case 9099 :
+ $ret = DataReturn('交易取消', -20);
+ break;
+
+ // 成功
+ case 9000 :
+ case 9044 :
+ case 9046 :
+ $ret = DataReturn('支付成功', 0, $this->ReturnData($params));
+ break;
+
+ // 默认
+ default :
+ $ret = DataReturn('支付错误['.$params['errmsg'].']', -100);
+ }
+ } else {
+ $ret = DataReturn('支付异常错误', -1000);
+ }
+ return $ret;
+ }
+
+ /**
+ * [ReturnData 返回数据统一格式]
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @datetime 2018-10-06T16:54:24+0800
+ * @param [array] $data [返回数据]
+ */
+ private function ReturnData($data)
+ {
+ // 返回数据固定基础参数
+ $data['trade_no'] = isset($data['refno']) ? $data['refno'] : ''; // 支付平台 - 订单号
+ $data['buyer_user'] = ''; // 支付平台 - 用户
+ $data['out_trade_no'] = $data['orderno']; // 本系统发起支付的 - 订单号
+ $data['subject'] = ''; // 本系统发起支付的 - 商品名称
+ $data['pay_price'] = $data['amount']/100; // 本系统发起支付的 - 总价
+
+ return $data;
+ }
+
+ /**
+ * 网络请求
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @datetime 2017-09-25T09:10:46+0800
+ * @param [string] $url [请求url]
+ * @param [array] $data [发送数据]
+ * @param [int] $second [超时]
+ * @return [mixed] [请求返回数据]
+ */
+ private function HttpRequest($url, $data, $second = 30)
+ {
+ $ch = curl_init();
+ $header = ['Content-Type: application/json;charset=utf-8'];
+ curl_setopt_array($ch, array(
+ CURLOPT_URL => $url,
+ CURLOPT_HTTPHEADER => $header,
+ CURLOPT_POST => true,
+ CURLOPT_SSL_VERIFYPEER => false,
+ CURLOPT_SSL_VERIFYHOST => false,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_POSTFIELDS => json_encode($data),
+ CURLOPT_TIMEOUT => $second,
+ ));
+ $result = curl_exec($ch);
+
+ //返回结果
+ if($result)
+ {
+ curl_close($ch);
+ $res = json_decode($result, true);
+ if(empty($res) || empty($res['data']) || empty($res['data']['errcode']))
+ {
+ return DataReturn('请求失败['.$result.']', -1);
+ }
+ if($res['data']['errcode'] != 200)
+ {
+ return DataReturn($this->ErrorCodeToMsg($res['data']['errcode'], $res['data']['errmsg']), -1);
+ }
+ return DataReturn('success', 0, $res['data']);
+ } else {
+ $error = curl_errno($ch);
+ curl_close($ch);
+ return DataReturn('curl出错,错误码['.$error.']', -1);
+ }
+ }
+
+ /**
+ * 错误处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-08
+ * @desc description
+ * @param [string] $code [错误码]
+ * @param [string] $msg [错误信息]
+ */
+ public function ErrorCodeToMsg($code, $msg)
+ {
+ $data = [
+ '4001' => '第三方登录信息不能为空',
+ '4002' => '第三方登录信息不存在',
+ '4003' => '第三方订单号信息不能为空',
+ '4004' => '第三方订单号不能重复',
+ '4005' => '第三方订单支付方式不能为空',
+ '4006' => '第三方订单支付方式应该为1-5 ',
+ '4007' => '第三方订单支付金额不能为空',
+ '4008' => '第三方订单支付金额应该大于等于0 第三方订单币种汇率不能为空',
+ '4010' => '第三方订单md5check不能为空',
+ '4011' => '第三方订单callbackurl不能为空',
+ '4012' => '第三方订单notifyurl不能为空',
+ '4013' => '第三方订单rejecturl不能为空',
+ '4014' => '第三方登录帐号已经关闭',
+ '4015' => '没有该订单号',
+ '4016' => '第三方订单号不能大於30位文字',
+ '4020' => '支付金额大于流量,请先买流量',
+ '4021' => '支付金额大于最大限额,请把支付金额调小',
+ '4021' => '请把支付金额调小',
+ '4023' => '不能用这种支付方式,请找客服确认无效IP地址',
+ '4030' => '你没有当前货币的权限,请找客服确认',
+ '4040' => 'md5check错误',
+ '4041' => '不允许HTTPGET方法',
+ '4133' => '账户余额不足',
+ ];
+ return (array_key_exists($code, $data) ? $data[$code] : $msg).'['.$code.']';
+ }
+}
+?>
\ No newline at end of file
diff --git a/public/static/common/css/common.css b/public/static/common/css/common.css
index de5268da0a4a67c578bc9e0758edd45482c8dbc3..12bf64f19d7d3dcd1b4e40420de16431853bd2fd 100755
--- a/public/static/common/css/common.css
+++ b/public/static/common/css/common.css
@@ -562,7 +562,6 @@ button.colorpicker-submit img {
position: relative;
}
.am-table-scrollable-horizontal .am-table {
- border-collapse: collapse;
border: 0;
margin: 0;
}
diff --git a/public/static/common/css/layout.admin.css b/public/static/common/css/layout.admin.css
new file mode 100644
index 0000000000000000000000000000000000000000..a4bafc1fd82fbd096ff123650cbd4720d3d790f5
--- /dev/null
+++ b/public/static/common/css/layout.admin.css
@@ -0,0 +1,582 @@
+/**
+ * 选项卡切换
+ */
+.renovation-tabs .am-nav-tabs > li.am-active > a {
+ border-color: #eee #eee transparent #eee;
+}
+.renovation-tabs .am-nav-tabs {
+ background: none;
+ border-bottom: 1px solid #eee;
+}
+.renovation-tabs .am-active {
+ border-bottom: 2px solid transparent !important;
+ background: #fff;
+}
+.renovation-tabs .am-tabs-bd {
+ border-color: #eee;
+ z-index: 1;
+ position: static;
+}
+.renovation-tabs li {
+ margin-bottom: -3px !important;
+}
+.renovation-tabs li a {
+ margin-right: 0;
+}
+.renovation-tabs li:not(.am-active) a:hover {
+ border-color: transparent !important;
+}
+.renovation-tabs .renovation-panel .scrollspy-nav.am-sticky {
+ background: #fff;
+ border: 1px solid #eee;
+ border-top: 0;
+ -webkit-box-shadow: 0 3px 5px rgb(0 0 0 / 5%);
+ box-shadow: 0 3px 5px rgb(0 0 0 / 5%);
+ padding: 5px;
+}
+
+/**
+ * 拖放模块
+ */
+.structure-drag button {
+ cursor: move !important;
+}
+
+/**
+ * 布局容器-提示
+ */
+.layout-container {
+ border: 1px solid #eee;
+}
+.layout-container .layout-container-tips {
+ border: 1px dashed #ccc;
+ color: #999;
+ padding: 20px;
+ text-align: center;
+}
+.layout-container .layout-container-tips:hover,
+.layout-container .layout-container-tips.layout-view-dragenter {
+ border: 1px dashed #2196f3;
+ color: #2196f3;
+}
+
+/**
+ * 布局-基础
+ */
+.layout-content-submit .am-switch,
+.layout-content-submit .am-btn:not(:last-child),
+.module-view-submit-container .am-btn:not(:last-child) {
+ margin-right: 2px !important;
+}
+
+/**
+ * 布局容器-内容
+ */
+.layout-view {
+ background: #fff;
+}
+.layout-view .drag-submit {
+ background: #e6e6e6;
+ cursor: move !important;
+ text-align: right;
+ padding: 3px;
+ left: 0;
+ top: -28px;
+ width: 100%;
+ -webkit-box-shadow: 0 -5px 10px rgb(0 0 0 / 60%);
+ box-shadow: 0 -5px 10px rgb(0 0 0 / 60%);
+}
+.layout-view .layout-submit {
+ padding: 2px 5px;
+}
+.layout-view .drag-submit .am-switch-handle-on,
+.layout-view .drag-submit .am-switch-handle-off,
+.layout-view .drag-submit .am-switch-label {
+ padding: 3px 5px;
+}
+.layout-content {
+ border: 1px dashed rgb(244 244 244 / 50%);
+}
+.layout-content:hover {
+ border-color: #666;
+}
+.layout-content-tips {
+ color: #ccc;
+ text-align: center;
+ padding: 10px;
+}
+.layout-content-tips:hover,
+.layout-content-dragenter .layout-content-tips {
+ color: #666;
+}
+.layout-view,
+.layout-content-container,
+.layout-content-children,
+.module-view {
+ position: sticky;
+}
+.layout-content-children > [class^="am-u-md"] {
+ padding: 0;
+}
+.layout-view .drag-submit,
+.layout-content-submit-container,
+.module-view-submit-container {
+ position: absolute;
+ z-index: 1;
+ display: none;
+}
+.layout-content-submit-container .am-btn,
+.module-view-submit-container .am-btn {
+ -webkit-box-shadow: 0 3px 5px rgb(0 0 0 / 30%);
+ box-shadow: 0 3px 5px rgb(0 0 0 / 30%);
+}
+.layout-content-submit-container {
+ top: 0;
+ right: 1px;
+}
+.layout-view:hover .drag-submit,
+.layout-content-children:hover .layout-content-submit-container,
+.module-view:hover .module-view-submit-container {
+ display: block;
+}
+.module-view:hover {
+ background: rgb(222 243 255 / 15%);
+}
+.layout-container .layout-view:first-child {
+ margin-top: 0;
+}
+.layout-container .layout-view:last-child {
+ margin-bottom: 0;
+}
+.layout-container .drag-sort-dotted {
+ border-width: 2px !important;
+}
+.layout-view-hidden .layout-content-submit {
+ background: #ffdddd !important;
+}
+.layout-view-hidden .layout-content {
+ border-color: #f00 !important;
+}
+
+/**
+ * 布局新添加的样式
+ */
+.layout-view-new {
+ border: 1px solid #4caf50;
+ -webkit-box-shadow: 0 0px 4px #4caf50;
+ box-shadow: 0 0px 4px #4caf50;
+}
+
+/**
+ * 布局拖拽过程中经过的元素样式
+ */
+.layout-view-dragenter {
+ border: 2px solid #2196f3;
+}
+.layout-view-dragenter .layout-view-dragenter-icon {
+ color: #2296f3;
+ display: block !important;
+ visibility: inherit !important;
+ position: absolute;
+ left: calc(50% - 8px);
+ top: -13px;
+}
+
+/**
+ * 模块
+ */
+.module-view-submit-container {
+ top: -1px;
+ left: 0;
+}
+
+/**
+ * 模块拖拽过程中经过的元素样式
+ */
+.layout-content-dragenter {
+ border: 1px dashed #2196f3;
+ -webkit-box-shadow: 0 0px 4px #2196f3;
+ box-shadow: 0 0px 4px #2196f3;
+}
+
+/**
+ * 颜色组件
+ */
+.colorpicker-submit {
+ background-color: #fff;
+}
+
+/**
+ * 模块设置侧边栏
+ */
+.module-offcanvas-container .am-offcanvas-bar {
+ background: #fff;
+ width: 330px;
+}
+.module-offcanvas-container .am-offcanvas-bar,
+.module-offcanvas-container .goods-search-container {
+ padding-bottom: 51px;
+}
+.am-offcanvas.am-active .am-offcanvas-bar.am-offcanvas-bar-active {
+ -webkit-transform: none;
+ -ms-transform: none;
+ transform: none;
+}
+.module-offcanvas-container .am-offcanvas-content {
+ color: #666;
+}
+.module-offcanvas-container .am-offcanvas-bar:after {
+ background: #ccc;
+}
+.module-offcanvas-container .am-form-group-refreshing {
+ padding: 0 0 15px 0 !important;
+}
+.module-offcanvas-container .module-images-type-images-view,
+.module-offcanvas-container .module-slider-type-images-view {
+ padding: 0;
+}
+.module-offcanvas-container .am-offcanvas-content .am-panel {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.module-offcanvas-container .module-images-type-images-view li,
+.module-offcanvas-container .module-slider-type-images-view li {
+ width: 100%;
+ height: auto;
+ margin: 0;
+}
+.module-offcanvas-container .form-submit-container {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ width: 329px;
+ padding: 10px;
+ border-top: 1px solid #dfdfdf;
+ background: #f5f5f5;
+ z-index: 2;
+}
+.module-offcanvas-container .text-tips {
+ color: #ccc;
+}
+.module-offcanvas-container .am-tabs-d2 {
+ margin-bottom: 20px;
+}
+.module-offcanvas-container .am-tabs-d2 .am-tabs-bd {
+ border: 1px solid #ddd;
+ overflow: inherit;
+}
+.module-offcanvas-container .am-panel .am-panel-bd .am-form-group:last-child {
+ padding-bottom: 5px !important;
+}
+@media only screen and (max-width: 640px) {
+ .module-offcanvas-container .am-offcanvas-bar {
+ width: 280px;
+ }
+ .module-offcanvas-container .form-submit-container {
+ width: 279px;
+ }
+}
+
+/**
+ * 表单小组合组件
+ */
+.group-border-width input,
+.group-list-number-width input {
+ display: -webkit-inline-box;
+ text-align: center;
+}
+.group-border-width input {
+ width: 25% !important;
+}
+.group-list-number-width input {
+ width: 33.33% !important;
+}
+.group-list-number-width {
+ background: #ccc;
+}
+.group-list-number-width input:nth-child(3) {
+ border-right-width: 0px;
+}
+.group-border-width input:not(:first-child),
+.group-list-number-width input:not(:first-child),
+.group-border-radius-color .am-input-group-label {
+ border-left: 0;
+}
+.group-border-radius-color .colorpicker-submit img {
+ width: 14px;
+ height: 14px;
+}
+.group-border-style .chosen-container {
+ width: 72px !important;
+}
+.group-border-style .chosen-container:not(:last-child) {
+ margin-right: 5px;
+}
+@media only screen and (max-width: 640px) {
+ .group-border-style .chosen-container {
+ width: 59px !important;
+ }
+}
+
+/**
+ * 链接地址选择
+ */
+.form-view-choice-container-active {
+ padding: 6px;
+ border: 1px solid #ccc;
+ cursor: pointer;
+}
+.form-view-choice-container-active .am-text-truncate {
+ max-width: 70%;
+ display: inline-block;
+ vertical-align: bottom;
+}
+.form-view-choice-container-active i:hover {
+ color: #f00;
+}
+.form-view-choice-container a {
+ color: #3bb4f2;
+ text-decoration: none;
+}
+.form-view-choice-container a:hover {
+ color: #2196f3;
+}
+
+/**
+ * 模块设置侧边栏 - 商品
+ */
+#offcanvas-module-config-goods .config-goods-list {
+
+}
+#offcanvas-module-config-goods .config-goods-list li {
+ float: left;
+ border: 1px solid #eee;
+ position: relative;
+}
+#offcanvas-module-config-goods .config-goods-list li:hover {
+ border: 1px solid #ccc;
+}
+#offcanvas-module-config-goods .config-goods-list li:not(:last-child) {
+ margin: 0 15px 15px 0;
+}
+#offcanvas-module-config-goods .config-goods-list li img {
+ width: 33px;
+ height: 33px;
+}
+#offcanvas-module-config-goods .config-goods-list li .am-close,
+#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-close {
+ position: absolute;
+ top: -8px;
+ right: -8px;
+ width: 18px;
+ font-size: 12px;
+ line-height: 18px;
+ opacity: 1;
+}
+
+/**
+ * 模块设置侧边栏 - 视频
+ */
+#offcanvas-module-config-video ul.plug-file-upload-view-video li,
+#offcanvas-module-config-video ul.plug-file-upload-view li {
+ width: 100%;
+ height: auto;
+}
+
+/**
+ * 模块设置侧边栏 - 多图
+ */
+#offcanvas-module-config-many-images .config-many-images-container .am-panel {
+ position: relative;
+}
+#offcanvas-module-config-many-images .config-many-images-container .am-panel .am-form-group:last-child {
+ padding-bottom: 5px !important;
+}
+
+/**
+ * 模块设置侧边栏 - 标题
+ */
+#offcanvas-module-config-title .config-title-container li {
+ position: relative;
+}
+#offcanvas-module-config-title .config-title-container li span {
+ width: calc(100% - 55px);
+}
+#offcanvas-module-config-title .config-title-container li a.am-icon-edit,
+#offcanvas-module-config-title .config-title-container li a.am-icon-remove {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 10px;
+}
+#offcanvas-module-config-title .config-title-container li a.am-icon-edit {
+ right: 30px;
+}
+
+
+/**
+ * 页面选择
+ */
+#modal-module-pages-select .am-scrollable-vertical {
+ border-bottom: 1px solid #dedede;
+ margin-bottom: 0;
+}
+#modal-module-pages-select .am-scrollable-vertical a {
+ text-decoration: none;
+ padding-right: 30px;
+}
+#modal-module-pages-select .am-accordion-default {
+ margin: 0 0 15px 0;
+}
+#modal-module-pages-select .am-accordion-default .am-accordion-title {
+ background: #f0f8ff;
+}
+#modal-module-pages-select .am-accordion-default:last-child {
+ margin-bottom: 0;
+}
+#modal-module-pages-select .am-tabs-bd ul li {
+ border-width: 1px 0;
+}
+#modal-module-pages-select .am-tabs-bd ul li:last-child {
+ border-bottom: 0;
+}
+#modal-module-pages-select .am-tabs-bd ul.am-scrollable-vertical > li:first-child {
+ border-top: 0;
+}
+#modal-module-pages-select .am-tabs-bd ul li.active a {
+ background: #d2354c;
+ color: #fff;
+}
+#modal-module-pages-select .am-tabs-bd ul li.active a i {
+ display: block !important;
+ visibility: initial !important;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+}
+
+
+/**
+ * 商品添加-搜索列表
+ */
+.layout-forth-selection-container {
+ height: 100%;
+}
+.layout-forth-selection-container .forth-selection-container select.forth-selection-form-category {
+ display: -webkit-inline-box;
+}
+.layout-forth-selection-container .forth-selection-container .forth-selection-form-category, .forth-selection-container .chosen-container, .forth-selection-container .forth-selection-form-keywords {
+ width: calc(50% - 48px) !important;
+}
+.layout-forth-selection-container .forth-selection-container .chosen-container, .forth-selection-container .forth-selection-form-keywords {
+ display: -webkit-inline-box !important;
+}
+.layout-forth-selection-container .forth-selection-container .chosen-single {
+ width: 100%;
+}
+.layout-forth-selection-container .forth-selection-container .search-submit {
+ width: 87px;
+}
+.layout-forth-selection-container .goods-list-container {
+ height: calc(100% - 157px);
+ border: 1px solid #eee;
+}
+.layout-forth-selection-container .goods-list-container .am-gallery-bordered .am-gallery-title {
+ margin-top: 5px;
+}
+.layout-forth-selection-container .goods-list-container ul li {
+ position: relative;
+ cursor: pointer;
+}
+.layout-forth-selection-container .goods-list-container ul li:hover .am-gallery-item {
+ -webkit-box-shadow: 0 0 6px #3cb4f1;
+ box-shadow: 0 0 6px #3cb4f1;
+}
+.layout-forth-selection-container .goods-list-container .icon-submit-container {
+ position: absolute;
+ right: 15px;
+ bottom: 47px;
+}
+.layout-forth-selection-container .goods-list-container .icon-submit-container .am-icon-btn {
+ width: 36px;
+ height: 36px;
+ line-height: 36px;
+ font-size: 20px;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.5);
+}
+.layout-forth-selection-container .goods-list-container .am-icon-btn.am-success:hover {
+ background: #4CAF50;
+}
+.layout-forth-selection-container .goods-list-container .am-icon-btn.am-danger:hover {
+ background: #F44336;
+}
+.layout-forth-selection-container .goods-page-container {
+ height: 40px;
+}
+.layout-forth-selection-container .goods-bottom-operate-container {
+ background: #f5f5f5;
+ border-top: 1px solid #dedede;
+ position: fixed;
+ left: 0;
+ bottom: 25px;
+ width: calc(100% - 50px);
+ margin: 0 25px;
+}
+
+/**
+ * 商品分类选择
+ */
+.layout-category-choice .goods-category-choice-content {
+ background: #f8f8f8;
+ border: 1px solid #eee;
+}
+.layout-category-choice .goods-category-choice-content ul {
+ width: calc(33% - 15px);
+ margin-bottom: 0;
+ height: 380px;
+ background: #fff;
+ border: 1px solid #dedede;
+}
+.layout-category-choice .goods-category-choice-content ul li {
+ border-width: 1px 0;
+ border-top: 0;
+ margin-bottom: 0;
+}
+.layout-category-choice .goods-category-choice-content ul li:not(:nth-child(-n+7)):last-child {
+ border-bottom: 0;
+}
+.layout-category-choice .goods-category-choice-content ul li:first-child {
+ border-bottom: 1px solid #dedede;
+}
+.layout-category-choice .goods-category-choice-content ul li a {
+ text-decoration: none;
+}
+.layout-category-choice .goods-category-choice-content ul li.active a {
+ background: #d2354c;
+ color: #fff;
+}
+.layout-category-choice .goods-category-choice .already-select-tips {
+ padding: 10px 15px;
+ border: 1px solid #ed7f5a;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ background-color: #fff4f0;
+ color: #ed7f5a;
+}
+.layout-category-choice .form-container-category .goods-category-choice-content {
+ padding: 15px;
+ background: #fcfcfc;
+}
+.layout-category-choice .form-container-brand .goods-category-choice-content {
+ border: 0px;
+}
+.layout-category-choice .form-container-brand ul {
+ width: 100%;
+ height: 465px;
+}
+@media only screen and (max-width: 640px) {
+ .layout-category-choice .form-container-category .goods-category-choice-content ul.am-margin-left-lg {
+ margin-left: 20px;
+ }
+}
\ No newline at end of file
diff --git a/public/static/common/css/layout.css b/public/static/common/css/layout.css
new file mode 100644
index 0000000000000000000000000000000000000000..a652b093d7771b90924d96157faa6b0f17659879
--- /dev/null
+++ b/public/static/common/css/layout.css
@@ -0,0 +1,1925 @@
+/**
+ * 布局基础
+ */
+.layout-content-children,.layout-content-container{overflow:hidden;}
+
+/**
+ * 模块类型样式 - 数据列表
+ */
+.module-list-content li{float:left}
+.module-list-content .module-item{background:#fff}
+.module-list-content .module-item .item-bottom{margin-top:5px}
+.module-list-content .module-item .module-title{margin-bottom:5px}
+.module-list-content .module-item .module-title{max-width:100%;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:18px;height:34px;white-space:initial !important}
+.module-list-content .module-item .module-price{color:#c00;font-weight:bold;word-wrap:normal;text-overflow:ellipsis;white-space:nowrap}
+.module-list-content-avg-1{width:calc(100% + 1px);margin-left:-1px;margin-top:-1px;}
+.module-list-content-avg-2{width:calc(100% + 2px);margin-left:-2px;margin-top:-2px;}
+.module-list-content-avg-3{width:calc(100% + 3px);margin-left:-3px;margin-top:-3px;}
+.module-list-content-avg-4{width:calc(100% + 4px);margin-left:-4px;margin-top:-4px;}
+.module-list-content-avg-5{width:calc(100% + 5px);margin-left:-5px;margin-top:-5px;}
+.module-list-content-avg-6{width:calc(100% + 6px);margin-left:-6px;margin-top:-6px;}
+.module-list-content-avg-7{width:calc(100% + 7px);margin-left:-7px;margin-top:-7px;}
+.module-list-content-avg-8{width:calc(100% + 8px);margin-left:-8px;margin-top:-8px;}
+.module-list-content-avg-9{width:calc(100% + 9px);margin-left:-9px;margin-top:-9px;}
+.module-list-content-avg-10{width:calc(100% + 10px);margin-left:-10px;margin-top:-10px;}
+.module-list-content-avg-11{width:calc(100% + 11px);margin-left:-11px;margin-top:-11px;}
+.module-list-content-avg-12{width:calc(100% + 12px);margin-left:-12px;margin-top:-12px;}
+.module-list-content-avg-13{width:calc(100% + 13px);margin-left:-13px;margin-top:-13px;}
+.module-list-content-avg-14{width:calc(100% + 14px);margin-left:-14px;margin-top:-14px;}
+.module-list-content-avg-15{width:calc(100% + 15px);margin-left:-15px;margin-top:-15px;}
+.module-list-content-avg-16{width:calc(100% + 16px);margin-left:-16px;margin-top:-16px;}
+.module-list-content-avg-17{width:calc(100% + 17px);margin-left:-17px;margin-top:-17px;}
+.module-list-content-avg-18{width:calc(100% + 18px);margin-left:-18px;margin-top:-18px;}
+.module-list-content-avg-19{width:calc(100% + 19px);margin-left:-19px;margin-top:-19px;}
+.module-list-content-avg-20{width:calc(100% + 20px);margin-left:-20px;margin-top:-20px;}
+.module-list-content-avg-21{width:calc(100% + 21px);margin-left:-21px;margin-top:-21px;}
+.module-list-content-avg-22{width:calc(100% + 22px);margin-left:-22px;margin-top:-22px;}
+.module-list-content-avg-23{width:calc(100% + 23px);margin-left:-23px;margin-top:-23px;}
+.module-list-content-avg-24{width:calc(100% + 24px);margin-left:-24px;margin-top:-24px;}
+.module-list-content-avg-25{width:calc(100% + 25px);margin-left:-25px;margin-top:-25px;}
+.module-list-content-avg-26{width:calc(100% + 26px);margin-left:-26px;margin-top:-26px;}
+.module-list-content-avg-27{width:calc(100% + 27px);margin-left:-27px;margin-top:-27px;}
+.module-list-content-avg-28{width:calc(100% + 28px);margin-left:-28px;margin-top:-28px;}
+.module-list-content-avg-29{width:calc(100% + 29px);margin-left:-29px;margin-top:-29px;}
+.module-list-content-avg-30{width:calc(100% + 30px);margin-left:-30px;margin-top:-30px;}
+@media only screen and (min-width:641px) {
+ .module-list-md-1 li{width:100%;}
+ .module-list-md-2 li{width:50%;}
+ .module-list-md-3 li{width:33.33%;}
+ .module-list-md-4 li{width:25%;}
+ .module-list-md-5 li{width:20%;}
+ .module-list-md-6 li{width:16.66%;}
+ .module-list-md-7 li{width:14.28%;}
+ .module-list-md-8 li{width:12.5%;}
+ .module-list-md-9 li{width:11.11%;}
+ .module-list-md-10 li{width:10%;}
+ .module-list-md-11 li{width:9.09%;}
+ .module-list-md-12 li{width:8.33%;}
+}
+@media only screen and (min-width:1025px) {
+ .module-list-lg-1 li{width:100%;}
+ .module-list-lg-2 li{width:50%;}
+ .module-list-lg-3 li{width:33.33%;}
+ .module-list-lg-4 li{width:25%;}
+ .module-list-lg-5 li{width:20%;}
+ .module-list-lg-6 li{width:16.66%;}
+ .module-list-lg-7 li{width:14.28%;}
+ .module-list-lg-8 li{width:12.5%;}
+ .module-list-lg-9 li{width:11.11%;}
+ .module-list-lg-10 li{width:10%;}
+ .module-list-lg-11 li{width:9.09%;}
+ .module-list-lg-12 li{width:8.33%;}
+}
+@media only screen and (max-width: 640px) {
+ .module-list-sm-1 li{width:100%;}
+ .module-list-sm-2 li{width:50%;}
+ .module-list-sm-3 li{width:33.33%;}
+ .module-list-sm-4 li{width:25%;}
+ .module-list-sm-5 li{width:20%;}
+ .module-list-sm-6 li{width:16.66%;}
+ .module-list-sm-7 li{width:14.28%;}
+ .module-list-sm-8 li{width:12.5%;}
+ .module-list-sm-9 li{width:11.11%;}
+ .module-list-sm-10 li{width:10%;}
+ .module-list-sm-11 li{width:9.09%;}
+ .module-list-sm-12 li{width:8.33%;}
+}
+
+
+/**
+ * 布局圆角
+ */
+@media only screen and (min-width:641px) {
+ .layout-md-border-radius-1{border-radius:1px;}
+ .layout-md-border-radius-2{border-radius:2px;}
+ .layout-md-border-radius-3{border-radius:3px;}
+ .layout-md-border-radius-4{border-radius:4px;}
+ .layout-md-border-radius-5{border-radius:5px;}
+ .layout-md-border-radius-6{border-radius:6px;}
+ .layout-md-border-radius-7{border-radius:7px;}
+ .layout-md-border-radius-8{border-radius:8px;}
+ .layout-md-border-radius-9{border-radius:9px;}
+ .layout-md-border-radius-10{border-radius:10px;}
+ .layout-md-border-radius-11{border-radius:11px;}
+ .layout-md-border-radius-12{border-radius:12px;}
+ .layout-md-border-radius-13{border-radius:13px;}
+ .layout-md-border-radius-14{border-radius:14px;}
+ .layout-md-border-radius-15{border-radius:15px;}
+ .layout-md-border-radius-16{border-radius:16px;}
+ .layout-md-border-radius-17{border-radius:17px;}
+ .layout-md-border-radius-18{border-radius:18px;}
+ .layout-md-border-radius-19{border-radius:19px;}
+ .layout-md-border-radius-20{border-radius:20px;}
+ .layout-md-border-radius-21{border-radius:21px;}
+ .layout-md-border-radius-22{border-radius:22px;}
+ .layout-md-border-radius-23{border-radius:23px;}
+ .layout-md-border-radius-24{border-radius:24px;}
+ .layout-md-border-radius-25{border-radius:25px;}
+ .layout-md-border-radius-26{border-radius:26px;}
+ .layout-md-border-radius-27{border-radius:27px;}
+ .layout-md-border-radius-28{border-radius:28px;}
+ .layout-md-border-radius-29{border-radius:29px;}
+ .layout-md-border-radius-30{border-radius:30px;}
+}
+@media only screen and (min-width:1025px) {
+ .layout-lg-border-radius-1{border-radius:1px;}
+ .layout-lg-border-radius-2{border-radius:2px;}
+ .layout-lg-border-radius-3{border-radius:3px;}
+ .layout-lg-border-radius-4{border-radius:4px;}
+ .layout-lg-border-radius-5{border-radius:5px;}
+ .layout-lg-border-radius-6{border-radius:6px;}
+ .layout-lg-border-radius-7{border-radius:7px;}
+ .layout-lg-border-radius-8{border-radius:8px;}
+ .layout-lg-border-radius-9{border-radius:9px;}
+ .layout-lg-border-radius-10{border-radius:10px;}
+ .layout-lg-border-radius-11{border-radius:11px;}
+ .layout-lg-border-radius-12{border-radius:12px;}
+ .layout-lg-border-radius-13{border-radius:13px;}
+ .layout-lg-border-radius-14{border-radius:14px;}
+ .layout-lg-border-radius-15{border-radius:15px;}
+ .layout-lg-border-radius-16{border-radius:16px;}
+ .layout-lg-border-radius-17{border-radius:17px;}
+ .layout-lg-border-radius-18{border-radius:18px;}
+ .layout-lg-border-radius-19{border-radius:19px;}
+ .layout-lg-border-radius-20{border-radius:20px;}
+ .layout-lg-border-radius-21{border-radius:21px;}
+ .layout-lg-border-radius-22{border-radius:22px;}
+ .layout-lg-border-radius-23{border-radius:23px;}
+ .layout-lg-border-radius-24{border-radius:24px;}
+ .layout-lg-border-radius-25{border-radius:25px;}
+ .layout-lg-border-radius-26{border-radius:26px;}
+ .layout-lg-border-radius-27{border-radius:27px;}
+ .layout-lg-border-radius-28{border-radius:28px;}
+ .layout-lg-border-radius-29{border-radius:29px;}
+ .layout-lg-border-radius-30{border-radius:30px;}
+}
+@media only screen and (max-width: 640px) {
+ .layout-sm-border-radius-1{border-radius:1px;}
+ .layout-sm-border-radius-2{border-radius:2px;}
+ .layout-sm-border-radius-3{border-radius:3px;}
+ .layout-sm-border-radius-4{border-radius:4px;}
+ .layout-sm-border-radius-5{border-radius:5px;}
+ .layout-sm-border-radius-6{border-radius:6px;}
+ .layout-sm-border-radius-7{border-radius:7px;}
+ .layout-sm-border-radius-8{border-radius:8px;}
+ .layout-sm-border-radius-9{border-radius:9px;}
+ .layout-sm-border-radius-10{border-radius:10px;}
+ .layout-sm-border-radius-11{border-radius:11px;}
+ .layout-sm-border-radius-12{border-radius:12px;}
+ .layout-sm-border-radius-13{border-radius:13px;}
+ .layout-sm-border-radius-14{border-radius:14px;}
+ .layout-sm-border-radius-15{border-radius:15px;}
+ .layout-sm-border-radius-16{border-radius:16px;}
+ .layout-sm-border-radius-17{border-radius:17px;}
+ .layout-sm-border-radius-18{border-radius:18px;}
+ .layout-sm-border-radius-19{border-radius:19px;}
+ .layout-sm-border-radius-20{border-radius:20px;}
+ .layout-sm-border-radius-21{border-radius:21px;}
+ .layout-sm-border-radius-22{border-radius:22px;}
+ .layout-sm-border-radius-23{border-radius:23px;}
+ .layout-sm-border-radius-24{border-radius:24px;}
+ .layout-sm-border-radius-25{border-radius:25px;}
+ .layout-sm-border-radius-26{border-radius:26px;}
+ .layout-sm-border-radius-27{border-radius:27px;}
+ .layout-sm-border-radius-28{border-radius:28px;}
+ .layout-sm-border-radius-29{border-radius:29px;}
+ .layout-sm-border-radius-30{border-radius:30px;}
+}
+
+/**
+ * 布局样式 - 边线大小
+ */
+@media only screen and (min-width:641px) {
+ .layout-md-border-top-1{border-top:1px;}
+ .layout-md-border-top-2{border-top:2px;}
+ .layout-md-border-top-3{border-top:3px;}
+ .layout-md-border-top-4{border-top:4px;}
+ .layout-md-border-top-5{border-top:5px;}
+ .layout-md-border-top-6{border-top:6px;}
+ .layout-md-border-top-7{border-top:7px;}
+ .layout-md-border-top-8{border-top:8px;}
+ .layout-md-border-top-9{border-top:9px;}
+ .layout-md-border-top-10{border-top:10px;}
+
+ .layout-md-border-right-1{border-right:1px;}
+ .layout-md-border-right-2{border-right:2px;}
+ .layout-md-border-right-3{border-right:3px;}
+ .layout-md-border-right-4{border-right:4px;}
+ .layout-md-border-right-5{border-right:5px;}
+ .layout-md-border-right-6{border-right:6px;}
+ .layout-md-border-right-7{border-right:7px;}
+ .layout-md-border-right-8{border-right:8px;}
+ .layout-md-border-right-9{border-right:9px;}
+ .layout-md-border-right-10{border-right:10px;}
+
+ .layout-md-border-bottom-1{border-bottom:1px;}
+ .layout-md-border-bottom-2{border-bottom:2px;}
+ .layout-md-border-bottom-3{border-bottom:3px;}
+ .layout-md-border-bottom-4{border-bottom:4px;}
+ .layout-md-border-bottom-5{border-bottom:5px;}
+ .layout-md-border-bottom-6{border-bottom:6px;}
+ .layout-md-border-bottom-7{border-bottom:7px;}
+ .layout-md-border-bottom-8{border-bottom:8px;}
+ .layout-md-border-bottom-9{border-bottom:9px;}
+ .layout-md-border-bottom-10{border-bottom:10px;}
+
+ .layout-md-border-left-1{border-left:1px;}
+ .layout-md-border-left-2{border-left:2px;}
+ .layout-md-border-left-3{border-left:3px;}
+ .layout-md-border-left-4{border-left:4px;}
+ .layout-md-border-left-5{border-left:5px;}
+ .layout-md-border-left-6{border-left:6px;}
+ .layout-md-border-left-7{border-left:7px;}
+ .layout-md-border-left-8{border-left:8px;}
+ .layout-md-border-left-9{border-left:9px;}
+ .layout-md-border-left-10{border-left:10px;}
+}
+@media only screen and (min-width:1025px) {
+ .layout-lg-border-top-1{border-top:1px;}
+ .layout-lg-border-top-2{border-top:2px;}
+ .layout-lg-border-top-3{border-top:3px;}
+ .layout-lg-border-top-4{border-top:4px;}
+ .layout-lg-border-top-5{border-top:5px;}
+ .layout-lg-border-top-6{border-top:6px;}
+ .layout-lg-border-top-7{border-top:7px;}
+ .layout-lg-border-top-8{border-top:8px;}
+ .layout-lg-border-top-9{border-top:9px;}
+ .layout-lg-border-top-10{border-top:10px;}
+
+ .layout-lg-border-right-1{border-right:1px;}
+ .layout-lg-border-right-2{border-right:2px;}
+ .layout-lg-border-right-3{border-right:3px;}
+ .layout-lg-border-right-4{border-right:4px;}
+ .layout-lg-border-right-5{border-right:5px;}
+ .layout-lg-border-right-6{border-right:6px;}
+ .layout-lg-border-right-7{border-right:7px;}
+ .layout-lg-border-right-8{border-right:8px;}
+ .layout-lg-border-right-9{border-right:9px;}
+ .layout-lg-border-right-10{border-right:10px;}
+
+ .layout-lg-border-bottom-1{border-bottom:1px;}
+ .layout-lg-border-bottom-2{border-bottom:2px;}
+ .layout-lg-border-bottom-3{border-bottom:3px;}
+ .layout-lg-border-bottom-4{border-bottom:4px;}
+ .layout-lg-border-bottom-5{border-bottom:5px;}
+ .layout-lg-border-bottom-6{border-bottom:6px;}
+ .layout-lg-border-bottom-7{border-bottom:7px;}
+ .layout-lg-border-bottom-8{border-bottom:8px;}
+ .layout-lg-border-bottom-9{border-bottom:9px;}
+ .layout-lg-border-bottom-10{border-bottom:10px;}
+
+ .layout-lg-border-left-1{border-left:1px;}
+ .layout-lg-border-left-2{border-left:2px;}
+ .layout-lg-border-left-3{border-left:3px;}
+ .layout-lg-border-left-4{border-left:4px;}
+ .layout-lg-border-left-5{border-left:5px;}
+ .layout-lg-border-left-6{border-left:6px;}
+ .layout-lg-border-left-7{border-left:7px;}
+ .layout-lg-border-left-8{border-left:8px;}
+ .layout-lg-border-left-9{border-left:9px;}
+ .layout-lg-border-left-10{border-left:10px;}
+}
+@media only screen and (max-width: 640px) {
+ .layout-sm-border-top-1{border-top:1px;}
+ .layout-sm-border-top-2{border-top:2px;}
+ .layout-sm-border-top-3{border-top:3px;}
+ .layout-sm-border-top-4{border-top:4px;}
+ .layout-sm-border-top-5{border-top:5px;}
+ .layout-sm-border-top-6{border-top:6px;}
+ .layout-sm-border-top-7{border-top:7px;}
+ .layout-sm-border-top-8{border-top:8px;}
+ .layout-sm-border-top-9{border-top:9px;}
+ .layout-sm-border-top-10{border-top:10px;}
+
+ .layout-sm-border-right-1{border-right:1px;}
+ .layout-sm-border-right-2{border-right:2px;}
+ .layout-sm-border-right-3{border-right:3px;}
+ .layout-sm-border-right-4{border-right:4px;}
+ .layout-sm-border-right-5{border-right:5px;}
+ .layout-sm-border-right-6{border-right:6px;}
+ .layout-sm-border-right-7{border-right:7px;}
+ .layout-sm-border-right-8{border-right:8px;}
+ .layout-sm-border-right-9{border-right:9px;}
+ .layout-sm-border-right-10{border-right:10px;}
+
+ .layout-sm-border-bottom-1{border-bottom:1px;}
+ .layout-sm-border-bottom-2{border-bottom:2px;}
+ .layout-sm-border-bottom-3{border-bottom:3px;}
+ .layout-sm-border-bottom-4{border-bottom:4px;}
+ .layout-sm-border-bottom-5{border-bottom:5px;}
+ .layout-sm-border-bottom-6{border-bottom:6px;}
+ .layout-sm-border-bottom-7{border-bottom:7px;}
+ .layout-sm-border-bottom-8{border-bottom:8px;}
+ .layout-sm-border-bottom-9{border-bottom:9px;}
+ .layout-sm-border-bottom-10{border-bottom:10px;}
+
+ .layout-sm-border-left-1{border-left:1px;}
+ .layout-sm-border-left-2{border-left:2px;}
+ .layout-sm-border-left-3{border-left:3px;}
+ .layout-sm-border-left-4{border-left:4px;}
+ .layout-sm-border-left-5{border-left:5px;}
+ .layout-sm-border-left-6{border-left:6px;}
+ .layout-sm-border-left-7{border-left:7px;}
+ .layout-sm-border-left-8{border-left:8px;}
+ .layout-sm-border-left-9{border-left:9px;}
+ .layout-sm-border-left-10{border-left:10px;}
+}
+
+/**
+ * 布局边线 - 边线类型
+ */
+@media only screen and (min-width:641px) {
+ .layout-md-border-top-solid{border-top-style:solid;}
+ .layout-md-border-top-dashed{border-top-style:dashed;}
+ .layout-md-border-top-dotted{border-top-style:dotted;}
+ .layout-md-border-top-double{border-top-style:double;}
+
+ .layout-md-border-right-solid{border-right-style:solid;}
+ .layout-md-border-right-dashed{border-right-style:dashed;}
+ .layout-md-border-right-dotted{border-right-style:dotted;}
+ .layout-md-border-right-double{border-right-style:double;}
+
+ .layout-md-border-bottom-solid{border-bottom-style:solid;}
+ .layout-md-border-bottom-dashed{border-bottom-style:dashed;}
+ .layout-md-border-bottom-dotted{border-bottom-style:dotted;}
+ .layout-md-border-bottom-double{border-bottom-style:double;}
+
+ .layout-md-border-left-solid{border-left-style:solid;}
+ .layout-md-border-left-dashed{border-left-style:dashed;}
+ .layout-md-border-left-dotted{border-left-style:dotted;}
+ .layout-md-border-left-double{border-left-style:double;}
+}
+@media only screen and (min-width:1025px) {
+ .layout-lg-border-top-solid{border-top-style:solid;}
+ .layout-lg-border-top-dashed{border-top-style:dashed;}
+ .layout-lg-border-top-dotted{border-top-style:dotted;}
+ .layout-lg-border-top-double{border-top-style:double;}
+
+ .layout-lg-border-right-solid{border-right-style:solid;}
+ .layout-lg-border-right-dashed{border-right-style:dashed;}
+ .layout-lg-border-right-dotted{border-right-style:dotted;}
+ .layout-lg-border-right-double{border-right-style:double;}
+
+ .layout-lg-border-bottom-solid{border-bottom-style:solid;}
+ .layout-lg-border-bottom-dashed{border-bottom-style:dashed;}
+ .layout-lg-border-bottom-dotted{border-bottom-style:dotted;}
+ .layout-lg-border-bottom-double{border-bottom-style:double;}
+
+ .layout-lg-border-left-solid{border-left-style:solid;}
+ .layout-lg-border-left-dashed{border-left-style:dashed;}
+ .layout-lg-border-left-dotted{border-left-style:dotted;}
+ .layout-lg-border-left-double{border-left-style:double;}
+}
+@media only screen and (max-width: 640px) {
+ .layout-sm-border-top-solid{border-top-style:solid;}
+ .layout-sm-border-top-dashed{border-top-style:dashed;}
+ .layout-sm-border-top-dotted{border-top-style:dotted;}
+ .layout-sm-border-top-double{border-top-style:double;}
+
+ .layout-sm-border-right-solid{border-right-style:solid;}
+ .layout-sm-border-right-dashed{border-right-style:dashed;}
+ .layout-sm-border-right-dotted{border-right-style:dotted;}
+ .layout-sm-border-right-double{border-right-style:double;}
+
+ .layout-sm-border-bottom-solid{border-bottom-style:solid;}
+ .layout-sm-border-bottom-dashed{border-bottom-style:dashed;}
+ .layout-sm-border-bottom-dotted{border-bottom-style:dotted;}
+ .layout-sm-border-bottom-double{border-bottom-style:double;}
+
+ .layout-sm-border-left-solid{border-left-style:solid;}
+ .layout-sm-border-left-dashed{border-left-style:dashed;}
+ .layout-sm-border-left-dotted{border-left-style:dotted;}
+ .layout-sm-border-left-double{border-left-style:double;}
+}
+
+/**
+ * 布局外边距
+ */
+@media only screen and (min-width:641px) {
+ .layout-md-margin-top-1{margin-top:1px;}
+ .layout-md-margin-top-2{margin-top:2px;}
+ .layout-md-margin-top-3{margin-top:3px;}
+ .layout-md-margin-top-4{margin-top:4px;}
+ .layout-md-margin-top-5{margin-top:5px;}
+ .layout-md-margin-top-6{margin-top:6px;}
+ .layout-md-margin-top-7{margin-top:7px;}
+ .layout-md-margin-top-8{margin-top:8px;}
+ .layout-md-margin-top-9{margin-top:9px;}
+ .layout-md-margin-top-10{margin-top:10px;}
+ .layout-md-margin-top-11{margin-top:11px;}
+ .layout-md-margin-top-12{margin-top:12px;}
+ .layout-md-margin-top-13{margin-top:13px;}
+ .layout-md-margin-top-14{margin-top:14px;}
+ .layout-md-margin-top-15{margin-top:15px;}
+ .layout-md-margin-top-16{margin-top:16px;}
+ .layout-md-margin-top-17{margin-top:17px;}
+ .layout-md-margin-top-18{margin-top:18px;}
+ .layout-md-margin-top-19{margin-top:19px;}
+ .layout-md-margin-top-20{margin-top:20px;}
+ .layout-md-margin-top-21{margin-top:21px;}
+ .layout-md-margin-top-22{margin-top:22px;}
+ .layout-md-margin-top-23{margin-top:23px;}
+ .layout-md-margin-top-24{margin-top:24px;}
+ .layout-md-margin-top-25{margin-top:25px;}
+ .layout-md-margin-top-26{margin-top:26px;}
+ .layout-md-margin-top-27{margin-top:27px;}
+ .layout-md-margin-top-28{margin-top:28px;}
+ .layout-md-margin-top-29{margin-top:29px;}
+ .layout-md-margin-top-30{margin-top:30px;}
+ .layout-md-margin-top-31{margin-top:31px;}
+ .layout-md-margin-top-32{margin-top:32px;}
+ .layout-md-margin-top-33{margin-top:33px;}
+ .layout-md-margin-top-34{margin-top:34px;}
+ .layout-md-margin-top-35{margin-top:35px;}
+ .layout-md-margin-top-36{margin-top:36px;}
+ .layout-md-margin-top-37{margin-top:37px;}
+ .layout-md-margin-top-38{margin-top:38px;}
+ .layout-md-margin-top-39{margin-top:39px;}
+ .layout-md-margin-top-40{margin-top:40px;}
+ .layout-md-margin-top-41{margin-top:41px;}
+ .layout-md-margin-top-42{margin-top:42px;}
+ .layout-md-margin-top-43{margin-top:43px;}
+ .layout-md-margin-top-44{margin-top:44px;}
+ .layout-md-margin-top-45{margin-top:45px;}
+ .layout-md-margin-top-46{margin-top:46px;}
+ .layout-md-margin-top-47{margin-top:47px;}
+ .layout-md-margin-top-48{margin-top:48px;}
+ .layout-md-margin-top-49{margin-top:49px;}
+ .layout-md-margin-top-50{margin-top:50px;}
+ .layout-md-margin-top-51{margin-top:51px;}
+ .layout-md-margin-top-52{margin-top:52px;}
+ .layout-md-margin-top-53{margin-top:53px;}
+ .layout-md-margin-top-54{margin-top:54px;}
+ .layout-md-margin-top-55{margin-top:55px;}
+ .layout-md-margin-top-56{margin-top:56px;}
+ .layout-md-margin-top-57{margin-top:57px;}
+ .layout-md-margin-top-58{margin-top:58px;}
+ .layout-md-margin-top-59{margin-top:59px;}
+ .layout-md-margin-top-60{margin-top:60px;}
+
+ .layout-md-margin-right-1{margin-right:1px;}
+ .layout-md-margin-right-2{margin-right:2px;}
+ .layout-md-margin-right-3{margin-right:3px;}
+ .layout-md-margin-right-4{margin-right:4px;}
+ .layout-md-margin-right-5{margin-right:5px;}
+ .layout-md-margin-right-6{margin-right:6px;}
+ .layout-md-margin-right-7{margin-right:7px;}
+ .layout-md-margin-right-8{margin-right:8px;}
+ .layout-md-margin-right-9{margin-right:9px;}
+ .layout-md-margin-right-10{margin-right:10px;}
+ .layout-md-margin-right-11{margin-right:11px;}
+ .layout-md-margin-right-12{margin-right:12px;}
+ .layout-md-margin-right-13{margin-right:13px;}
+ .layout-md-margin-right-14{margin-right:14px;}
+ .layout-md-margin-right-15{margin-right:15px;}
+ .layout-md-margin-right-16{margin-right:16px;}
+ .layout-md-margin-right-17{margin-right:17px;}
+ .layout-md-margin-right-18{margin-right:18px;}
+ .layout-md-margin-right-19{margin-right:19px;}
+ .layout-md-margin-right-20{margin-right:20px;}
+ .layout-md-margin-right-21{margin-right:21px;}
+ .layout-md-margin-right-22{margin-right:22px;}
+ .layout-md-margin-right-23{margin-right:23px;}
+ .layout-md-margin-right-24{margin-right:24px;}
+ .layout-md-margin-right-25{margin-right:25px;}
+ .layout-md-margin-right-26{margin-right:26px;}
+ .layout-md-margin-right-27{margin-right:27px;}
+ .layout-md-margin-right-28{margin-right:28px;}
+ .layout-md-margin-right-29{margin-right:29px;}
+ .layout-md-margin-right-30{margin-right:30px;}
+ .layout-md-margin-right-31{margin-right:31px;}
+ .layout-md-margin-right-32{margin-right:32px;}
+ .layout-md-margin-right-33{margin-right:33px;}
+ .layout-md-margin-right-34{margin-right:34px;}
+ .layout-md-margin-right-35{margin-right:35px;}
+ .layout-md-margin-right-36{margin-right:36px;}
+ .layout-md-margin-right-37{margin-right:37px;}
+ .layout-md-margin-right-38{margin-right:38px;}
+ .layout-md-margin-right-39{margin-right:39px;}
+ .layout-md-margin-right-40{margin-right:40px;}
+ .layout-md-margin-right-41{margin-right:41px;}
+ .layout-md-margin-right-42{margin-right:42px;}
+ .layout-md-margin-right-43{margin-right:43px;}
+ .layout-md-margin-right-44{margin-right:44px;}
+ .layout-md-margin-right-45{margin-right:45px;}
+ .layout-md-margin-right-46{margin-right:46px;}
+ .layout-md-margin-right-47{margin-right:47px;}
+ .layout-md-margin-right-48{margin-right:48px;}
+ .layout-md-margin-right-49{margin-right:49px;}
+ .layout-md-margin-right-50{margin-right:50px;}
+ .layout-md-margin-right-51{margin-right:51px;}
+ .layout-md-margin-right-52{margin-right:52px;}
+ .layout-md-margin-right-53{margin-right:53px;}
+ .layout-md-margin-right-54{margin-right:54px;}
+ .layout-md-margin-right-55{margin-right:55px;}
+ .layout-md-margin-right-56{margin-right:56px;}
+ .layout-md-margin-right-57{margin-right:57px;}
+ .layout-md-margin-right-58{margin-right:58px;}
+ .layout-md-margin-right-59{margin-right:59px;}
+ .layout-md-margin-right-60{margin-right:60px;}
+
+ .layout-md-margin-bottom-1{margin-bottom:1px;}
+ .layout-md-margin-bottom-2{margin-bottom:2px;}
+ .layout-md-margin-bottom-3{margin-bottom:3px;}
+ .layout-md-margin-bottom-4{margin-bottom:4px;}
+ .layout-md-margin-bottom-5{margin-bottom:5px;}
+ .layout-md-margin-bottom-6{margin-bottom:6px;}
+ .layout-md-margin-bottom-7{margin-bottom:7px;}
+ .layout-md-margin-bottom-8{margin-bottom:8px;}
+ .layout-md-margin-bottom-9{margin-bottom:9px;}
+ .layout-md-margin-bottom-10{margin-bottom:10px;}
+ .layout-md-margin-bottom-11{margin-bottom:11px;}
+ .layout-md-margin-bottom-12{margin-bottom:12px;}
+ .layout-md-margin-bottom-13{margin-bottom:13px;}
+ .layout-md-margin-bottom-14{margin-bottom:14px;}
+ .layout-md-margin-bottom-15{margin-bottom:15px;}
+ .layout-md-margin-bottom-16{margin-bottom:16px;}
+ .layout-md-margin-bottom-17{margin-bottom:17px;}
+ .layout-md-margin-bottom-18{margin-bottom:18px;}
+ .layout-md-margin-bottom-19{margin-bottom:19px;}
+ .layout-md-margin-bottom-20{margin-bottom:20px;}
+ .layout-md-margin-bottom-21{margin-bottom:21px;}
+ .layout-md-margin-bottom-22{margin-bottom:22px;}
+ .layout-md-margin-bottom-23{margin-bottom:23px;}
+ .layout-md-margin-bottom-24{margin-bottom:24px;}
+ .layout-md-margin-bottom-25{margin-bottom:25px;}
+ .layout-md-margin-bottom-26{margin-bottom:26px;}
+ .layout-md-margin-bottom-27{margin-bottom:27px;}
+ .layout-md-margin-bottom-28{margin-bottom:28px;}
+ .layout-md-margin-bottom-29{margin-bottom:29px;}
+ .layout-md-margin-bottom-30{margin-bottom:30px;}
+ .layout-md-margin-bottom-31{margin-bottom:31px;}
+ .layout-md-margin-bottom-32{margin-bottom:32px;}
+ .layout-md-margin-bottom-33{margin-bottom:33px;}
+ .layout-md-margin-bottom-34{margin-bottom:34px;}
+ .layout-md-margin-bottom-35{margin-bottom:35px;}
+ .layout-md-margin-bottom-36{margin-bottom:36px;}
+ .layout-md-margin-bottom-37{margin-bottom:37px;}
+ .layout-md-margin-bottom-38{margin-bottom:38px;}
+ .layout-md-margin-bottom-39{margin-bottom:39px;}
+ .layout-md-margin-bottom-40{margin-bottom:40px;}
+ .layout-md-margin-bottom-41{margin-bottom:41px;}
+ .layout-md-margin-bottom-42{margin-bottom:42px;}
+ .layout-md-margin-bottom-43{margin-bottom:43px;}
+ .layout-md-margin-bottom-44{margin-bottom:44px;}
+ .layout-md-margin-bottom-45{margin-bottom:45px;}
+ .layout-md-margin-bottom-46{margin-bottom:46px;}
+ .layout-md-margin-bottom-47{margin-bottom:47px;}
+ .layout-md-margin-bottom-48{margin-bottom:48px;}
+ .layout-md-margin-bottom-49{margin-bottom:49px;}
+ .layout-md-margin-bottom-50{margin-bottom:50px;}
+ .layout-md-margin-bottom-51{margin-bottom:51px;}
+ .layout-md-margin-bottom-52{margin-bottom:52px;}
+ .layout-md-margin-bottom-53{margin-bottom:53px;}
+ .layout-md-margin-bottom-54{margin-bottom:54px;}
+ .layout-md-margin-bottom-55{margin-bottom:55px;}
+ .layout-md-margin-bottom-56{margin-bottom:56px;}
+ .layout-md-margin-bottom-57{margin-bottom:57px;}
+ .layout-md-margin-bottom-58{margin-bottom:58px;}
+ .layout-md-margin-bottom-59{margin-bottom:59px;}
+ .layout-md-margin-bottom-60{margin-bottom:60px;}
+
+ .layout-md-margin-left-1{margin-left:1px;}
+ .layout-md-margin-left-2{margin-left:2px;}
+ .layout-md-margin-left-3{margin-left:3px;}
+ .layout-md-margin-left-4{margin-left:4px;}
+ .layout-md-margin-left-5{margin-left:5px;}
+ .layout-md-margin-left-6{margin-left:6px;}
+ .layout-md-margin-left-7{margin-left:7px;}
+ .layout-md-margin-left-8{margin-left:8px;}
+ .layout-md-margin-left-9{margin-left:9px;}
+ .layout-md-margin-left-10{margin-left:10px;}
+ .layout-md-margin-left-11{margin-left:11px;}
+ .layout-md-margin-left-12{margin-left:12px;}
+ .layout-md-margin-left-13{margin-left:13px;}
+ .layout-md-margin-left-14{margin-left:14px;}
+ .layout-md-margin-left-15{margin-left:15px;}
+ .layout-md-margin-left-16{margin-left:16px;}
+ .layout-md-margin-left-17{margin-left:17px;}
+ .layout-md-margin-left-18{margin-left:18px;}
+ .layout-md-margin-left-19{margin-left:19px;}
+ .layout-md-margin-left-20{margin-left:20px;}
+ .layout-md-margin-left-21{margin-left:21px;}
+ .layout-md-margin-left-22{margin-left:22px;}
+ .layout-md-margin-left-23{margin-left:23px;}
+ .layout-md-margin-left-24{margin-left:24px;}
+ .layout-md-margin-left-25{margin-left:25px;}
+ .layout-md-margin-left-26{margin-left:26px;}
+ .layout-md-margin-left-27{margin-left:27px;}
+ .layout-md-margin-left-28{margin-left:28px;}
+ .layout-md-margin-left-29{margin-left:29px;}
+ .layout-md-margin-left-30{margin-left:30px;}
+ .layout-md-margin-left-31{margin-left:31px;}
+ .layout-md-margin-left-32{margin-left:32px;}
+ .layout-md-margin-left-33{margin-left:33px;}
+ .layout-md-margin-left-34{margin-left:34px;}
+ .layout-md-margin-left-35{margin-left:35px;}
+ .layout-md-margin-left-36{margin-left:36px;}
+ .layout-md-margin-left-37{margin-left:37px;}
+ .layout-md-margin-left-38{margin-left:38px;}
+ .layout-md-margin-left-39{margin-left:39px;}
+ .layout-md-margin-left-40{margin-left:40px;}
+ .layout-md-margin-left-41{margin-left:41px;}
+ .layout-md-margin-left-42{margin-left:42px;}
+ .layout-md-margin-left-43{margin-left:43px;}
+ .layout-md-margin-left-44{margin-left:44px;}
+ .layout-md-margin-left-45{margin-left:45px;}
+ .layout-md-margin-left-46{margin-left:46px;}
+ .layout-md-margin-left-47{margin-left:47px;}
+ .layout-md-margin-left-48{margin-left:48px;}
+ .layout-md-margin-left-49{margin-left:49px;}
+ .layout-md-margin-left-50{margin-left:50px;}
+ .layout-md-margin-left-51{margin-left:51px;}
+ .layout-md-margin-left-52{margin-left:52px;}
+ .layout-md-margin-left-53{margin-left:53px;}
+ .layout-md-margin-left-54{margin-left:54px;}
+ .layout-md-margin-left-55{margin-left:55px;}
+ .layout-md-margin-left-56{margin-left:56px;}
+ .layout-md-margin-left-57{margin-left:57px;}
+ .layout-md-margin-left-58{margin-left:58px;}
+ .layout-md-margin-left-59{margin-left:59px;}
+ .layout-md-margin-left-60{margin-left:60px;}
+}
+@media only screen and (min-width:1025px) {
+ .layout-lg-margin-top-1{margin-top:1px;}
+ .layout-lg-margin-top-2{margin-top:2px;}
+ .layout-lg-margin-top-3{margin-top:3px;}
+ .layout-lg-margin-top-4{margin-top:4px;}
+ .layout-lg-margin-top-5{margin-top:5px;}
+ .layout-lg-margin-top-6{margin-top:6px;}
+ .layout-lg-margin-top-7{margin-top:7px;}
+ .layout-lg-margin-top-8{margin-top:8px;}
+ .layout-lg-margin-top-9{margin-top:9px;}
+ .layout-lg-margin-top-10{margin-top:10px;}
+ .layout-lg-margin-top-11{margin-top:11px;}
+ .layout-lg-margin-top-12{margin-top:12px;}
+ .layout-lg-margin-top-13{margin-top:13px;}
+ .layout-lg-margin-top-14{margin-top:14px;}
+ .layout-lg-margin-top-15{margin-top:15px;}
+ .layout-lg-margin-top-16{margin-top:16px;}
+ .layout-lg-margin-top-17{margin-top:17px;}
+ .layout-lg-margin-top-18{margin-top:18px;}
+ .layout-lg-margin-top-19{margin-top:19px;}
+ .layout-lg-margin-top-20{margin-top:20px;}
+ .layout-lg-margin-top-21{margin-top:21px;}
+ .layout-lg-margin-top-22{margin-top:22px;}
+ .layout-lg-margin-top-23{margin-top:23px;}
+ .layout-lg-margin-top-24{margin-top:24px;}
+ .layout-lg-margin-top-25{margin-top:25px;}
+ .layout-lg-margin-top-26{margin-top:26px;}
+ .layout-lg-margin-top-27{margin-top:27px;}
+ .layout-lg-margin-top-28{margin-top:28px;}
+ .layout-lg-margin-top-29{margin-top:29px;}
+ .layout-lg-margin-top-30{margin-top:30px;}
+ .layout-lg-margin-top-31{margin-top:31px;}
+ .layout-lg-margin-top-32{margin-top:32px;}
+ .layout-lg-margin-top-33{margin-top:33px;}
+ .layout-lg-margin-top-34{margin-top:34px;}
+ .layout-lg-margin-top-35{margin-top:35px;}
+ .layout-lg-margin-top-36{margin-top:36px;}
+ .layout-lg-margin-top-37{margin-top:37px;}
+ .layout-lg-margin-top-38{margin-top:38px;}
+ .layout-lg-margin-top-39{margin-top:39px;}
+ .layout-lg-margin-top-40{margin-top:40px;}
+ .layout-lg-margin-top-41{margin-top:41px;}
+ .layout-lg-margin-top-42{margin-top:42px;}
+ .layout-lg-margin-top-43{margin-top:43px;}
+ .layout-lg-margin-top-44{margin-top:44px;}
+ .layout-lg-margin-top-45{margin-top:45px;}
+ .layout-lg-margin-top-46{margin-top:46px;}
+ .layout-lg-margin-top-47{margin-top:47px;}
+ .layout-lg-margin-top-48{margin-top:48px;}
+ .layout-lg-margin-top-49{margin-top:49px;}
+ .layout-lg-margin-top-50{margin-top:50px;}
+ .layout-lg-margin-top-51{margin-top:51px;}
+ .layout-lg-margin-top-52{margin-top:52px;}
+ .layout-lg-margin-top-53{margin-top:53px;}
+ .layout-lg-margin-top-54{margin-top:54px;}
+ .layout-lg-margin-top-55{margin-top:55px;}
+ .layout-lg-margin-top-56{margin-top:56px;}
+ .layout-lg-margin-top-57{margin-top:57px;}
+ .layout-lg-margin-top-58{margin-top:58px;}
+ .layout-lg-margin-top-59{margin-top:59px;}
+ .layout-lg-margin-top-60{margin-top:60px;}
+
+ .layout-lg-margin-right-1{margin-right:1px;}
+ .layout-lg-margin-right-2{margin-right:2px;}
+ .layout-lg-margin-right-3{margin-right:3px;}
+ .layout-lg-margin-right-4{margin-right:4px;}
+ .layout-lg-margin-right-5{margin-right:5px;}
+ .layout-lg-margin-right-6{margin-right:6px;}
+ .layout-lg-margin-right-7{margin-right:7px;}
+ .layout-lg-margin-right-8{margin-right:8px;}
+ .layout-lg-margin-right-9{margin-right:9px;}
+ .layout-lg-margin-right-10{margin-right:10px;}
+ .layout-lg-margin-right-11{margin-right:11px;}
+ .layout-lg-margin-right-12{margin-right:12px;}
+ .layout-lg-margin-right-13{margin-right:13px;}
+ .layout-lg-margin-right-14{margin-right:14px;}
+ .layout-lg-margin-right-15{margin-right:15px;}
+ .layout-lg-margin-right-16{margin-right:16px;}
+ .layout-lg-margin-right-17{margin-right:17px;}
+ .layout-lg-margin-right-18{margin-right:18px;}
+ .layout-lg-margin-right-19{margin-right:19px;}
+ .layout-lg-margin-right-20{margin-right:20px;}
+ .layout-lg-margin-right-21{margin-right:21px;}
+ .layout-lg-margin-right-22{margin-right:22px;}
+ .layout-lg-margin-right-23{margin-right:23px;}
+ .layout-lg-margin-right-24{margin-right:24px;}
+ .layout-lg-margin-right-25{margin-right:25px;}
+ .layout-lg-margin-right-26{margin-right:26px;}
+ .layout-lg-margin-right-27{margin-right:27px;}
+ .layout-lg-margin-right-28{margin-right:28px;}
+ .layout-lg-margin-right-29{margin-right:29px;}
+ .layout-lg-margin-right-30{margin-right:30px;}
+ .layout-lg-margin-right-31{margin-right:31px;}
+ .layout-lg-margin-right-32{margin-right:32px;}
+ .layout-lg-margin-right-33{margin-right:33px;}
+ .layout-lg-margin-right-34{margin-right:34px;}
+ .layout-lg-margin-right-35{margin-right:35px;}
+ .layout-lg-margin-right-36{margin-right:36px;}
+ .layout-lg-margin-right-37{margin-right:37px;}
+ .layout-lg-margin-right-38{margin-right:38px;}
+ .layout-lg-margin-right-39{margin-right:39px;}
+ .layout-lg-margin-right-40{margin-right:40px;}
+ .layout-lg-margin-right-41{margin-right:41px;}
+ .layout-lg-margin-right-42{margin-right:42px;}
+ .layout-lg-margin-right-43{margin-right:43px;}
+ .layout-lg-margin-right-44{margin-right:44px;}
+ .layout-lg-margin-right-45{margin-right:45px;}
+ .layout-lg-margin-right-46{margin-right:46px;}
+ .layout-lg-margin-right-47{margin-right:47px;}
+ .layout-lg-margin-right-48{margin-right:48px;}
+ .layout-lg-margin-right-49{margin-right:49px;}
+ .layout-lg-margin-right-50{margin-right:50px;}
+ .layout-lg-margin-right-51{margin-right:51px;}
+ .layout-lg-margin-right-52{margin-right:52px;}
+ .layout-lg-margin-right-53{margin-right:53px;}
+ .layout-lg-margin-right-54{margin-right:54px;}
+ .layout-lg-margin-right-55{margin-right:55px;}
+ .layout-lg-margin-right-56{margin-right:56px;}
+ .layout-lg-margin-right-57{margin-right:57px;}
+ .layout-lg-margin-right-58{margin-right:58px;}
+ .layout-lg-margin-right-59{margin-right:59px;}
+ .layout-lg-margin-right-60{margin-right:60px;}
+
+ .layout-lg-margin-bottom-1{margin-bottom:1px;}
+ .layout-lg-margin-bottom-2{margin-bottom:2px;}
+ .layout-lg-margin-bottom-3{margin-bottom:3px;}
+ .layout-lg-margin-bottom-4{margin-bottom:4px;}
+ .layout-lg-margin-bottom-5{margin-bottom:5px;}
+ .layout-lg-margin-bottom-6{margin-bottom:6px;}
+ .layout-lg-margin-bottom-7{margin-bottom:7px;}
+ .layout-lg-margin-bottom-8{margin-bottom:8px;}
+ .layout-lg-margin-bottom-9{margin-bottom:9px;}
+ .layout-lg-margin-bottom-10{margin-bottom:10px;}
+ .layout-lg-margin-bottom-11{margin-bottom:11px;}
+ .layout-lg-margin-bottom-12{margin-bottom:12px;}
+ .layout-lg-margin-bottom-13{margin-bottom:13px;}
+ .layout-lg-margin-bottom-14{margin-bottom:14px;}
+ .layout-lg-margin-bottom-15{margin-bottom:15px;}
+ .layout-lg-margin-bottom-16{margin-bottom:16px;}
+ .layout-lg-margin-bottom-17{margin-bottom:17px;}
+ .layout-lg-margin-bottom-18{margin-bottom:18px;}
+ .layout-lg-margin-bottom-19{margin-bottom:19px;}
+ .layout-lg-margin-bottom-20{margin-bottom:20px;}
+ .layout-lg-margin-bottom-21{margin-bottom:21px;}
+ .layout-lg-margin-bottom-22{margin-bottom:22px;}
+ .layout-lg-margin-bottom-23{margin-bottom:23px;}
+ .layout-lg-margin-bottom-24{margin-bottom:24px;}
+ .layout-lg-margin-bottom-25{margin-bottom:25px;}
+ .layout-lg-margin-bottom-26{margin-bottom:26px;}
+ .layout-lg-margin-bottom-27{margin-bottom:27px;}
+ .layout-lg-margin-bottom-28{margin-bottom:28px;}
+ .layout-lg-margin-bottom-29{margin-bottom:29px;}
+ .layout-lg-margin-bottom-30{margin-bottom:30px;}
+ .layout-lg-margin-bottom-31{margin-bottom:31px;}
+ .layout-lg-margin-bottom-32{margin-bottom:32px;}
+ .layout-lg-margin-bottom-33{margin-bottom:33px;}
+ .layout-lg-margin-bottom-34{margin-bottom:34px;}
+ .layout-lg-margin-bottom-35{margin-bottom:35px;}
+ .layout-lg-margin-bottom-36{margin-bottom:36px;}
+ .layout-lg-margin-bottom-37{margin-bottom:37px;}
+ .layout-lg-margin-bottom-38{margin-bottom:38px;}
+ .layout-lg-margin-bottom-39{margin-bottom:39px;}
+ .layout-lg-margin-bottom-40{margin-bottom:40px;}
+ .layout-lg-margin-bottom-41{margin-bottom:41px;}
+ .layout-lg-margin-bottom-42{margin-bottom:42px;}
+ .layout-lg-margin-bottom-43{margin-bottom:43px;}
+ .layout-lg-margin-bottom-44{margin-bottom:44px;}
+ .layout-lg-margin-bottom-45{margin-bottom:45px;}
+ .layout-lg-margin-bottom-46{margin-bottom:46px;}
+ .layout-lg-margin-bottom-47{margin-bottom:47px;}
+ .layout-lg-margin-bottom-48{margin-bottom:48px;}
+ .layout-lg-margin-bottom-49{margin-bottom:49px;}
+ .layout-lg-margin-bottom-50{margin-bottom:50px;}
+ .layout-lg-margin-bottom-51{margin-bottom:51px;}
+ .layout-lg-margin-bottom-52{margin-bottom:52px;}
+ .layout-lg-margin-bottom-53{margin-bottom:53px;}
+ .layout-lg-margin-bottom-54{margin-bottom:54px;}
+ .layout-lg-margin-bottom-55{margin-bottom:55px;}
+ .layout-lg-margin-bottom-56{margin-bottom:56px;}
+ .layout-lg-margin-bottom-57{margin-bottom:57px;}
+ .layout-lg-margin-bottom-58{margin-bottom:58px;}
+ .layout-lg-margin-bottom-59{margin-bottom:59px;}
+ .layout-lg-margin-bottom-60{margin-bottom:60px;}
+
+ .layout-lg-margin-left-1{margin-left:1px;}
+ .layout-lg-margin-left-2{margin-left:2px;}
+ .layout-lg-margin-left-3{margin-left:3px;}
+ .layout-lg-margin-left-4{margin-left:4px;}
+ .layout-lg-margin-left-5{margin-left:5px;}
+ .layout-lg-margin-left-6{margin-left:6px;}
+ .layout-lg-margin-left-7{margin-left:7px;}
+ .layout-lg-margin-left-8{margin-left:8px;}
+ .layout-lg-margin-left-9{margin-left:9px;}
+ .layout-lg-margin-left-10{margin-left:10px;}
+ .layout-lg-margin-left-11{margin-left:11px;}
+ .layout-lg-margin-left-12{margin-left:12px;}
+ .layout-lg-margin-left-13{margin-left:13px;}
+ .layout-lg-margin-left-14{margin-left:14px;}
+ .layout-lg-margin-left-15{margin-left:15px;}
+ .layout-lg-margin-left-16{margin-left:16px;}
+ .layout-lg-margin-left-17{margin-left:17px;}
+ .layout-lg-margin-left-18{margin-left:18px;}
+ .layout-lg-margin-left-19{margin-left:19px;}
+ .layout-lg-margin-left-20{margin-left:20px;}
+ .layout-lg-margin-left-21{margin-left:21px;}
+ .layout-lg-margin-left-22{margin-left:22px;}
+ .layout-lg-margin-left-23{margin-left:23px;}
+ .layout-lg-margin-left-24{margin-left:24px;}
+ .layout-lg-margin-left-25{margin-left:25px;}
+ .layout-lg-margin-left-26{margin-left:26px;}
+ .layout-lg-margin-left-27{margin-left:27px;}
+ .layout-lg-margin-left-28{margin-left:28px;}
+ .layout-lg-margin-left-29{margin-left:29px;}
+ .layout-lg-margin-left-30{margin-left:30px;}
+ .layout-lg-margin-left-31{margin-left:31px;}
+ .layout-lg-margin-left-32{margin-left:32px;}
+ .layout-lg-margin-left-33{margin-left:33px;}
+ .layout-lg-margin-left-34{margin-left:34px;}
+ .layout-lg-margin-left-35{margin-left:35px;}
+ .layout-lg-margin-left-36{margin-left:36px;}
+ .layout-lg-margin-left-37{margin-left:37px;}
+ .layout-lg-margin-left-38{margin-left:38px;}
+ .layout-lg-margin-left-39{margin-left:39px;}
+ .layout-lg-margin-left-40{margin-left:40px;}
+ .layout-lg-margin-left-41{margin-left:41px;}
+ .layout-lg-margin-left-42{margin-left:42px;}
+ .layout-lg-margin-left-43{margin-left:43px;}
+ .layout-lg-margin-left-44{margin-left:44px;}
+ .layout-lg-margin-left-45{margin-left:45px;}
+ .layout-lg-margin-left-46{margin-left:46px;}
+ .layout-lg-margin-left-47{margin-left:47px;}
+ .layout-lg-margin-left-48{margin-left:48px;}
+ .layout-lg-margin-left-49{margin-left:49px;}
+ .layout-lg-margin-left-50{margin-left:50px;}
+ .layout-lg-margin-left-51{margin-left:51px;}
+ .layout-lg-margin-left-52{margin-left:52px;}
+ .layout-lg-margin-left-53{margin-left:53px;}
+ .layout-lg-margin-left-54{margin-left:54px;}
+ .layout-lg-margin-left-55{margin-left:55px;}
+ .layout-lg-margin-left-56{margin-left:56px;}
+ .layout-lg-margin-left-57{margin-left:57px;}
+ .layout-lg-margin-left-58{margin-left:58px;}
+ .layout-lg-margin-left-59{margin-left:59px;}
+ .layout-lg-margin-left-60{margin-left:60px;}
+}
+@media only screen and (max-width: 640px) {
+ .layout-sm-margin-top-1{margin-top:1px;}
+ .layout-sm-margin-top-2{margin-top:2px;}
+ .layout-sm-margin-top-3{margin-top:3px;}
+ .layout-sm-margin-top-4{margin-top:4px;}
+ .layout-sm-margin-top-5{margin-top:5px;}
+ .layout-sm-margin-top-6{margin-top:6px;}
+ .layout-sm-margin-top-7{margin-top:7px;}
+ .layout-sm-margin-top-8{margin-top:8px;}
+ .layout-sm-margin-top-9{margin-top:9px;}
+ .layout-sm-margin-top-10{margin-top:10px;}
+ .layout-sm-margin-top-11{margin-top:11px;}
+ .layout-sm-margin-top-12{margin-top:12px;}
+ .layout-sm-margin-top-13{margin-top:13px;}
+ .layout-sm-margin-top-14{margin-top:14px;}
+ .layout-sm-margin-top-15{margin-top:15px;}
+ .layout-sm-margin-top-16{margin-top:16px;}
+ .layout-sm-margin-top-17{margin-top:17px;}
+ .layout-sm-margin-top-18{margin-top:18px;}
+ .layout-sm-margin-top-19{margin-top:19px;}
+ .layout-sm-margin-top-20{margin-top:20px;}
+ .layout-sm-margin-top-21{margin-top:21px;}
+ .layout-sm-margin-top-22{margin-top:22px;}
+ .layout-sm-margin-top-23{margin-top:23px;}
+ .layout-sm-margin-top-24{margin-top:24px;}
+ .layout-sm-margin-top-25{margin-top:25px;}
+ .layout-sm-margin-top-26{margin-top:26px;}
+ .layout-sm-margin-top-27{margin-top:27px;}
+ .layout-sm-margin-top-28{margin-top:28px;}
+ .layout-sm-margin-top-29{margin-top:29px;}
+ .layout-sm-margin-top-30{margin-top:30px;}
+ .layout-sm-margin-top-31{margin-top:31px;}
+ .layout-sm-margin-top-32{margin-top:32px;}
+ .layout-sm-margin-top-33{margin-top:33px;}
+ .layout-sm-margin-top-34{margin-top:34px;}
+ .layout-sm-margin-top-35{margin-top:35px;}
+ .layout-sm-margin-top-36{margin-top:36px;}
+ .layout-sm-margin-top-37{margin-top:37px;}
+ .layout-sm-margin-top-38{margin-top:38px;}
+ .layout-sm-margin-top-39{margin-top:39px;}
+ .layout-sm-margin-top-40{margin-top:40px;}
+ .layout-sm-margin-top-41{margin-top:41px;}
+ .layout-sm-margin-top-42{margin-top:42px;}
+ .layout-sm-margin-top-43{margin-top:43px;}
+ .layout-sm-margin-top-44{margin-top:44px;}
+ .layout-sm-margin-top-45{margin-top:45px;}
+ .layout-sm-margin-top-46{margin-top:46px;}
+ .layout-sm-margin-top-47{margin-top:47px;}
+ .layout-sm-margin-top-48{margin-top:48px;}
+ .layout-sm-margin-top-49{margin-top:49px;}
+ .layout-sm-margin-top-50{margin-top:50px;}
+ .layout-sm-margin-top-51{margin-top:51px;}
+ .layout-sm-margin-top-52{margin-top:52px;}
+ .layout-sm-margin-top-53{margin-top:53px;}
+ .layout-sm-margin-top-54{margin-top:54px;}
+ .layout-sm-margin-top-55{margin-top:55px;}
+ .layout-sm-margin-top-56{margin-top:56px;}
+ .layout-sm-margin-top-57{margin-top:57px;}
+ .layout-sm-margin-top-58{margin-top:58px;}
+ .layout-sm-margin-top-59{margin-top:59px;}
+ .layout-sm-margin-top-60{margin-top:60px;}
+
+ .layout-sm-margin-right-1{margin-right:1px;}
+ .layout-sm-margin-right-2{margin-right:2px;}
+ .layout-sm-margin-right-3{margin-right:3px;}
+ .layout-sm-margin-right-4{margin-right:4px;}
+ .layout-sm-margin-right-5{margin-right:5px;}
+ .layout-sm-margin-right-6{margin-right:6px;}
+ .layout-sm-margin-right-7{margin-right:7px;}
+ .layout-sm-margin-right-8{margin-right:8px;}
+ .layout-sm-margin-right-9{margin-right:9px;}
+ .layout-sm-margin-right-10{margin-right:10px;}
+ .layout-sm-margin-right-11{margin-right:11px;}
+ .layout-sm-margin-right-12{margin-right:12px;}
+ .layout-sm-margin-right-13{margin-right:13px;}
+ .layout-sm-margin-right-14{margin-right:14px;}
+ .layout-sm-margin-right-15{margin-right:15px;}
+ .layout-sm-margin-right-16{margin-right:16px;}
+ .layout-sm-margin-right-17{margin-right:17px;}
+ .layout-sm-margin-right-18{margin-right:18px;}
+ .layout-sm-margin-right-19{margin-right:19px;}
+ .layout-sm-margin-right-20{margin-right:20px;}
+ .layout-sm-margin-right-21{margin-right:21px;}
+ .layout-sm-margin-right-22{margin-right:22px;}
+ .layout-sm-margin-right-23{margin-right:23px;}
+ .layout-sm-margin-right-24{margin-right:24px;}
+ .layout-sm-margin-right-25{margin-right:25px;}
+ .layout-sm-margin-right-26{margin-right:26px;}
+ .layout-sm-margin-right-27{margin-right:27px;}
+ .layout-sm-margin-right-28{margin-right:28px;}
+ .layout-sm-margin-right-29{margin-right:29px;}
+ .layout-sm-margin-right-30{margin-right:30px;}
+ .layout-sm-margin-right-31{margin-right:31px;}
+ .layout-sm-margin-right-32{margin-right:32px;}
+ .layout-sm-margin-right-33{margin-right:33px;}
+ .layout-sm-margin-right-34{margin-right:34px;}
+ .layout-sm-margin-right-35{margin-right:35px;}
+ .layout-sm-margin-right-36{margin-right:36px;}
+ .layout-sm-margin-right-37{margin-right:37px;}
+ .layout-sm-margin-right-38{margin-right:38px;}
+ .layout-sm-margin-right-39{margin-right:39px;}
+ .layout-sm-margin-right-40{margin-right:40px;}
+ .layout-sm-margin-right-41{margin-right:41px;}
+ .layout-sm-margin-right-42{margin-right:42px;}
+ .layout-sm-margin-right-43{margin-right:43px;}
+ .layout-sm-margin-right-44{margin-right:44px;}
+ .layout-sm-margin-right-45{margin-right:45px;}
+ .layout-sm-margin-right-46{margin-right:46px;}
+ .layout-sm-margin-right-47{margin-right:47px;}
+ .layout-sm-margin-right-48{margin-right:48px;}
+ .layout-sm-margin-right-49{margin-right:49px;}
+ .layout-sm-margin-right-50{margin-right:50px;}
+ .layout-sm-margin-right-51{margin-right:51px;}
+ .layout-sm-margin-right-52{margin-right:52px;}
+ .layout-sm-margin-right-53{margin-right:53px;}
+ .layout-sm-margin-right-54{margin-right:54px;}
+ .layout-sm-margin-right-55{margin-right:55px;}
+ .layout-sm-margin-right-56{margin-right:56px;}
+ .layout-sm-margin-right-57{margin-right:57px;}
+ .layout-sm-margin-right-58{margin-right:58px;}
+ .layout-sm-margin-right-59{margin-right:59px;}
+ .layout-sm-margin-right-60{margin-right:60px;}
+
+ .layout-sm-margin-bottom-1{margin-bottom:1px;}
+ .layout-sm-margin-bottom-2{margin-bottom:2px;}
+ .layout-sm-margin-bottom-3{margin-bottom:3px;}
+ .layout-sm-margin-bottom-4{margin-bottom:4px;}
+ .layout-sm-margin-bottom-5{margin-bottom:5px;}
+ .layout-sm-margin-bottom-6{margin-bottom:6px;}
+ .layout-sm-margin-bottom-7{margin-bottom:7px;}
+ .layout-sm-margin-bottom-8{margin-bottom:8px;}
+ .layout-sm-margin-bottom-9{margin-bottom:9px;}
+ .layout-sm-margin-bottom-10{margin-bottom:10px;}
+ .layout-sm-margin-bottom-11{margin-bottom:11px;}
+ .layout-sm-margin-bottom-12{margin-bottom:12px;}
+ .layout-sm-margin-bottom-13{margin-bottom:13px;}
+ .layout-sm-margin-bottom-14{margin-bottom:14px;}
+ .layout-sm-margin-bottom-15{margin-bottom:15px;}
+ .layout-sm-margin-bottom-16{margin-bottom:16px;}
+ .layout-sm-margin-bottom-17{margin-bottom:17px;}
+ .layout-sm-margin-bottom-18{margin-bottom:18px;}
+ .layout-sm-margin-bottom-19{margin-bottom:19px;}
+ .layout-sm-margin-bottom-20{margin-bottom:20px;}
+ .layout-sm-margin-bottom-21{margin-bottom:21px;}
+ .layout-sm-margin-bottom-22{margin-bottom:22px;}
+ .layout-sm-margin-bottom-23{margin-bottom:23px;}
+ .layout-sm-margin-bottom-24{margin-bottom:24px;}
+ .layout-sm-margin-bottom-25{margin-bottom:25px;}
+ .layout-sm-margin-bottom-26{margin-bottom:26px;}
+ .layout-sm-margin-bottom-27{margin-bottom:27px;}
+ .layout-sm-margin-bottom-28{margin-bottom:28px;}
+ .layout-sm-margin-bottom-29{margin-bottom:29px;}
+ .layout-sm-margin-bottom-30{margin-bottom:30px;}
+ .layout-sm-margin-bottom-31{margin-bottom:31px;}
+ .layout-sm-margin-bottom-32{margin-bottom:32px;}
+ .layout-sm-margin-bottom-33{margin-bottom:33px;}
+ .layout-sm-margin-bottom-34{margin-bottom:34px;}
+ .layout-sm-margin-bottom-35{margin-bottom:35px;}
+ .layout-sm-margin-bottom-36{margin-bottom:36px;}
+ .layout-sm-margin-bottom-37{margin-bottom:37px;}
+ .layout-sm-margin-bottom-38{margin-bottom:38px;}
+ .layout-sm-margin-bottom-39{margin-bottom:39px;}
+ .layout-sm-margin-bottom-40{margin-bottom:40px;}
+ .layout-sm-margin-bottom-41{margin-bottom:41px;}
+ .layout-sm-margin-bottom-42{margin-bottom:42px;}
+ .layout-sm-margin-bottom-43{margin-bottom:43px;}
+ .layout-sm-margin-bottom-44{margin-bottom:44px;}
+ .layout-sm-margin-bottom-45{margin-bottom:45px;}
+ .layout-sm-margin-bottom-46{margin-bottom:46px;}
+ .layout-sm-margin-bottom-47{margin-bottom:47px;}
+ .layout-sm-margin-bottom-48{margin-bottom:48px;}
+ .layout-sm-margin-bottom-49{margin-bottom:49px;}
+ .layout-sm-margin-bottom-50{margin-bottom:50px;}
+ .layout-sm-margin-bottom-51{margin-bottom:51px;}
+ .layout-sm-margin-bottom-52{margin-bottom:52px;}
+ .layout-sm-margin-bottom-53{margin-bottom:53px;}
+ .layout-sm-margin-bottom-54{margin-bottom:54px;}
+ .layout-sm-margin-bottom-55{margin-bottom:55px;}
+ .layout-sm-margin-bottom-56{margin-bottom:56px;}
+ .layout-sm-margin-bottom-57{margin-bottom:57px;}
+ .layout-sm-margin-bottom-58{margin-bottom:58px;}
+ .layout-sm-margin-bottom-59{margin-bottom:59px;}
+ .layout-sm-margin-bottom-60{margin-bottom:60px;}
+
+ .layout-sm-margin-left-1{margin-left:1px;}
+ .layout-sm-margin-left-2{margin-left:2px;}
+ .layout-sm-margin-left-3{margin-left:3px;}
+ .layout-sm-margin-left-4{margin-left:4px;}
+ .layout-sm-margin-left-5{margin-left:5px;}
+ .layout-sm-margin-left-6{margin-left:6px;}
+ .layout-sm-margin-left-7{margin-left:7px;}
+ .layout-sm-margin-left-8{margin-left:8px;}
+ .layout-sm-margin-left-9{margin-left:9px;}
+ .layout-sm-margin-left-10{margin-left:10px;}
+ .layout-sm-margin-left-11{margin-left:11px;}
+ .layout-sm-margin-left-12{margin-left:12px;}
+ .layout-sm-margin-left-13{margin-left:13px;}
+ .layout-sm-margin-left-14{margin-left:14px;}
+ .layout-sm-margin-left-15{margin-left:15px;}
+ .layout-sm-margin-left-16{margin-left:16px;}
+ .layout-sm-margin-left-17{margin-left:17px;}
+ .layout-sm-margin-left-18{margin-left:18px;}
+ .layout-sm-margin-left-19{margin-left:19px;}
+ .layout-sm-margin-left-20{margin-left:20px;}
+ .layout-sm-margin-left-21{margin-left:21px;}
+ .layout-sm-margin-left-22{margin-left:22px;}
+ .layout-sm-margin-left-23{margin-left:23px;}
+ .layout-sm-margin-left-24{margin-left:24px;}
+ .layout-sm-margin-left-25{margin-left:25px;}
+ .layout-sm-margin-left-26{margin-left:26px;}
+ .layout-sm-margin-left-27{margin-left:27px;}
+ .layout-sm-margin-left-28{margin-left:28px;}
+ .layout-sm-margin-left-29{margin-left:29px;}
+ .layout-sm-margin-left-30{margin-left:30px;}
+ .layout-sm-margin-left-31{margin-left:31px;}
+ .layout-sm-margin-left-32{margin-left:32px;}
+ .layout-sm-margin-left-33{margin-left:33px;}
+ .layout-sm-margin-left-34{margin-left:34px;}
+ .layout-sm-margin-left-35{margin-left:35px;}
+ .layout-sm-margin-left-36{margin-left:36px;}
+ .layout-sm-margin-left-37{margin-left:37px;}
+ .layout-sm-margin-left-38{margin-left:38px;}
+ .layout-sm-margin-left-39{margin-left:39px;}
+ .layout-sm-margin-left-40{margin-left:40px;}
+ .layout-sm-margin-left-41{margin-left:41px;}
+ .layout-sm-margin-left-42{margin-left:42px;}
+ .layout-sm-margin-left-43{margin-left:43px;}
+ .layout-sm-margin-left-44{margin-left:44px;}
+ .layout-sm-margin-left-45{margin-left:45px;}
+ .layout-sm-margin-left-46{margin-left:46px;}
+ .layout-sm-margin-left-47{margin-left:47px;}
+ .layout-sm-margin-left-48{margin-left:48px;}
+ .layout-sm-margin-left-49{margin-left:49px;}
+ .layout-sm-margin-left-50{margin-left:50px;}
+ .layout-sm-margin-left-51{margin-left:51px;}
+ .layout-sm-margin-left-52{margin-left:52px;}
+ .layout-sm-margin-left-53{margin-left:53px;}
+ .layout-sm-margin-left-54{margin-left:54px;}
+ .layout-sm-margin-left-55{margin-left:55px;}
+ .layout-sm-margin-left-56{margin-left:56px;}
+ .layout-sm-margin-left-57{margin-left:57px;}
+ .layout-sm-margin-left-58{margin-left:58px;}
+ .layout-sm-margin-left-59{margin-left:59px;}
+ .layout-sm-margin-left-60{margin-left:60px;}
+}
+
+/**
+ * 布局内边距
+ */
+@media only screen and (min-width:641px) {
+ .layout-md-padding-top-1{padding-top:1px;}
+ .layout-md-padding-top-2{padding-top:2px;}
+ .layout-md-padding-top-3{padding-top:3px;}
+ .layout-md-padding-top-4{padding-top:4px;}
+ .layout-md-padding-top-5{padding-top:5px;}
+ .layout-md-padding-top-6{padding-top:6px;}
+ .layout-md-padding-top-7{padding-top:7px;}
+ .layout-md-padding-top-8{padding-top:8px;}
+ .layout-md-padding-top-9{padding-top:9px;}
+ .layout-md-padding-top-10{padding-top:10px;}
+ .layout-md-padding-top-11{padding-top:11px;}
+ .layout-md-padding-top-12{padding-top:12px;}
+ .layout-md-padding-top-13{padding-top:13px;}
+ .layout-md-padding-top-14{padding-top:14px;}
+ .layout-md-padding-top-15{padding-top:15px;}
+ .layout-md-padding-top-16{padding-top:16px;}
+ .layout-md-padding-top-17{padding-top:17px;}
+ .layout-md-padding-top-18{padding-top:18px;}
+ .layout-md-padding-top-19{padding-top:19px;}
+ .layout-md-padding-top-20{padding-top:20px;}
+ .layout-md-padding-top-21{padding-top:21px;}
+ .layout-md-padding-top-22{padding-top:22px;}
+ .layout-md-padding-top-23{padding-top:23px;}
+ .layout-md-padding-top-24{padding-top:24px;}
+ .layout-md-padding-top-25{padding-top:25px;}
+ .layout-md-padding-top-26{padding-top:26px;}
+ .layout-md-padding-top-27{padding-top:27px;}
+ .layout-md-padding-top-28{padding-top:28px;}
+ .layout-md-padding-top-29{padding-top:29px;}
+ .layout-md-padding-top-30{padding-top:30px;}
+ .layout-md-padding-top-31{padding-top:31px;}
+ .layout-md-padding-top-32{padding-top:32px;}
+ .layout-md-padding-top-33{padding-top:33px;}
+ .layout-md-padding-top-34{padding-top:34px;}
+ .layout-md-padding-top-35{padding-top:35px;}
+ .layout-md-padding-top-36{padding-top:36px;}
+ .layout-md-padding-top-37{padding-top:37px;}
+ .layout-md-padding-top-38{padding-top:38px;}
+ .layout-md-padding-top-39{padding-top:39px;}
+ .layout-md-padding-top-40{padding-top:40px;}
+ .layout-md-padding-top-41{padding-top:41px;}
+ .layout-md-padding-top-42{padding-top:42px;}
+ .layout-md-padding-top-43{padding-top:43px;}
+ .layout-md-padding-top-44{padding-top:44px;}
+ .layout-md-padding-top-45{padding-top:45px;}
+ .layout-md-padding-top-46{padding-top:46px;}
+ .layout-md-padding-top-47{padding-top:47px;}
+ .layout-md-padding-top-48{padding-top:48px;}
+ .layout-md-padding-top-49{padding-top:49px;}
+ .layout-md-padding-top-50{padding-top:50px;}
+ .layout-md-padding-top-51{padding-top:51px;}
+ .layout-md-padding-top-52{padding-top:52px;}
+ .layout-md-padding-top-53{padding-top:53px;}
+ .layout-md-padding-top-54{padding-top:54px;}
+ .layout-md-padding-top-55{padding-top:55px;}
+ .layout-md-padding-top-56{padding-top:56px;}
+ .layout-md-padding-top-57{padding-top:57px;}
+ .layout-md-padding-top-58{padding-top:58px;}
+ .layout-md-padding-top-59{padding-top:59px;}
+ .layout-md-padding-top-60{padding-top:60px;}
+
+ .layout-md-padding-right-1{padding-right:1px;}
+ .layout-md-padding-right-2{padding-right:2px;}
+ .layout-md-padding-right-3{padding-right:3px;}
+ .layout-md-padding-right-4{padding-right:4px;}
+ .layout-md-padding-right-5{padding-right:5px;}
+ .layout-md-padding-right-6{padding-right:6px;}
+ .layout-md-padding-right-7{padding-right:7px;}
+ .layout-md-padding-right-8{padding-right:8px;}
+ .layout-md-padding-right-9{padding-right:9px;}
+ .layout-md-padding-right-10{padding-right:10px;}
+ .layout-md-padding-right-11{padding-right:11px;}
+ .layout-md-padding-right-12{padding-right:12px;}
+ .layout-md-padding-right-13{padding-right:13px;}
+ .layout-md-padding-right-14{padding-right:14px;}
+ .layout-md-padding-right-15{padding-right:15px;}
+ .layout-md-padding-right-16{padding-right:16px;}
+ .layout-md-padding-right-17{padding-right:17px;}
+ .layout-md-padding-right-18{padding-right:18px;}
+ .layout-md-padding-right-19{padding-right:19px;}
+ .layout-md-padding-right-20{padding-right:20px;}
+ .layout-md-padding-right-21{padding-right:21px;}
+ .layout-md-padding-right-22{padding-right:22px;}
+ .layout-md-padding-right-23{padding-right:23px;}
+ .layout-md-padding-right-24{padding-right:24px;}
+ .layout-md-padding-right-25{padding-right:25px;}
+ .layout-md-padding-right-26{padding-right:26px;}
+ .layout-md-padding-right-27{padding-right:27px;}
+ .layout-md-padding-right-28{padding-right:28px;}
+ .layout-md-padding-right-29{padding-right:29px;}
+ .layout-md-padding-right-30{padding-right:30px;}
+ .layout-md-padding-right-31{padding-right:31px;}
+ .layout-md-padding-right-32{padding-right:32px;}
+ .layout-md-padding-right-33{padding-right:33px;}
+ .layout-md-padding-right-34{padding-right:34px;}
+ .layout-md-padding-right-35{padding-right:35px;}
+ .layout-md-padding-right-36{padding-right:36px;}
+ .layout-md-padding-right-37{padding-right:37px;}
+ .layout-md-padding-right-38{padding-right:38px;}
+ .layout-md-padding-right-39{padding-right:39px;}
+ .layout-md-padding-right-40{padding-right:40px;}
+ .layout-md-padding-right-41{padding-right:41px;}
+ .layout-md-padding-right-42{padding-right:42px;}
+ .layout-md-padding-right-43{padding-right:43px;}
+ .layout-md-padding-right-44{padding-right:44px;}
+ .layout-md-padding-right-45{padding-right:45px;}
+ .layout-md-padding-right-46{padding-right:46px;}
+ .layout-md-padding-right-47{padding-right:47px;}
+ .layout-md-padding-right-48{padding-right:48px;}
+ .layout-md-padding-right-49{padding-right:49px;}
+ .layout-md-padding-right-50{padding-right:50px;}
+ .layout-md-padding-right-51{padding-right:51px;}
+ .layout-md-padding-right-52{padding-right:52px;}
+ .layout-md-padding-right-53{padding-right:53px;}
+ .layout-md-padding-right-54{padding-right:54px;}
+ .layout-md-padding-right-55{padding-right:55px;}
+ .layout-md-padding-right-56{padding-right:56px;}
+ .layout-md-padding-right-57{padding-right:57px;}
+ .layout-md-padding-right-58{padding-right:58px;}
+ .layout-md-padding-right-59{padding-right:59px;}
+ .layout-md-padding-right-60{padding-right:60px;}
+
+ .layout-md-padding-bottom-1{padding-bottom:1px;}
+ .layout-md-padding-bottom-2{padding-bottom:2px;}
+ .layout-md-padding-bottom-3{padding-bottom:3px;}
+ .layout-md-padding-bottom-4{padding-bottom:4px;}
+ .layout-md-padding-bottom-5{padding-bottom:5px;}
+ .layout-md-padding-bottom-6{padding-bottom:6px;}
+ .layout-md-padding-bottom-7{padding-bottom:7px;}
+ .layout-md-padding-bottom-8{padding-bottom:8px;}
+ .layout-md-padding-bottom-9{padding-bottom:9px;}
+ .layout-md-padding-bottom-10{padding-bottom:10px;}
+ .layout-md-padding-bottom-11{padding-bottom:11px;}
+ .layout-md-padding-bottom-12{padding-bottom:12px;}
+ .layout-md-padding-bottom-13{padding-bottom:13px;}
+ .layout-md-padding-bottom-14{padding-bottom:14px;}
+ .layout-md-padding-bottom-15{padding-bottom:15px;}
+ .layout-md-padding-bottom-16{padding-bottom:16px;}
+ .layout-md-padding-bottom-17{padding-bottom:17px;}
+ .layout-md-padding-bottom-18{padding-bottom:18px;}
+ .layout-md-padding-bottom-19{padding-bottom:19px;}
+ .layout-md-padding-bottom-20{padding-bottom:20px;}
+ .layout-md-padding-bottom-21{padding-bottom:21px;}
+ .layout-md-padding-bottom-22{padding-bottom:22px;}
+ .layout-md-padding-bottom-23{padding-bottom:23px;}
+ .layout-md-padding-bottom-24{padding-bottom:24px;}
+ .layout-md-padding-bottom-25{padding-bottom:25px;}
+ .layout-md-padding-bottom-26{padding-bottom:26px;}
+ .layout-md-padding-bottom-27{padding-bottom:27px;}
+ .layout-md-padding-bottom-28{padding-bottom:28px;}
+ .layout-md-padding-bottom-29{padding-bottom:29px;}
+ .layout-md-padding-bottom-30{padding-bottom:30px;}
+ .layout-md-padding-bottom-31{padding-bottom:31px;}
+ .layout-md-padding-bottom-32{padding-bottom:32px;}
+ .layout-md-padding-bottom-33{padding-bottom:33px;}
+ .layout-md-padding-bottom-34{padding-bottom:34px;}
+ .layout-md-padding-bottom-35{padding-bottom:35px;}
+ .layout-md-padding-bottom-36{padding-bottom:36px;}
+ .layout-md-padding-bottom-37{padding-bottom:37px;}
+ .layout-md-padding-bottom-38{padding-bottom:38px;}
+ .layout-md-padding-bottom-39{padding-bottom:39px;}
+ .layout-md-padding-bottom-40{padding-bottom:40px;}
+ .layout-md-padding-bottom-41{padding-bottom:41px;}
+ .layout-md-padding-bottom-42{padding-bottom:42px;}
+ .layout-md-padding-bottom-43{padding-bottom:43px;}
+ .layout-md-padding-bottom-44{padding-bottom:44px;}
+ .layout-md-padding-bottom-45{padding-bottom:45px;}
+ .layout-md-padding-bottom-46{padding-bottom:46px;}
+ .layout-md-padding-bottom-47{padding-bottom:47px;}
+ .layout-md-padding-bottom-48{padding-bottom:48px;}
+ .layout-md-padding-bottom-49{padding-bottom:49px;}
+ .layout-md-padding-bottom-50{padding-bottom:50px;}
+ .layout-md-padding-bottom-51{padding-bottom:51px;}
+ .layout-md-padding-bottom-52{padding-bottom:52px;}
+ .layout-md-padding-bottom-53{padding-bottom:53px;}
+ .layout-md-padding-bottom-54{padding-bottom:54px;}
+ .layout-md-padding-bottom-55{padding-bottom:55px;}
+ .layout-md-padding-bottom-56{padding-bottom:56px;}
+ .layout-md-padding-bottom-57{padding-bottom:57px;}
+ .layout-md-padding-bottom-58{padding-bottom:58px;}
+ .layout-md-padding-bottom-59{padding-bottom:59px;}
+ .layout-md-padding-bottom-60{padding-bottom:60px;}
+
+ .layout-md-padding-left-1{padding-left:1px;}
+ .layout-md-padding-left-2{padding-left:2px;}
+ .layout-md-padding-left-3{padding-left:3px;}
+ .layout-md-padding-left-4{padding-left:4px;}
+ .layout-md-padding-left-5{padding-left:5px;}
+ .layout-md-padding-left-6{padding-left:6px;}
+ .layout-md-padding-left-7{padding-left:7px;}
+ .layout-md-padding-left-8{padding-left:8px;}
+ .layout-md-padding-left-9{padding-left:9px;}
+ .layout-md-padding-left-10{padding-left:10px;}
+ .layout-md-padding-left-11{padding-left:11px;}
+ .layout-md-padding-left-12{padding-left:12px;}
+ .layout-md-padding-left-13{padding-left:13px;}
+ .layout-md-padding-left-14{padding-left:14px;}
+ .layout-md-padding-left-15{padding-left:15px;}
+ .layout-md-padding-left-16{padding-left:16px;}
+ .layout-md-padding-left-17{padding-left:17px;}
+ .layout-md-padding-left-18{padding-left:18px;}
+ .layout-md-padding-left-19{padding-left:19px;}
+ .layout-md-padding-left-20{padding-left:20px;}
+ .layout-md-padding-left-21{padding-left:21px;}
+ .layout-md-padding-left-22{padding-left:22px;}
+ .layout-md-padding-left-23{padding-left:23px;}
+ .layout-md-padding-left-24{padding-left:24px;}
+ .layout-md-padding-left-25{padding-left:25px;}
+ .layout-md-padding-left-26{padding-left:26px;}
+ .layout-md-padding-left-27{padding-left:27px;}
+ .layout-md-padding-left-28{padding-left:28px;}
+ .layout-md-padding-left-29{padding-left:29px;}
+ .layout-md-padding-left-30{padding-left:30px;}
+ .layout-md-padding-left-31{padding-left:31px;}
+ .layout-md-padding-left-32{padding-left:32px;}
+ .layout-md-padding-left-33{padding-left:33px;}
+ .layout-md-padding-left-34{padding-left:34px;}
+ .layout-md-padding-left-35{padding-left:35px;}
+ .layout-md-padding-left-36{padding-left:36px;}
+ .layout-md-padding-left-37{padding-left:37px;}
+ .layout-md-padding-left-38{padding-left:38px;}
+ .layout-md-padding-left-39{padding-left:39px;}
+ .layout-md-padding-left-40{padding-left:40px;}
+ .layout-md-padding-left-41{padding-left:41px;}
+ .layout-md-padding-left-42{padding-left:42px;}
+ .layout-md-padding-left-43{padding-left:43px;}
+ .layout-md-padding-left-44{padding-left:44px;}
+ .layout-md-padding-left-45{padding-left:45px;}
+ .layout-md-padding-left-46{padding-left:46px;}
+ .layout-md-padding-left-47{padding-left:47px;}
+ .layout-md-padding-left-48{padding-left:48px;}
+ .layout-md-padding-left-49{padding-left:49px;}
+ .layout-md-padding-left-50{padding-left:50px;}
+ .layout-md-padding-left-51{padding-left:51px;}
+ .layout-md-padding-left-52{padding-left:52px;}
+ .layout-md-padding-left-53{padding-left:53px;}
+ .layout-md-padding-left-54{padding-left:54px;}
+ .layout-md-padding-left-55{padding-left:55px;}
+ .layout-md-padding-left-56{padding-left:56px;}
+ .layout-md-padding-left-57{padding-left:57px;}
+ .layout-md-padding-left-58{padding-left:58px;}
+ .layout-md-padding-left-59{padding-left:59px;}
+ .layout-md-padding-left-60{padding-left:60px;}
+}
+@media only screen and (min-width:1025px) {
+ .layout-lg-padding-top-1{padding-top:1px;}
+ .layout-lg-padding-top-2{padding-top:2px;}
+ .layout-lg-padding-top-3{padding-top:3px;}
+ .layout-lg-padding-top-4{padding-top:4px;}
+ .layout-lg-padding-top-5{padding-top:5px;}
+ .layout-lg-padding-top-6{padding-top:6px;}
+ .layout-lg-padding-top-7{padding-top:7px;}
+ .layout-lg-padding-top-8{padding-top:8px;}
+ .layout-lg-padding-top-9{padding-top:9px;}
+ .layout-lg-padding-top-10{padding-top:10px;}
+ .layout-lg-padding-top-11{padding-top:11px;}
+ .layout-lg-padding-top-12{padding-top:12px;}
+ .layout-lg-padding-top-13{padding-top:13px;}
+ .layout-lg-padding-top-14{padding-top:14px;}
+ .layout-lg-padding-top-15{padding-top:15px;}
+ .layout-lg-padding-top-16{padding-top:16px;}
+ .layout-lg-padding-top-17{padding-top:17px;}
+ .layout-lg-padding-top-18{padding-top:18px;}
+ .layout-lg-padding-top-19{padding-top:19px;}
+ .layout-lg-padding-top-20{padding-top:20px;}
+ .layout-lg-padding-top-21{padding-top:21px;}
+ .layout-lg-padding-top-22{padding-top:22px;}
+ .layout-lg-padding-top-23{padding-top:23px;}
+ .layout-lg-padding-top-24{padding-top:24px;}
+ .layout-lg-padding-top-25{padding-top:25px;}
+ .layout-lg-padding-top-26{padding-top:26px;}
+ .layout-lg-padding-top-27{padding-top:27px;}
+ .layout-lg-padding-top-28{padding-top:28px;}
+ .layout-lg-padding-top-29{padding-top:29px;}
+ .layout-lg-padding-top-30{padding-top:30px;}
+ .layout-lg-padding-top-31{padding-top:31px;}
+ .layout-lg-padding-top-32{padding-top:32px;}
+ .layout-lg-padding-top-33{padding-top:33px;}
+ .layout-lg-padding-top-34{padding-top:34px;}
+ .layout-lg-padding-top-35{padding-top:35px;}
+ .layout-lg-padding-top-36{padding-top:36px;}
+ .layout-lg-padding-top-37{padding-top:37px;}
+ .layout-lg-padding-top-38{padding-top:38px;}
+ .layout-lg-padding-top-39{padding-top:39px;}
+ .layout-lg-padding-top-40{padding-top:40px;}
+ .layout-lg-padding-top-41{padding-top:41px;}
+ .layout-lg-padding-top-42{padding-top:42px;}
+ .layout-lg-padding-top-43{padding-top:43px;}
+ .layout-lg-padding-top-44{padding-top:44px;}
+ .layout-lg-padding-top-45{padding-top:45px;}
+ .layout-lg-padding-top-46{padding-top:46px;}
+ .layout-lg-padding-top-47{padding-top:47px;}
+ .layout-lg-padding-top-48{padding-top:48px;}
+ .layout-lg-padding-top-49{padding-top:49px;}
+ .layout-lg-padding-top-50{padding-top:50px;}
+ .layout-lg-padding-top-51{padding-top:51px;}
+ .layout-lg-padding-top-52{padding-top:52px;}
+ .layout-lg-padding-top-53{padding-top:53px;}
+ .layout-lg-padding-top-54{padding-top:54px;}
+ .layout-lg-padding-top-55{padding-top:55px;}
+ .layout-lg-padding-top-56{padding-top:56px;}
+ .layout-lg-padding-top-57{padding-top:57px;}
+ .layout-lg-padding-top-58{padding-top:58px;}
+ .layout-lg-padding-top-59{padding-top:59px;}
+ .layout-lg-padding-top-60{padding-top:60px;}
+
+ .layout-lg-padding-right-1{padding-right:1px;}
+ .layout-lg-padding-right-2{padding-right:2px;}
+ .layout-lg-padding-right-3{padding-right:3px;}
+ .layout-lg-padding-right-4{padding-right:4px;}
+ .layout-lg-padding-right-5{padding-right:5px;}
+ .layout-lg-padding-right-6{padding-right:6px;}
+ .layout-lg-padding-right-7{padding-right:7px;}
+ .layout-lg-padding-right-8{padding-right:8px;}
+ .layout-lg-padding-right-9{padding-right:9px;}
+ .layout-lg-padding-right-10{padding-right:10px;}
+ .layout-lg-padding-right-11{padding-right:11px;}
+ .layout-lg-padding-right-12{padding-right:12px;}
+ .layout-lg-padding-right-13{padding-right:13px;}
+ .layout-lg-padding-right-14{padding-right:14px;}
+ .layout-lg-padding-right-15{padding-right:15px;}
+ .layout-lg-padding-right-16{padding-right:16px;}
+ .layout-lg-padding-right-17{padding-right:17px;}
+ .layout-lg-padding-right-18{padding-right:18px;}
+ .layout-lg-padding-right-19{padding-right:19px;}
+ .layout-lg-padding-right-20{padding-right:20px;}
+ .layout-lg-padding-right-21{padding-right:21px;}
+ .layout-lg-padding-right-22{padding-right:22px;}
+ .layout-lg-padding-right-23{padding-right:23px;}
+ .layout-lg-padding-right-24{padding-right:24px;}
+ .layout-lg-padding-right-25{padding-right:25px;}
+ .layout-lg-padding-right-26{padding-right:26px;}
+ .layout-lg-padding-right-27{padding-right:27px;}
+ .layout-lg-padding-right-28{padding-right:28px;}
+ .layout-lg-padding-right-29{padding-right:29px;}
+ .layout-lg-padding-right-30{padding-right:30px;}
+ .layout-lg-padding-right-31{padding-right:31px;}
+ .layout-lg-padding-right-32{padding-right:32px;}
+ .layout-lg-padding-right-33{padding-right:33px;}
+ .layout-lg-padding-right-34{padding-right:34px;}
+ .layout-lg-padding-right-35{padding-right:35px;}
+ .layout-lg-padding-right-36{padding-right:36px;}
+ .layout-lg-padding-right-37{padding-right:37px;}
+ .layout-lg-padding-right-38{padding-right:38px;}
+ .layout-lg-padding-right-39{padding-right:39px;}
+ .layout-lg-padding-right-40{padding-right:40px;}
+ .layout-lg-padding-right-41{padding-right:41px;}
+ .layout-lg-padding-right-42{padding-right:42px;}
+ .layout-lg-padding-right-43{padding-right:43px;}
+ .layout-lg-padding-right-44{padding-right:44px;}
+ .layout-lg-padding-right-45{padding-right:45px;}
+ .layout-lg-padding-right-46{padding-right:46px;}
+ .layout-lg-padding-right-47{padding-right:47px;}
+ .layout-lg-padding-right-48{padding-right:48px;}
+ .layout-lg-padding-right-49{padding-right:49px;}
+ .layout-lg-padding-right-50{padding-right:50px;}
+ .layout-lg-padding-right-51{padding-right:51px;}
+ .layout-lg-padding-right-52{padding-right:52px;}
+ .layout-lg-padding-right-53{padding-right:53px;}
+ .layout-lg-padding-right-54{padding-right:54px;}
+ .layout-lg-padding-right-55{padding-right:55px;}
+ .layout-lg-padding-right-56{padding-right:56px;}
+ .layout-lg-padding-right-57{padding-right:57px;}
+ .layout-lg-padding-right-58{padding-right:58px;}
+ .layout-lg-padding-right-59{padding-right:59px;}
+ .layout-lg-padding-right-60{padding-right:60px;}
+
+ .layout-lg-padding-bottom-1{padding-bottom:1px;}
+ .layout-lg-padding-bottom-2{padding-bottom:2px;}
+ .layout-lg-padding-bottom-3{padding-bottom:3px;}
+ .layout-lg-padding-bottom-4{padding-bottom:4px;}
+ .layout-lg-padding-bottom-5{padding-bottom:5px;}
+ .layout-lg-padding-bottom-6{padding-bottom:6px;}
+ .layout-lg-padding-bottom-7{padding-bottom:7px;}
+ .layout-lg-padding-bottom-8{padding-bottom:8px;}
+ .layout-lg-padding-bottom-9{padding-bottom:9px;}
+ .layout-lg-padding-bottom-10{padding-bottom:10px;}
+ .layout-lg-padding-bottom-11{padding-bottom:11px;}
+ .layout-lg-padding-bottom-12{padding-bottom:12px;}
+ .layout-lg-padding-bottom-13{padding-bottom:13px;}
+ .layout-lg-padding-bottom-14{padding-bottom:14px;}
+ .layout-lg-padding-bottom-15{padding-bottom:15px;}
+ .layout-lg-padding-bottom-16{padding-bottom:16px;}
+ .layout-lg-padding-bottom-17{padding-bottom:17px;}
+ .layout-lg-padding-bottom-18{padding-bottom:18px;}
+ .layout-lg-padding-bottom-19{padding-bottom:19px;}
+ .layout-lg-padding-bottom-20{padding-bottom:20px;}
+ .layout-lg-padding-bottom-21{padding-bottom:21px;}
+ .layout-lg-padding-bottom-22{padding-bottom:22px;}
+ .layout-lg-padding-bottom-23{padding-bottom:23px;}
+ .layout-lg-padding-bottom-24{padding-bottom:24px;}
+ .layout-lg-padding-bottom-25{padding-bottom:25px;}
+ .layout-lg-padding-bottom-26{padding-bottom:26px;}
+ .layout-lg-padding-bottom-27{padding-bottom:27px;}
+ .layout-lg-padding-bottom-28{padding-bottom:28px;}
+ .layout-lg-padding-bottom-29{padding-bottom:29px;}
+ .layout-lg-padding-bottom-30{padding-bottom:30px;}
+ .layout-lg-padding-bottom-31{padding-bottom:31px;}
+ .layout-lg-padding-bottom-32{padding-bottom:32px;}
+ .layout-lg-padding-bottom-33{padding-bottom:33px;}
+ .layout-lg-padding-bottom-34{padding-bottom:34px;}
+ .layout-lg-padding-bottom-35{padding-bottom:35px;}
+ .layout-lg-padding-bottom-36{padding-bottom:36px;}
+ .layout-lg-padding-bottom-37{padding-bottom:37px;}
+ .layout-lg-padding-bottom-38{padding-bottom:38px;}
+ .layout-lg-padding-bottom-39{padding-bottom:39px;}
+ .layout-lg-padding-bottom-40{padding-bottom:40px;}
+ .layout-lg-padding-bottom-41{padding-bottom:41px;}
+ .layout-lg-padding-bottom-42{padding-bottom:42px;}
+ .layout-lg-padding-bottom-43{padding-bottom:43px;}
+ .layout-lg-padding-bottom-44{padding-bottom:44px;}
+ .layout-lg-padding-bottom-45{padding-bottom:45px;}
+ .layout-lg-padding-bottom-46{padding-bottom:46px;}
+ .layout-lg-padding-bottom-47{padding-bottom:47px;}
+ .layout-lg-padding-bottom-48{padding-bottom:48px;}
+ .layout-lg-padding-bottom-49{padding-bottom:49px;}
+ .layout-lg-padding-bottom-50{padding-bottom:50px;}
+ .layout-lg-padding-bottom-51{padding-bottom:51px;}
+ .layout-lg-padding-bottom-52{padding-bottom:52px;}
+ .layout-lg-padding-bottom-53{padding-bottom:53px;}
+ .layout-lg-padding-bottom-54{padding-bottom:54px;}
+ .layout-lg-padding-bottom-55{padding-bottom:55px;}
+ .layout-lg-padding-bottom-56{padding-bottom:56px;}
+ .layout-lg-padding-bottom-57{padding-bottom:57px;}
+ .layout-lg-padding-bottom-58{padding-bottom:58px;}
+ .layout-lg-padding-bottom-59{padding-bottom:59px;}
+ .layout-lg-padding-bottom-60{padding-bottom:60px;}
+
+ .layout-lg-padding-left-1{padding-left:1px;}
+ .layout-lg-padding-left-2{padding-left:2px;}
+ .layout-lg-padding-left-3{padding-left:3px;}
+ .layout-lg-padding-left-4{padding-left:4px;}
+ .layout-lg-padding-left-5{padding-left:5px;}
+ .layout-lg-padding-left-6{padding-left:6px;}
+ .layout-lg-padding-left-7{padding-left:7px;}
+ .layout-lg-padding-left-8{padding-left:8px;}
+ .layout-lg-padding-left-9{padding-left:9px;}
+ .layout-lg-padding-left-10{padding-left:10px;}
+ .layout-lg-padding-left-11{padding-left:11px;}
+ .layout-lg-padding-left-12{padding-left:12px;}
+ .layout-lg-padding-left-13{padding-left:13px;}
+ .layout-lg-padding-left-14{padding-left:14px;}
+ .layout-lg-padding-left-15{padding-left:15px;}
+ .layout-lg-padding-left-16{padding-left:16px;}
+ .layout-lg-padding-left-17{padding-left:17px;}
+ .layout-lg-padding-left-18{padding-left:18px;}
+ .layout-lg-padding-left-19{padding-left:19px;}
+ .layout-lg-padding-left-20{padding-left:20px;}
+ .layout-lg-padding-left-21{padding-left:21px;}
+ .layout-lg-padding-left-22{padding-left:22px;}
+ .layout-lg-padding-left-23{padding-left:23px;}
+ .layout-lg-padding-left-24{padding-left:24px;}
+ .layout-lg-padding-left-25{padding-left:25px;}
+ .layout-lg-padding-left-26{padding-left:26px;}
+ .layout-lg-padding-left-27{padding-left:27px;}
+ .layout-lg-padding-left-28{padding-left:28px;}
+ .layout-lg-padding-left-29{padding-left:29px;}
+ .layout-lg-padding-left-30{padding-left:30px;}
+ .layout-lg-padding-left-31{padding-left:31px;}
+ .layout-lg-padding-left-32{padding-left:32px;}
+ .layout-lg-padding-left-33{padding-left:33px;}
+ .layout-lg-padding-left-34{padding-left:34px;}
+ .layout-lg-padding-left-35{padding-left:35px;}
+ .layout-lg-padding-left-36{padding-left:36px;}
+ .layout-lg-padding-left-37{padding-left:37px;}
+ .layout-lg-padding-left-38{padding-left:38px;}
+ .layout-lg-padding-left-39{padding-left:39px;}
+ .layout-lg-padding-left-40{padding-left:40px;}
+ .layout-lg-padding-left-41{padding-left:41px;}
+ .layout-lg-padding-left-42{padding-left:42px;}
+ .layout-lg-padding-left-43{padding-left:43px;}
+ .layout-lg-padding-left-44{padding-left:44px;}
+ .layout-lg-padding-left-45{padding-left:45px;}
+ .layout-lg-padding-left-46{padding-left:46px;}
+ .layout-lg-padding-left-47{padding-left:47px;}
+ .layout-lg-padding-left-48{padding-left:48px;}
+ .layout-lg-padding-left-49{padding-left:49px;}
+ .layout-lg-padding-left-50{padding-left:50px;}
+ .layout-lg-padding-left-51{padding-left:51px;}
+ .layout-lg-padding-left-52{padding-left:52px;}
+ .layout-lg-padding-left-53{padding-left:53px;}
+ .layout-lg-padding-left-54{padding-left:54px;}
+ .layout-lg-padding-left-55{padding-left:55px;}
+ .layout-lg-padding-left-56{padding-left:56px;}
+ .layout-lg-padding-left-57{padding-left:57px;}
+ .layout-lg-padding-left-58{padding-left:58px;}
+ .layout-lg-padding-left-59{padding-left:59px;}
+ .layout-lg-padding-left-60{padding-left:60px;}
+}
+@media only screen and (max-width: 640px) {
+ .layout-sm-padding-top-1{padding-top:1px;}
+ .layout-sm-padding-top-2{padding-top:2px;}
+ .layout-sm-padding-top-3{padding-top:3px;}
+ .layout-sm-padding-top-4{padding-top:4px;}
+ .layout-sm-padding-top-5{padding-top:5px;}
+ .layout-sm-padding-top-6{padding-top:6px;}
+ .layout-sm-padding-top-7{padding-top:7px;}
+ .layout-sm-padding-top-8{padding-top:8px;}
+ .layout-sm-padding-top-9{padding-top:9px;}
+ .layout-sm-padding-top-10{padding-top:10px;}
+ .layout-sm-padding-top-11{padding-top:11px;}
+ .layout-sm-padding-top-12{padding-top:12px;}
+ .layout-sm-padding-top-13{padding-top:13px;}
+ .layout-sm-padding-top-14{padding-top:14px;}
+ .layout-sm-padding-top-15{padding-top:15px;}
+ .layout-sm-padding-top-16{padding-top:16px;}
+ .layout-sm-padding-top-17{padding-top:17px;}
+ .layout-sm-padding-top-18{padding-top:18px;}
+ .layout-sm-padding-top-19{padding-top:19px;}
+ .layout-sm-padding-top-20{padding-top:20px;}
+ .layout-sm-padding-top-21{padding-top:21px;}
+ .layout-sm-padding-top-22{padding-top:22px;}
+ .layout-sm-padding-top-23{padding-top:23px;}
+ .layout-sm-padding-top-24{padding-top:24px;}
+ .layout-sm-padding-top-25{padding-top:25px;}
+ .layout-sm-padding-top-26{padding-top:26px;}
+ .layout-sm-padding-top-27{padding-top:27px;}
+ .layout-sm-padding-top-28{padding-top:28px;}
+ .layout-sm-padding-top-29{padding-top:29px;}
+ .layout-sm-padding-top-30{padding-top:30px;}
+ .layout-sm-padding-top-31{padding-top:31px;}
+ .layout-sm-padding-top-32{padding-top:32px;}
+ .layout-sm-padding-top-33{padding-top:33px;}
+ .layout-sm-padding-top-34{padding-top:34px;}
+ .layout-sm-padding-top-35{padding-top:35px;}
+ .layout-sm-padding-top-36{padding-top:36px;}
+ .layout-sm-padding-top-37{padding-top:37px;}
+ .layout-sm-padding-top-38{padding-top:38px;}
+ .layout-sm-padding-top-39{padding-top:39px;}
+ .layout-sm-padding-top-40{padding-top:40px;}
+ .layout-sm-padding-top-41{padding-top:41px;}
+ .layout-sm-padding-top-42{padding-top:42px;}
+ .layout-sm-padding-top-43{padding-top:43px;}
+ .layout-sm-padding-top-44{padding-top:44px;}
+ .layout-sm-padding-top-45{padding-top:45px;}
+ .layout-sm-padding-top-46{padding-top:46px;}
+ .layout-sm-padding-top-47{padding-top:47px;}
+ .layout-sm-padding-top-48{padding-top:48px;}
+ .layout-sm-padding-top-49{padding-top:49px;}
+ .layout-sm-padding-top-50{padding-top:50px;}
+ .layout-sm-padding-top-51{padding-top:51px;}
+ .layout-sm-padding-top-52{padding-top:52px;}
+ .layout-sm-padding-top-53{padding-top:53px;}
+ .layout-sm-padding-top-54{padding-top:54px;}
+ .layout-sm-padding-top-55{padding-top:55px;}
+ .layout-sm-padding-top-56{padding-top:56px;}
+ .layout-sm-padding-top-57{padding-top:57px;}
+ .layout-sm-padding-top-58{padding-top:58px;}
+ .layout-sm-padding-top-59{padding-top:59px;}
+ .layout-sm-padding-top-60{padding-top:60px;}
+
+ .layout-sm-padding-right-1{padding-right:1px;}
+ .layout-sm-padding-right-2{padding-right:2px;}
+ .layout-sm-padding-right-3{padding-right:3px;}
+ .layout-sm-padding-right-4{padding-right:4px;}
+ .layout-sm-padding-right-5{padding-right:5px;}
+ .layout-sm-padding-right-6{padding-right:6px;}
+ .layout-sm-padding-right-7{padding-right:7px;}
+ .layout-sm-padding-right-8{padding-right:8px;}
+ .layout-sm-padding-right-9{padding-right:9px;}
+ .layout-sm-padding-right-10{padding-right:10px;}
+ .layout-sm-padding-right-11{padding-right:11px;}
+ .layout-sm-padding-right-12{padding-right:12px;}
+ .layout-sm-padding-right-13{padding-right:13px;}
+ .layout-sm-padding-right-14{padding-right:14px;}
+ .layout-sm-padding-right-15{padding-right:15px;}
+ .layout-sm-padding-right-16{padding-right:16px;}
+ .layout-sm-padding-right-17{padding-right:17px;}
+ .layout-sm-padding-right-18{padding-right:18px;}
+ .layout-sm-padding-right-19{padding-right:19px;}
+ .layout-sm-padding-right-20{padding-right:20px;}
+ .layout-sm-padding-right-21{padding-right:21px;}
+ .layout-sm-padding-right-22{padding-right:22px;}
+ .layout-sm-padding-right-23{padding-right:23px;}
+ .layout-sm-padding-right-24{padding-right:24px;}
+ .layout-sm-padding-right-25{padding-right:25px;}
+ .layout-sm-padding-right-26{padding-right:26px;}
+ .layout-sm-padding-right-27{padding-right:27px;}
+ .layout-sm-padding-right-28{padding-right:28px;}
+ .layout-sm-padding-right-29{padding-right:29px;}
+ .layout-sm-padding-right-30{padding-right:30px;}
+ .layout-sm-padding-right-31{padding-right:31px;}
+ .layout-sm-padding-right-32{padding-right:32px;}
+ .layout-sm-padding-right-33{padding-right:33px;}
+ .layout-sm-padding-right-34{padding-right:34px;}
+ .layout-sm-padding-right-35{padding-right:35px;}
+ .layout-sm-padding-right-36{padding-right:36px;}
+ .layout-sm-padding-right-37{padding-right:37px;}
+ .layout-sm-padding-right-38{padding-right:38px;}
+ .layout-sm-padding-right-39{padding-right:39px;}
+ .layout-sm-padding-right-40{padding-right:40px;}
+ .layout-sm-padding-right-41{padding-right:41px;}
+ .layout-sm-padding-right-42{padding-right:42px;}
+ .layout-sm-padding-right-43{padding-right:43px;}
+ .layout-sm-padding-right-44{padding-right:44px;}
+ .layout-sm-padding-right-45{padding-right:45px;}
+ .layout-sm-padding-right-46{padding-right:46px;}
+ .layout-sm-padding-right-47{padding-right:47px;}
+ .layout-sm-padding-right-48{padding-right:48px;}
+ .layout-sm-padding-right-49{padding-right:49px;}
+ .layout-sm-padding-right-50{padding-right:50px;}
+ .layout-sm-padding-right-51{padding-right:51px;}
+ .layout-sm-padding-right-52{padding-right:52px;}
+ .layout-sm-padding-right-53{padding-right:53px;}
+ .layout-sm-padding-right-54{padding-right:54px;}
+ .layout-sm-padding-right-55{padding-right:55px;}
+ .layout-sm-padding-right-56{padding-right:56px;}
+ .layout-sm-padding-right-57{padding-right:57px;}
+ .layout-sm-padding-right-58{padding-right:58px;}
+ .layout-sm-padding-right-59{padding-right:59px;}
+ .layout-sm-padding-right-60{padding-right:60px;}
+
+ .layout-sm-padding-bottom-1{padding-bottom:1px;}
+ .layout-sm-padding-bottom-2{padding-bottom:2px;}
+ .layout-sm-padding-bottom-3{padding-bottom:3px;}
+ .layout-sm-padding-bottom-4{padding-bottom:4px;}
+ .layout-sm-padding-bottom-5{padding-bottom:5px;}
+ .layout-sm-padding-bottom-6{padding-bottom:6px;}
+ .layout-sm-padding-bottom-7{padding-bottom:7px;}
+ .layout-sm-padding-bottom-8{padding-bottom:8px;}
+ .layout-sm-padding-bottom-9{padding-bottom:9px;}
+ .layout-sm-padding-bottom-10{padding-bottom:10px;}
+ .layout-sm-padding-bottom-11{padding-bottom:11px;}
+ .layout-sm-padding-bottom-12{padding-bottom:12px;}
+ .layout-sm-padding-bottom-13{padding-bottom:13px;}
+ .layout-sm-padding-bottom-14{padding-bottom:14px;}
+ .layout-sm-padding-bottom-15{padding-bottom:15px;}
+ .layout-sm-padding-bottom-16{padding-bottom:16px;}
+ .layout-sm-padding-bottom-17{padding-bottom:17px;}
+ .layout-sm-padding-bottom-18{padding-bottom:18px;}
+ .layout-sm-padding-bottom-19{padding-bottom:19px;}
+ .layout-sm-padding-bottom-20{padding-bottom:20px;}
+ .layout-sm-padding-bottom-21{padding-bottom:21px;}
+ .layout-sm-padding-bottom-22{padding-bottom:22px;}
+ .layout-sm-padding-bottom-23{padding-bottom:23px;}
+ .layout-sm-padding-bottom-24{padding-bottom:24px;}
+ .layout-sm-padding-bottom-25{padding-bottom:25px;}
+ .layout-sm-padding-bottom-26{padding-bottom:26px;}
+ .layout-sm-padding-bottom-27{padding-bottom:27px;}
+ .layout-sm-padding-bottom-28{padding-bottom:28px;}
+ .layout-sm-padding-bottom-29{padding-bottom:29px;}
+ .layout-sm-padding-bottom-30{padding-bottom:30px;}
+ .layout-sm-padding-bottom-31{padding-bottom:31px;}
+ .layout-sm-padding-bottom-32{padding-bottom:32px;}
+ .layout-sm-padding-bottom-33{padding-bottom:33px;}
+ .layout-sm-padding-bottom-34{padding-bottom:34px;}
+ .layout-sm-padding-bottom-35{padding-bottom:35px;}
+ .layout-sm-padding-bottom-36{padding-bottom:36px;}
+ .layout-sm-padding-bottom-37{padding-bottom:37px;}
+ .layout-sm-padding-bottom-38{padding-bottom:38px;}
+ .layout-sm-padding-bottom-39{padding-bottom:39px;}
+ .layout-sm-padding-bottom-40{padding-bottom:40px;}
+ .layout-sm-padding-bottom-41{padding-bottom:41px;}
+ .layout-sm-padding-bottom-42{padding-bottom:42px;}
+ .layout-sm-padding-bottom-43{padding-bottom:43px;}
+ .layout-sm-padding-bottom-44{padding-bottom:44px;}
+ .layout-sm-padding-bottom-45{padding-bottom:45px;}
+ .layout-sm-padding-bottom-46{padding-bottom:46px;}
+ .layout-sm-padding-bottom-47{padding-bottom:47px;}
+ .layout-sm-padding-bottom-48{padding-bottom:48px;}
+ .layout-sm-padding-bottom-49{padding-bottom:49px;}
+ .layout-sm-padding-bottom-50{padding-bottom:50px;}
+ .layout-sm-padding-bottom-51{padding-bottom:51px;}
+ .layout-sm-padding-bottom-52{padding-bottom:52px;}
+ .layout-sm-padding-bottom-53{padding-bottom:53px;}
+ .layout-sm-padding-bottom-54{padding-bottom:54px;}
+ .layout-sm-padding-bottom-55{padding-bottom:55px;}
+ .layout-sm-padding-bottom-56{padding-bottom:56px;}
+ .layout-sm-padding-bottom-57{padding-bottom:57px;}
+ .layout-sm-padding-bottom-58{padding-bottom:58px;}
+ .layout-sm-padding-bottom-59{padding-bottom:59px;}
+ .layout-sm-padding-bottom-60{padding-bottom:60px;}
+
+ .layout-sm-padding-left-1{padding-left:1px;}
+ .layout-sm-padding-left-2{padding-left:2px;}
+ .layout-sm-padding-left-3{padding-left:3px;}
+ .layout-sm-padding-left-4{padding-left:4px;}
+ .layout-sm-padding-left-5{padding-left:5px;}
+ .layout-sm-padding-left-6{padding-left:6px;}
+ .layout-sm-padding-left-7{padding-left:7px;}
+ .layout-sm-padding-left-8{padding-left:8px;}
+ .layout-sm-padding-left-9{padding-left:9px;}
+ .layout-sm-padding-left-10{padding-left:10px;}
+ .layout-sm-padding-left-11{padding-left:11px;}
+ .layout-sm-padding-left-12{padding-left:12px;}
+ .layout-sm-padding-left-13{padding-left:13px;}
+ .layout-sm-padding-left-14{padding-left:14px;}
+ .layout-sm-padding-left-15{padding-left:15px;}
+ .layout-sm-padding-left-16{padding-left:16px;}
+ .layout-sm-padding-left-17{padding-left:17px;}
+ .layout-sm-padding-left-18{padding-left:18px;}
+ .layout-sm-padding-left-19{padding-left:19px;}
+ .layout-sm-padding-left-20{padding-left:20px;}
+ .layout-sm-padding-left-21{padding-left:21px;}
+ .layout-sm-padding-left-22{padding-left:22px;}
+ .layout-sm-padding-left-23{padding-left:23px;}
+ .layout-sm-padding-left-24{padding-left:24px;}
+ .layout-sm-padding-left-25{padding-left:25px;}
+ .layout-sm-padding-left-26{padding-left:26px;}
+ .layout-sm-padding-left-27{padding-left:27px;}
+ .layout-sm-padding-left-28{padding-left:28px;}
+ .layout-sm-padding-left-29{padding-left:29px;}
+ .layout-sm-padding-left-30{padding-left:30px;}
+ .layout-sm-padding-left-31{padding-left:31px;}
+ .layout-sm-padding-left-32{padding-left:32px;}
+ .layout-sm-padding-left-33{padding-left:33px;}
+ .layout-sm-padding-left-34{padding-left:34px;}
+ .layout-sm-padding-left-35{padding-left:35px;}
+ .layout-sm-padding-left-36{padding-left:36px;}
+ .layout-sm-padding-left-37{padding-left:37px;}
+ .layout-sm-padding-left-38{padding-left:38px;}
+ .layout-sm-padding-left-39{padding-left:39px;}
+ .layout-sm-padding-left-40{padding-left:40px;}
+ .layout-sm-padding-left-41{padding-left:41px;}
+ .layout-sm-padding-left-42{padding-left:42px;}
+ .layout-sm-padding-left-43{padding-left:43px;}
+ .layout-sm-padding-left-44{padding-left:44px;}
+ .layout-sm-padding-left-45{padding-left:45px;}
+ .layout-sm-padding-left-46{padding-left:46px;}
+ .layout-sm-padding-left-47{padding-left:47px;}
+ .layout-sm-padding-left-48{padding-left:48px;}
+ .layout-sm-padding-left-49{padding-left:49px;}
+ .layout-sm-padding-left-50{padding-left:50px;}
+ .layout-sm-padding-left-51{padding-left:51px;}
+ .layout-sm-padding-left-52{padding-left:52px;}
+ .layout-sm-padding-left-53{padding-left:53px;}
+ .layout-sm-padding-left-54{padding-left:54px;}
+ .layout-sm-padding-left-55{padding-left:55px;}
+ .layout-sm-padding-left-56{padding-left:56px;}
+ .layout-sm-padding-left-57{padding-left:57px;}
+ .layout-sm-padding-left-58{padding-left:58px;}
+ .layout-sm-padding-left-59{padding-left:59px;}
+ .layout-sm-padding-left-60{padding-left:60px;}
+}
+
+
+/**
+ * 模块基础样式
+ */
+.module-content,
+.module-images-container,
+.module-slider-container,
+.module-video-container,
+.module-title-container,
+.module-goods-container,
+.module-list-content,
+.module-list-content li .module-item,
+.module-list-content li .module-item .module-title,
+.module-list-content li .module-item .module-price {overflow: hidden;}
+
+/**
+ * 模块类型样式 - 图片
+ */
+.module-content-type-images{text-align:center}
+.module-content-type-images a{display:block}
+
+/**
+ * 模块类型样式 - 标题
+ */
+.module-title-container .module-title-content{position:relative}
+.module-title-container .title-main{font-size:16px;font-weight:600;color:#666}
+.module-title-container .title-vice{color:#999;font-size:12px;margin-left:10px}
+.module-title-container .keywords-content,.module-title-container .more-content{position:absolute;top:calc(50% - 8px);right:0}
+.module-title-container .keywords-content{right:65px}
+.module-title-container .keywords-content a:not(:last-child){margin-right:10px}
+@media only screen and (max-width: 640px) {
+ .module-title-container .keywords-content{display:none}
+}
+
+/**
+ * 模块内容基础样式
+ */
+.layout-content img,
+.layout-content video{display:block;max-width:100%;max-height:100%}
+
+/**
+ * 不展示滚动导航点
+ */
+.layout-content .slides-rolling-not-dot{margin-bottom:0px}
+
+/**
+ * 媒体文件固定大小
+ */
+.module-fixed-doc{display:block;overflow:hidden}
+.module-fixed-doc-ent-width{width:100%}
+.module-fixed-doc-ent-height{height:100%}
+.module-fixed-doc-ent-auto{margin:0 auto}
+.module-fixed-doc-ent-cover{object-fit:cover}
\ No newline at end of file
diff --git a/public/static/common/js/common.js b/public/static/common/js/common.js
index d641004a88b55a4608d8962fba4b2889074b5d32..6778cf213920ff7a73a49ec39ecc1bbc3bf3a1e1 100755
--- a/public/static/common/js/common.js
+++ b/public/static/common/js/common.js
@@ -557,10 +557,9 @@ function FormDataFill(json, tag)
$form.find('input[type="hidden"][name="'+i+'"], input[type="text"][name="'+i+'"], input[type="password"][name="'+i+'"], input[type="email"][name="'+i+'"], input[type="number"][name="'+i+'"], input[type="date"][name="'+i+'"], textarea[name="'+i+'"], select[name="'+i+'"], input[type="url"][name="'+i+'"]').val(json[i]);
// input radio
- $form.find('input[type="radio"][name="'+i+'"]').each(function(temp_value, temp_tag)
+ $form.find('input[type="radio"][name="'+i+'"]').each(function(k, v)
{
- var state = (json[i] == temp_value);
- this.checked = state;
+ this.checked = (json[i] == $(this).val());
});
}
@@ -574,6 +573,14 @@ function FormDataFill(json, tag)
}
}
+ // switch切换插件
+ $form.find('.am-switch').each(function(k, v)
+ {
+ var name = $(this).find('input').attr('name') || null;
+ var state = (name == null || (json[name] || 0) == 0) ? false : true;
+ $(this).find('input').bootstrapSwitch('state', state);
+ });
+
// 多选插件事件更新
if($('.chosen-select').length > 0)
{
diff --git a/public/static/common/js/layout.admin.js b/public/static/common/js/layout.admin.js
new file mode 100644
index 0000000000000000000000000000000000000000..fa30182725d552cba05f11d7e2f51d06c40a2544
--- /dev/null
+++ b/public/static/common/js/layout.admin.js
@@ -0,0 +1,2970 @@
+// 公共列表 form 搜索条件
+FromInit('form.form-validation-layout-config');
+FromInit('form.form-validation-module-offcanvas-images');
+FromInit('form.form-validation-module-offcanvas-many-images');
+FromInit('form.form-validation-module-offcanvas-video');
+FromInit('form.form-validation-module-offcanvas-goods');
+FromInit('form.form-validation-module-offcanvas-title');
+FromInit('form.form-validation-module-offcanvas-border');
+FromInit('form.form-validation-module-offcanvas-height');
+
+FromInit('form.form-validation-module-modal-title-keywords');
+FromInit('form.form-validation-module-modal-rolling-config');
+FromInit('form.form-validation-module-modal-list-config');
+
+FromInit('form.form-validation-module-popup-goods-search');
+
+// 弹窗容器
+var $layout_content_obj = null;
+var $page_parent_obj = null;
+var $base_show_style_value_obj = null;
+var $base_title_keywords_obj = null;
+var $offcanvas_layout_config = $('#offcanvas-layout-config');
+var $offcanvas_config_images = $('#offcanvas-module-config-images');
+var $offcanvas_config_many_images = $('#offcanvas-module-config-many-images');
+var $offcanvas_config_video = $('#offcanvas-module-config-video');
+var $offcanvas_config_goods = $('#offcanvas-module-config-goods');
+var $offcanvas_config_title = $('#offcanvas-module-config-title');
+var $offcanvas_config_border = $('#offcanvas-module-config-border');
+var $offcanvas_config_height = $('#offcanvas-module-config-height');
+
+var $modal_pages_select = $('#modal-module-pages-select');
+var $modal_rolling_config = $('#modal-module-rolling-config');
+var $modal_list_config = $('#modal-module-list-config');
+var $modal_title_keywords = $('#modal-module-title-keywords');
+
+var $popup_goods_select = $('#popup-module-goods-select');
+var $popup_goods_search = $('#popup-module-goods-search');
+var $popup_goods_category = $('#popup-module-goods-category');
+
+// 布局模块类型信息
+var layout_module_type_arr = {
+ "images": "单图",
+ "many-images": "多图",
+ "video": "视频",
+ "goods": "商品",
+ "title": "标题",
+ "border": "辅助线",
+ "height": "辅助空白"
+}
+
+/**
+ * 模块拖拽初始化
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-13
+ * @desc description
+ * @param {[object]} event [初始化容器]
+ */
+function ModuleDragSortInit(event)
+{
+ // 是否指定初始化容器
+ if((event || null) == null)
+ {
+ event = $('.layout-content');
+ }
+
+ // 模块拖拽
+ event.dragsort({
+ dragSelector: '.module-view-submit-drag',
+ placeHolderTemplate: '
'
+ });
+}
+
+/**
+ * 布局生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-10
+ * @desc description
+ * @param {[string]} value [布局比例值]
+ */
+function StructureDragHtmlCreate(value)
+{
+ // 基础
+ var html = '
';
+ html += '
';
+ html += '
';
+ html += ' ';
+ html += ' 布局设置 ';
+ html += ' 布局移除 ';
+ html += '
';
+
+ // 容器设置
+ var content_submit = '
';
+ content_submit += ' ';
+ content_submit += '
';
+
+ // 默认内容提示信息
+ var content_tips = '
模块内容区域
';
+
+ // 根据布局类型处理
+ var arr = value.toString().split(':');
+ var length = arr.length;
+ if(length <= 1)
+ {
+ // 100%
+ html += '
';
+ html += '
';
+ html += content_submit;
+ html += '
';
+ html += content_tips;
+ html += '
';
+ html += '
';
+ html += '
';
+ } else {
+ // 多个格子
+ html += '
';
+ for( var i in arr)
+ {
+ html += '
';
+ html += '
';
+ html += content_submit;
+ html += '
';
+ html += content_tips;
+ html += '
';
+ html += '
';
+ html += '
';
+ }
+ html += '
';
+ }
+ html += '
';
+ console.log(html)
+ return html;
+}
+
+/**
+ * 模块生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-13
+ * @desc description
+ * @param {[string]} value [模块类型]
+ */
+function RenovationModuleDragHtmlCreate(value)
+{
+ // 根据模块类型处理
+ if((layout_module_type_arr[value] || null) == null)
+ {
+ Prompt('模块未定义['+value+']');
+ return false;
+ }
+
+ // 基础
+ var index = parseInt(Math.random()*1000001);
+ var doc = 'module-content-index-'+value+'-'+index;
+ var html = '
';
+ html += '
';
+ html += ' ';
+ html += ' ';
+ html += ' ';
+ html += '
';
+ html += '
';
+ html += '
请配置'+layout_module_type_arr[value]+'
';
+ html += '
';
+ html += '
';
+ console.log(html)
+ return html;
+}
+
+/**
+ * 模块-链接提示信息
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[string]} to_name [链接地址名称]
+ */
+function ModuleToPrompt(to_name)
+{
+ Prompt(to_name || '未设置链接地址', 'warning');
+}
+
+/**
+ * 基础样式处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-09
+ * @desc description
+ * @param {[object]} data [数据]
+ * @param {[string]} key [key]
+ * @param {[array]} replace_rules [替换规则]
+ */
+function StyleBaseHandle(data, key, replace_rules)
+{
+ // 样式容器
+ var style = '';
+
+ // 上下左右处理
+ // 边线类型、边线、外边距、内边距
+ var arr = [
+ {
+ "type": "border_style",
+ "css": "border-style",
+ "unit": "",
+ "value": ""
+ },
+ {
+ "type": "border_width",
+ "css": "border-width",
+ "unit": "px",
+ "value": 0
+ },
+ {
+ "type": "margin",
+ "css": "margin",
+ "unit": "px",
+ "value": 0
+ },
+ {
+ "type": "padding",
+ "css": "padding",
+ "unit": "px",
+ "value": 0
+ }
+ ];
+ for(var i in arr)
+ {
+ var type = arr[i]['type'];
+ var value = arr[i]['value'];
+ var unit = arr[i]['unit'];
+ var t = data[key+type+'_top'] || value;
+ var r = data[key+type+'_right'] || value;
+ var b = data[key+type+'_bottom'] || value;
+ var l = data[key+type+'_left'] || value;
+ if((t != 0 || r != 0 || b != 0 || l != 0) || (t != '' || r != '' || b != '' || l != ''))
+ {
+ style += arr[i]['css']+':'+ t+unit+' '+r+unit+' '+b+unit+' '+l+unit+';';
+ }
+ }
+
+ // 单个处理
+ var arr2 = [
+ {
+ "type": "border_style",
+ "css": "border-style",
+ "unit": ""
+ },
+ {
+ "type": "border_width",
+ "css": "border-width",
+ "unit": "px"
+ },
+ {
+ "type": "border_color",
+ "css": "border-color",
+ "unit": ""
+ },
+ {
+ "type": "border_radius",
+ "css": "border-radius",
+ "unit": "px"
+ },
+ {
+ "type": "background_color",
+ "css": "background-color",
+ "unit": ""
+ },
+ {
+ "type": "color",
+ "css": "color",
+ "unit": ""
+ },
+ {
+ "type": "margin",
+ "css": "margin",
+ "unit": "px"
+ },
+ {
+ "type": "padding",
+ "css": "padding",
+ "unit": "px"
+ },
+ {
+ "type": "height",
+ "css": "height",
+ "unit": "px"
+ },
+ {
+ "type": "width",
+ "css": "width",
+ "unit": "px"
+ }
+ ];
+ for(var i in arr2)
+ {
+ if((data[key+arr2[i]['type']] || null) != null)
+ {
+ // 样式值
+ var v = data[key+arr2[i]['type']]+arr2[i]['unit'];
+
+ // 替换规则
+ // rules {"field":{"value":"hello","var":"var"}}
+ if((replace_rules || null) != null && (replace_rules[arr2[i]['type']] || null) != null)
+ {
+ var rules = replace_rules[arr2[i]['type']];
+ var reg = new RegExp(rules['var'], 'g');
+ v = rules['value'].replace(reg, data[key+arr2[i]['type']]);
+ }
+
+ style += arr2[i]['css']+':'+v+';';
+ }
+ }
+
+ return style;
+}
+
+/**
+ * 元素固定处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-09
+ * @desc description
+ * @param {[object]} data [数据]
+ */
+function MediaFixedHandle(data)
+{
+ // 文件容器
+ var media_container_ent = '';
+ var media_container_style = StyleBaseHandle(data, 'style_media_fixed_');
+ if((media_container_style || null) != null)
+ {
+ media_container_ent += 'module-fixed-doc ';
+ }
+
+ // 文件
+ var media_ent = '';
+ var arr = ['width', 'height', 'auto', 'cover'];
+ for(var i in arr)
+ {
+ var key = 'style_media_fixed_is_'+arr[i];
+ if((data[key] || 0) == 1)
+ {
+ media_ent += 'module-fixed-doc-ent-'+arr[i]+' ';
+ }
+ }
+
+ return {
+ "media_container_ent": media_container_ent,
+ "media_container_style": media_container_style,
+ "media_ent": media_ent
+ }
+}
+
+/**
+ * 模块-容器设置处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackLayoutConfigHandle(data)
+{
+ // 基础信息
+ if($layout_content_obj == null)
+ {
+ Prompt('操作标记有误');
+ return false;
+ }
+
+ // 标签类定义
+ var ent = '';
+
+ // 边线大小、外边距、内边距
+ var size_arr = ['sm', 'md', 'lg'];
+ var angle_arr = ['top', 'right', 'bottom', 'left'];
+ var type_arr = {
+ "style_{var}_border_width": "layout-{var}-border",
+ "style_{var}_margin": "layout-{var}-margin",
+ "style_{var}_padding": "layout-{var}-padding",
+ };
+ for(var a in size_arr)
+ {
+ for(var b in type_arr)
+ {
+ for(var c in angle_arr)
+ {
+ var key = b.replace('{var}', size_arr[a])+'_'+angle_arr[c];
+ if((data[key] || 0) > 0)
+ {
+ ent += type_arr[b].replace('{var}', size_arr[a])+'-'+angle_arr[c]+'-'+data[key]+' ';
+ }
+ }
+ }
+ }
+
+ // 边线类型
+ for(var a in size_arr)
+ {
+ for(var b in angle_arr)
+ {
+ var key = 'style_'+size_arr[a]+'_border_style_'+angle_arr[b];
+ if((data[key] || null) != null)
+ {
+ ent += 'layout-'+size_arr[a]+'-border-'+angle_arr[b]+'-'+data[key]+' ';
+ }
+ }
+ }
+
+ // 圆角
+ for(var i in size_arr)
+ {
+ var key = 'style_'+size_arr[i]+'_border_radius';
+ if((data[key] || 0) > 0)
+ {
+ ent += 'layout-'+size_arr[i]+'-border-radius-'+data[key]+' ';
+ }
+ }
+
+ // 样式处理
+ var style = '';
+
+ // 背景色
+ if((data['style_background_color'] || null) != null)
+ {
+ style += 'background-color:'+data['style_background_color']+';';
+ }
+ // 边线颜色
+ if((data['style_border_color'] || null) != null)
+ {
+ style += 'border-color:'+data['style_border_color']+';';
+ }
+
+ // 类和样式处理
+ $layout_content_obj.attr('class', $offcanvas_layout_config.attr('data-ent')+' '+ent);
+ $layout_content_obj.attr('style', style);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "ent": ent
+ }
+ $layout_content_obj.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_layout_config.offCanvas('close');
+}
+
+/**
+ * 模块-图片处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigImagesHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_images.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 图片必须
+ if((data.content_images || null) == null)
+ {
+ Prompt('请上传图片');
+ return false;
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // 图片固定
+ var media_fixed = MediaFixedHandle(data);
+
+ // html拼接
+ var html = '
';
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "media_fixed": media_fixed
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_config_images.offCanvas('close');
+}
+
+/**
+ * 模块-多图处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigManyImagesHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_many_images.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 多图图片
+ var fields = {
+ "content_images_": "images",
+ "content_to_name_": "name",
+ "content_to_type_": "type",
+ "content_to_value_": "value"
+ };
+ var key_temp = [];
+ var data_list = [];
+ for(var i in data)
+ {
+ for(var f in fields)
+ {
+ if(i.substr(0, f.length) == f)
+ {
+ var key = i.replace(f, '') || null;
+ if(key != null)
+ {
+ // 临时索引记录
+ var index = key_temp.indexOf(key);
+ if(index == -1)
+ {
+ key_temp.push(key);
+ index = key_temp.length-1;
+ }
+
+ // 数据组合
+ if(data_list[index] == undefined)
+ {
+ data_list[index] = {};
+ }
+ data_list[index][fields[f]] = (fields[f] != 'value' || (data[i] || null) == null) ? data[i] : (JSON.parse(decodeURIComponent(data[i])) || '');
+ }
+ delete data[i];
+ }
+ }
+ }
+ if(data_list.length <= 0)
+ {
+ Prompt('请先添加图片并配置');
+ return false;
+ }
+ for(var i in data_list)
+ {
+ if((data_list[i]['images'] || null) == null)
+ {
+ Prompt('请上传图片');
+ return false;
+ }
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // 展示模式
+ var show_style = data.view_list_show_style || 'routine';
+
+ // 图片固定
+ var media_fixed = MediaFixedHandle(data);
+
+ // 数据项html
+ var item_html = '';
+ if(show_style != 'list')
+ {
+ for(var i in data_list)
+ {
+ item_html += '
';
+ item_html += ''
+ item_html += ' ';
+ item_html += ' ';
+ item_html += ' ';
+ }
+ }
+
+ // html拼接
+ var html = '
';
+
+ // 初始化参数
+ var option = {};
+
+ // 展示模式处理
+ var nav_dot_ent = '';
+ var list_ent = '';
+ switch(show_style)
+ {
+ // 滚动
+ case 'rolling' :
+ // 参数处理
+ var show_style_value = ViewRollingShowStyleValueHandle(data.view_list_show_style_value);
+
+ // 是否展示导航点
+ nav_dot_ent = show_style_value.is_nav_dot ? '' : 'slides-rolling-not-dot';
+
+ // html拼接
+ html += '
';
+ html += '
';
+ html += item_html;
+ html += ' ';
+ html += '
';
+
+ // 组件参数
+ option = {
+ itemWidth: show_style_value.item_width,
+ itemMargin: show_style_value.item_margin,
+ slideshow: show_style_value.is_auto_play,
+ controlNav: show_style_value.is_nav_dot
+ };
+ break;
+
+ // 列表
+ case 'list' :
+ // 参数处理
+ var show_style_value = ViewListShowStyleValueHandle(data.view_list_show_style_value);
+
+ // 列表展示数量
+ var sm = show_style_value.view_list_number_sm || 2;
+ var md = show_style_value.view_list_number_md || 5;
+ var lg = show_style_value.view_list_number_lg || 5;
+
+ // 外边距
+ var margin = show_style_value.style_margin || 0;
+
+ // 数据项样式处理
+ var item_style = (margin > 0) ? 'margin:'+margin+'px 0 0 '+margin+'px;' : '';
+
+ // 设置了外边距,则计算平均移动值
+ var avg = (margin > 0) ? 'module-list-content-avg-'+margin : '';
+
+ // 列表class
+ list_ent = avg+' module-list-sm-'+sm+' module-list-md-'+md+' module-list-lg-'+md+' ';
+
+ html += '
';
+ for(var i in data_list)
+ {
+ html += '';
+ html += '';
+ html += ' ';
+ }
+ html += ' ';
+ break;
+
+ // 常规、默认
+ default :
+ // html拼接
+ html += '
';
+ html += '
';
+ html += item_html;
+ html += ' ';
+ html += '
';
+ break;
+ }
+ html += '
';
+
+ // 模块容器设置
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "item_style": item_style,
+ "nav_dot_ent": nav_dot_ent,
+ "list_ent": list_ent,
+ "media_fixed": media_fixed
+ }
+ data['data_list'] = data_list;
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+
+ // 滚动初始化
+ if(show_style != 'list')
+ {
+ $doc.find('.am-slider').flexslider(option);
+ }
+ $offcanvas_config_many_images.offCanvas('close');
+}
+
+/**
+ * 模块-视频处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigVideoHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_video.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 视频
+ if((data.content_video || null) == null)
+ {
+ Prompt('请上传视频');
+ return false;
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // 视频固定
+ var media_fixed = MediaFixedHandle(data);
+
+ // html拼接
+ var html = '
';
+ html += '
';
+ html += 'your browser does not support the video tag ';
+ html += '
';
+ html += '
';
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "media_fixed": media_fixed
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_config_video.offCanvas('close');
+}
+
+/**
+ * 模块-商品处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigGoodsHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_goods.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 数据类型
+ var goods_ids = '';
+ var category_id = 0;
+ switch(data.goods_data_type)
+ {
+ // 商品
+ case 'goods' :
+ if((data.goods_ids || null) == null)
+ {
+ Prompt('请选择商品');
+ return false;
+ }
+ goods_ids = data.goods_ids;
+ break;
+
+ // 商品分类
+ case 'category' :
+ if((data.goods_category_value || null) == null)
+ {
+ Prompt('请选择商品分类');
+ return false;
+ }
+ var category = JSON.parse(decodeURIComponent(data.goods_category_value)) || null;
+ category_id = category[category.length-1]['id'];
+ break;
+
+ default :
+ Prompt('数据类型有误['+data.goods_data_type+']');
+ return false;
+ }
+
+ // 获取商品
+ var $this = $offcanvas_config_goods.find('button[type="submit"]');
+ var url = $offcanvas_config_goods.data('data-url');
+ $this.button('loading');
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: {
+ "data_type": data.goods_data_type,
+ "goods_ids": goods_ids,
+ "category_id": category_id,
+ "order_by_type": data.goods_order_by_type || 0,
+ "order_by_rule": data.goods_order_by_rule || 0,
+ "order_limit_number": data.goods_order_limit_number || 10
+ },
+ dataType: 'json',
+ success:function(res)
+ {
+ $this.button('reset');
+ if(res['code'] == 0)
+ {
+ if((res.data || null) != null && res.data.length > 0)
+ {
+ // 列表数据
+ var list = res.data;
+
+ // 列表展示数量
+ var sm = data.view_list_number_sm || 2;
+ var md = data.view_list_number_md || 5;
+ var lg = data.view_list_number_lg || 5;
+
+ // 外边距
+ var margin = data.style_margin || 0;
+
+ // 内容样式处理
+ var style = StyleBaseHandle(data, 'style_module_');
+
+ // 商品样式处理
+ var rules = {
+ "margin": {
+ "value": "{var}px 0 0 {var}px",
+ "var": "{var}"
+ }
+ };
+ var item_style = StyleBaseHandle(data, 'style_', rules);
+
+ // 图片固定
+ var media_fixed = MediaFixedHandle(data);
+
+ // 模块容器设置
+ var $doc = $(doc);
+
+ // 数据项html
+ var item_html = '';
+ for(var i in list)
+ {
+ item_html += '
';
+ item_html += '';
+ item_html += '
';
+ item_html += ' ';
+ item_html += ' ';
+ item_html += '
';
+ item_html += '
';
+ item_html += '
'+__currency_symbol__+list[i]['price']+'
';
+ item_html += '
';
+ item_html += '
';
+ item_html += ' ';
+ }
+
+ // 商品容器
+ var html = '
';
+
+ // 初始化参数
+ var option = {};
+
+ // 展示模式
+ var nav_dot_ent = '';
+ var list_ent = '';
+ var show_style = data.view_list_show_style || 'routine';
+ switch(show_style)
+ {
+ // 滚动
+ case 'rolling' :
+ // 参数处理
+ var show_style_value = ViewRollingShowStyleValueHandle(data.view_list_show_style_value);
+
+ // 是否展示导航点
+ nav_dot_ent = show_style_value.is_nav_dot ? '' : 'slides-rolling-not-dot';
+
+ // html拼接
+ html += '
';
+ html += '
';
+ html += item_html;
+ html += ' ';
+ html += '
';
+
+ // 配置参数
+ option = {
+ itemWidth: show_style_value.item_width,
+ itemMargin: show_style_value.item_margin,
+ slideshow: show_style_value.is_auto_play,
+ controlNav: show_style_value.is_nav_dot
+ }
+ break;
+
+ // 常规、默认
+ default :
+ // 设置了外边距,则计算平均移动值
+ var avg = (margin > 0) ? 'module-list-content-avg-'+margin : '';
+
+ // 列表class
+ list_ent = avg+' module-list-sm-'+sm+' module-list-md-'+md+' module-list-lg-'+md+' ';
+
+ html += '
';
+ html += item_html;
+ html += ' ';
+ break;
+ }
+ html += '
';
+
+ // 固定商品则加入数据中,方便使用
+ if(data.goods_data_type == 'goods')
+ {
+ data['data_list'] = list;
+ }
+
+ // 模块容器设置
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "item_style": item_style,
+ "nav_dot_ent": nav_dot_ent,
+ "list_ent": list_ent,
+ "media_fixed": media_fixed
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+
+ // 组件参数
+ if(JSON.stringify(option) !== '{}')
+ {
+ $doc.find('.am-slider').flexslider(option);
+ }
+
+ // 关闭商品窗口
+ $offcanvas_config_goods.offCanvas('close');
+ } else {
+ Prompt('商品信息为空');
+ }
+ } else {
+ Prompt(res.msg);
+ }
+ },
+ error:function(res)
+ {
+ $this.button('reset');
+ var msg = HtmlToString(xhr.responseText) || '异常错误';
+ Prompt(msg, null, 30);
+ }
+ });
+}
+
+/**
+ * 模块-标题处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigTitleHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_title.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 视频
+ if((data.content_title || null) == null)
+ {
+ Prompt('请填写主标题');
+ return false;
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // 主标题样式
+ var style_title_main = StyleBaseHandle(data, 'style_title_');
+
+ // 副标题样式
+ var style_title_vice = StyleBaseHandle(data, 'style_title_vice_');
+
+ // 右侧按钮样式
+ var style_title_more = StyleBaseHandle(data, 'style_title_more_');
+
+ // html拼接
+ var html = '
';
+ html += '
';
+ html += '
'+data.content_title+' ';
+
+ // 副标题
+ if((data.content_title_vice || null) != null)
+ {
+ html += '
'+data.content_title_vice+' ';
+ }
+
+ // 关键字
+ var field_first = 'content_item_keywords_';
+ var field_first_length = field_first.length;
+ var key_temp = [];
+ var keywords_list = [];
+ for(var i in data)
+ {
+ if(i.substr(0, field_first_length) == field_first)
+ {
+ keywords_list.push(JSON.parse(decodeURIComponent(data[i])));
+ delete data[i];
+ }
+ }
+ if(keywords_list.length > 0)
+ {
+ html += '
';
+ for(var i in keywords_list)
+ {
+ var kt_item_style = ((keywords_list[i]['style_keywords_color'] || null) == null) ? '' : 'color:'+keywords_list[i]['style_keywords_color']+';';
+ html += '
'+keywords_list[i]['content_keywords']+' ';
+ }
+ html += '
';
+ }
+ data['keywords_list'] = keywords_list;
+
+
+ // 右侧按钮
+ if((data.content_title_more || null) != null)
+ {
+ html += '
';
+ }
+ html += '
';
+ html += '
';
+
+ // 模块容器设置
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style,
+ "style_title_main": style_title_main,
+ "style_title_vice": style_title_vice,
+ "style_title_more": style_title_more
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_config_title.offCanvas('close');
+}
+
+/**
+ * 模块-辅助线处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigBorderHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_border.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 边线类型、和大小
+ if((data.style_border_style || null) == null)
+ {
+ Prompt('请选择边线类型');
+ return false;
+ }
+ if((data.style_border_width || null) == null)
+ {
+ Prompt('请输入边线、最大10的数字');
+ return false;
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // html拼接
+ var html = '
';
+
+ // 模块容器设置
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_config_border.offCanvas('close');
+}
+
+/**
+ * 模块-辅助空白处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleConfigHeightHandle(data)
+{
+ // 基础信息
+ var doc = $offcanvas_config_height.attr('data-doc') || null;
+ if(doc == null)
+ {
+ Prompt('模块标记有误');
+ return false;
+ }
+
+ // 高度
+ if((data.style_height || null) == null)
+ {
+ Prompt('请输入高度、最大100的数字');
+ return false;
+ }
+
+ // 样式处理
+ var style = StyleBaseHandle(data, 'style_');
+
+ // html拼接
+ var html = '
';
+
+ // 模块容器设置
+ var $doc = $(doc);
+ $doc.html(html);
+
+ // 数据加入配置
+ data['frontend_config'] = {
+ "style": style
+ }
+ $doc.attr('data-json', encodeURIComponent(JSON.stringify(data)));
+ $offcanvas_config_height.offCanvas('close');
+}
+
+/**
+ * 模块-滚动配置处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleModalRollingConfigHandle(data)
+{
+ $base_show_style_value_obj.val(encodeURIComponent(JSON.stringify(data)));
+ $modal_rolling_config.modal('close');
+}
+
+/**
+ * 模块-列表配置处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleModalListConfigHandle(data)
+{
+ $base_show_style_value_obj.val(encodeURIComponent(JSON.stringify(data)));
+ $modal_list_config.modal('close');
+}
+
+/**
+ * 模块-标题-关键字处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModuleModalTitleKeywordsHandle(data)
+{
+ // 操作类型
+ var type = parseInt($modal_title_keywords.attr('data-opt-type') || 0);
+
+ // 获取设置的数据、关键字名称必填
+ if((data.content_keywords || null) == null)
+ {
+ $modal_title_keywords.find('input[name="content_keywords"]').focus();
+ Prompt('请填写关键字');
+ return false;
+ }
+
+ // 生成数据项
+ var params = {
+ "content_keywords": data.content_keywords,
+ "style_keywords_color": data.style_keywords_color || '',
+ "content_to_type": data.content_to_type || '',
+ "content_to_name": data.content_to_name || '',
+ "content_to_value": data.content_to_value || ''
+ };
+ var html = ModuleConfigTitleKeywordsContentHtml(params);
+ // 0添加、1编辑
+ if(type == 0)
+ {
+ $offcanvas_config_title.find('.config-title-container').append(html);
+ } else {
+ $base_title_keywords_obj.prop('outerHTML', html);
+ }
+ $modal_title_keywords.modal('close');
+}
+
+/**
+ * 模块-弹窗搜索选择回调处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-04
+ * @desc description
+ * @param {[object]} data [表单数据]
+ */
+function FormBackModulePopupGoodsSearchHandle(data)
+{
+ // 参数配置
+ var type = $popup_goods_search.find('.am-tabs-nav li.am-active a').data('value');
+ var $vb = $popup_goods_search.find('.form-container-'+type);
+ var params = {
+ "type": type,
+ "value": ""
+ };
+ switch(type)
+ {
+ // 商品分类
+ case 'category' :
+ var json = $vb.find('.already-select-tips').attr('data-value') || null;
+ if(json != null)
+ {
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+ if(json == null)
+ {
+ Prompt('请先选择商品分类');
+ return false;
+ }
+ params['value'] = json;
+ break;
+
+ // 品牌
+ case 'brand' :
+ var $vbs = $vb.find('ul li.active a');
+ if($vbs.length <= 0)
+ {
+ Prompt('请先选择品牌');
+ return false;
+ }
+ params['value'] = {
+ "id": $vbs.data('value'),
+ "name": $vbs.find('span').text()
+ };
+ break;
+
+ // 关键字
+ case 'keywords' :
+ var value = $vb.find('input').val() || '';
+ if(value == '')
+ {
+ $vb.find('input').focus();
+ Prompt('请先输入关键字1~30个字符');
+ return false;
+ }
+ // 输入关键字去除引号
+ params['value'] = value.replace(new RegExp('"', 'g'), '').replace(new RegExp("'", 'g'), '');
+ break;
+
+ // 默认
+ default :
+ Prompt('类型未处理['+type+']');
+ return false;
+ }
+
+ // 数据赋值并关闭弹窗
+ var show_name = ModuleConfigGoodsSearchPageShowName(params);
+ var $page = $modal_pages_select.find('.am-tabs-bd ul li.page-goods_search a');
+ $page.find('span').text($page.data('name')+'('+show_name+')');
+ $page.attr('data-json', encodeURIComponent(JSON.stringify(params)));
+ $popup_goods_search.modal('close');
+}
+
+/**
+ * 模块-图片链接地址生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[string]} name [显示名称]
+ */
+function ModuleConfigImagesToContentHtml(name)
+{
+ // 无数据
+ if((name || null) == null)
+ {
+ return '
请选择跳转链接 ';
+ }
+
+ // 有数据
+ var html = '
';
+ html += ''+name+' ';
+ html += ' ';
+ html += ' ';
+ html += '
修改 ';
+ return html;
+}
+
+/**
+ * 模块-商品分类地址生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[string]} name [显示名称]
+ */
+function ModuleConfigGoodsCategoryContentHtml(name)
+{
+ // 无数据
+ if((name || null) == null)
+ {
+ return '
请选择商品分类 ';
+ }
+
+ // 设置数据
+ var html = '
';
+ html += ''+name+' ';
+ html += ' ';
+ html += ' ';
+ html += '
修改 ';
+ return html;
+}
+
+/**
+ * 模块-商品信息生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[object]} data [商品列表]
+ */
+function ModuleConfigGoodsItemContentHtml(data)
+{
+ var html = '';
+ if((data || null) != null && data.length > 0)
+ {
+ for(var i in data)
+ {
+ html += '
';
+ html += ' ';
+ html += '';
+ html += ' ';
+ html += ' ';
+ html += ' ';
+ }
+ }
+ return html;
+}
+
+/**
+ * 模块-多图信息生成
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-18
+ * @desc description
+ * @param {[string]} images [图片地址]
+ * @param {[string]} type [类型]
+ * @param {[string]} name [名称]
+ * @param {[string]} value [数据值]
+ */
+function ModuleConfigManyImagesItemContentHtml(images, type, name, value)
+{
+ var index = parseInt(Math.random()*1000001);
+ var html = '
';
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
+ return html;
+}
+
+/**
+ * 模块-标题关键字
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-12
+ * @desc description
+ * @param {[object]} data [关键字数据项配置]
+ */
+function ModuleConfigTitleKeywordsContentHtml(data)
+{
+ var index = parseInt(Math.random()*1000001);
+ var html = '
';
+ html += ' ';
+ html += ''+(data.content_keywords || '')+' ';
+ html += ' ';
+ html += ' ';
+ html += ' ';
+ return html;
+}
+
+/**
+ * 模块-标题关键字打开弹窗
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-12
+ * @desc description
+ * @param {[int]} type [操作类型(0添加、 1编辑)]
+ * @param {[object]} data [关键字数据项配置]
+ */
+function ModuleConfigTitleKeywordsOpen(type, data)
+{
+ // 数据处理
+ if((data || null) != null)
+ {
+ data = JSON.parse(decodeURIComponent(data)) || null;
+ }
+ if((data || null) == null)
+ {
+ data = {
+ "content_keywords" : "",
+ "style_keywords_color" : "",
+ "content_to_name" : "",
+ "content_to_type" : "",
+ "content_to_value" : ""
+ };
+ }
+
+ // 表单数据赋值
+ FormDataFill(data, '#modal-module-title-keywords');
+
+ // 链接地址
+ $modal_title_keywords.find('.form-view-choice-container-content').html(ModuleConfigImagesToContentHtml(data.content_to_name));
+
+ // 关键字颜色
+ var color = data.style_keywords_color || '';
+ $modal_title_keywords.find('.module-style-color_keywords').css({"background-color":color, "border-color":color, "color":color});
+
+ // 开启标题关键字配置弹窗
+ $modal_title_keywords.modal({
+ width: 260,
+ height: 210,
+ closeViaDimmer: false
+ });
+ $modal_title_keywords.attr('data-opt-type', type || 0);
+}
+
+/**
+ * 模块商品搜索-页面展示名称
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-05-20
+ * @desc description
+ * @param {[string]} data -> type [类型]
+ * @param {[string|object]} data -> value [选择的数据值]
+ */
+function ModuleConfigGoodsSearchPageShowName(data)
+{
+ var name = '';
+ if((data || null) != null && (data.type || null) != null && (data.value || null) != null)
+ {
+ var value = data['value'];
+ switch(data.type)
+ {
+ // 商品分类
+ case 'category' :
+ name = '商品分类-'+value[value.length-1]['name'];
+ break;
+
+ // 品牌
+ case 'brand' :
+ name = '品牌-'+value['name'];
+ break;
+
+ // 关键字
+ case 'keywords' :
+ name = '关键字-'+value;
+ break;
+ }
+ }
+ return name;
+}
+
+/**
+ * 左侧商品配置商品id
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-06
+ * @desc description
+ */
+function OffcanvasModuleConfigGoodsIds()
+{
+ return $('#offcanvas-module-config-goods input[name="goods_ids"]').val() || '';
+}
+
+/**
+ * 滚动数据参数处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-12
+ * @desc description
+ * @param {[object]} data [配置数据]
+ */
+function ViewRollingShowStyleValueHandle(data)
+{
+ // 数据处理
+ var value = ((data || null) == null) ? {} : (JSON.parse(decodeURIComponent(data)) || {});
+
+ // 宽度
+ value['item_width'] = parseInt(value['item_width'] || 200);
+
+ // 外边距
+ value['item_margin'] = parseInt(value['item_margin'] || 0);
+
+ // 是否自动播放
+ value['is_auto_play'] = ((value.is_auto_play || 0) == 0) ? false : true;
+
+ // 是否展示导航点
+ value['is_nav_dot'] = ((value.is_nav_dot || 0) == 0) ? false : true;
+
+ return value;
+}
+
+/**
+ * 列表数据参数处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-12
+ * @desc description
+ * @param {[object]} data [配置数据]
+ */
+function ViewListShowStyleValueHandle(data)
+{
+ // 数据处理
+ var value = ((data || null) == null) ? {} : (JSON.parse(decodeURIComponent(data)) || {});
+
+ // 小屏
+ value['view_list_number_sm'] = parseInt(value['view_list_number_sm'] || 2);
+
+ // 中屏
+ value['view_list_number_md'] = parseInt(value['view_list_number_md'] || 5);
+
+ // 大屏
+ value['view_list_number_lg'] = parseInt(value['view_list_number_lg'] || 5);
+
+ // 外边距
+ value['style_margin'] = parseInt(value['style_margin'] || 0);
+
+ return value;
+}
+
+/**
+ * 左侧配置 - 页面选择
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-10
+ * @desc description
+ * @param {[object]} obj [当前对象]
+ * @param {[object]} event [事件]
+ */
+function OffcanvasConfigPagesChoice(obj, event)
+{
+ // 当前选择页面的链接位置对象
+ $page_parent_obj = obj.parent();
+
+ // 获取已选择的数据
+ var $parent = $page_parent_obj.parents('.form-view-choice-container');
+ var key = $parent.data('key') || null;
+ var index = (key == null) ? '' : '_'+key;
+ var to_type = $parent.find('input[name="content_to_type'+index+'"]').val() || null;
+ var to_name = $parent.find('input[name="content_to_name'+index+'"]').val() || null;
+ var to_value = $parent.find('input[name="content_to_value'+index+'"]').val() || null;
+
+ // 所有处理
+ $modal_pages_select.find('.am-tabs-bd ul li').each(function(k, v)
+ {
+ $(this).removeClass('active');
+ $(this).find('a span').text($(this).find('a').data('name'));
+ });
+ $modal_pages_select.find('.am-tabs-bd ul li').removeClass('active');
+ $modal_pages_select.find('.am-tabs-bd ul li a').attr('data-json', '');
+
+ // 当前选中的数据
+ var $active_obj = $modal_pages_select.find('.am-tabs-bd ul li.page-'+to_type);
+ $active_obj.addClass('active');
+ $active_obj.find('a span').text(to_name);
+ $active_obj.find('a').attr('data-json', to_value);
+
+ // tab切换
+ var index = $active_obj.parents('.am-tab-panel').index();
+ if(index == -1)
+ {
+ index = 0;
+ }
+ $modal_pages_select.find('.am-tabs-nav li').removeClass('am-active');
+ $modal_pages_select.find('.am-tabs-nav li').eq(index).addClass('am-active');
+ $modal_pages_select.find('.am-tabs-bd .am-tab-panel').removeClass('am-active');
+ $modal_pages_select.find('.am-tabs-bd .am-tab-panel').eq(index).addClass('am-active');
+
+ // 开启页面选择弹窗
+ $modal_pages_select.modal({
+ width: 300,
+ height: 332,
+ closeViaDimmer: false
+ });
+}
+
+/**
+ * 左侧配置 - 页面移除
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-10
+ * @desc description
+ * @param {[object]} obj [当前对象]
+ * @param {[object]} event [事件]
+ */
+function OffcanvasConfigPagesRemove(obj, event)
+{
+ var $parent = obj.parents('.form-view-choice-container');
+ var $content = $parent.find('.form-view-choice-container-content');
+ var key = $parent.data('key') || null;
+ var index = (key == null) ? '' : '_'+key;
+ $content.html(ModuleConfigImagesToContentHtml());
+ $parent.find('input[name="content_to_type'+index+'"]').val('');
+ $parent.find('input[name="content_to_name'+index+'"]').val('');
+ $parent.find('input[name="content_to_value'+index+'"]').val('');
+ event.stopPropagation();
+}
+
+/**
+ * 模块背景色组件处理
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-09
+ * @desc description
+ * @param {[object]} e [模块对象]
+ */
+function ModuleColorpickerHandle(e)
+{
+ e.find('.colorpicker-submit').each(function(k ,v)
+ {
+ var color = $(this).prev().val() || '';
+ var style = $(this).data('color-style') || null;
+ if(style != null)
+ {
+ var arr = style.split('|');
+ for(var i in arr)
+ {
+ $(this).css(arr[i], color);
+ }
+ }
+ });
+}
+
+/**
+ * 布局页面配置获取
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-16
+ * @desc description
+ */
+function LayoutViewConfig()
+{
+ // 循环读取布局
+ var data = [];
+ $('.layout-container .layout-view').each(function(k, v)
+ {
+ // 布局数据
+ var json = $(this).find('.layout-content-children').attr('data-json') || null;
+ var layout_temp = {
+ "value": $(this).data('value').toString(),
+ "status": ($(this).find('.layout-content-submit input[type="checkbox"]:checked').val() == 'on') ? 1 : 0,
+ "config": (json == null) ? {} : JSON.parse(decodeURIComponent(json)),
+ "children": []
+ };
+
+ // 模块容器
+ $(this).find('.layout-content-container').each(function(ks, vs)
+ {
+ // 容器数据
+ var json = $(this).attr('data-json') || null;
+ var content_temp = {
+ "config": (json == null) ? {} : JSON.parse(decodeURIComponent(json)),
+ "children": []
+ };
+
+ // 模块
+ $(this).find('.layout-content .module-view').each(function(kss, vss)
+ {
+ // 模块数据
+ var json = $(this).find('.module-content').attr('data-json') || null;
+ var value = $(this).find('.module-view-submit-container').data('value');
+ var module_config = {
+ "value": value,
+ "name": layout_module_type_arr[value],
+ "config": (json == null) ? {} : JSON.parse(decodeURIComponent(json))
+ };
+ // 商品模块移除商品列表
+ if(value == 'goods')
+ {
+ delete module_config.config.data_list;
+ }
+ content_temp.children.push(module_config);
+ });
+
+ // 容器加入布局
+ layout_temp.children.push(content_temp);
+ });
+
+ // 加入数据列表
+ data.push(layout_temp);
+ });
+ return data;
+}
+
+/**
+ * 状态切换组件初始化
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2021-06-18
+ * @desc description
+ */
+function LayoutSwitchInit()
+{
+ $('.layout-view .switch-checkbox').bootstrapSwitch({
+ onSwitchChange: function(event, state)
+ {
+ if(state === true)
+ {
+ $(this).parents('.layout-view').removeClass('layout-view-hidden');
+ } else {
+ $(this).parents('.layout-view').addClass('layout-view-hidden');
+ }
+ }
+ });
+}
+
+
+$(function()
+{
+ // 布局拖拽
+ $('.layout-container').dragsort({
+ dragSelector: '.drag-submit',
+ placeHolderTemplate: '
'
+ });
+
+ // 模块拖拽
+ ModuleDragSortInit();
+
+ // 开关初始化
+ LayoutSwitchInit();
+
+ // 布局/模块切换事件
+ $('.renovation-tabs .am-tabs-nav a').on('click', function()
+ {
+ $(this).parent('li').addClass('am-active').siblings('li').removeClass('am-active');
+ $('.renovation-tabs .am-tabs-bd .renovation-panel').addClass('am-hide');
+ $($(this).attr('href')).removeClass('am-hide');
+ });
+
+ // 布局拖放
+ $(document).on('dragstart', '.structure-drag button', function(e)
+ {
+ // 布局配置
+ var drag_value = $(this).data('value');
+
+ // 拖拽过程中经过的元素
+ $(document).on('dragenter', '.layout-view, .layout-container-tips', function(e)
+ {
+ // 当前是否在布局模式下操作
+ if($('.renovation-tabs .am-tabs-nav li.am-active').data('value') == 'structure')
+ {
+ $('.layout-view, .layout-container-tips').removeClass('layout-view-dragenter');
+ $(this).addClass('layout-view-dragenter');
+ }
+ });
+ // 拖拽离开元素移除过程中添加的样式
+ $(document).on('dragleave', '.structure-drag button', function(e)
+ {
+ $('.layout-view,.layout-container-tips').removeClass('layout-view-dragenter');
+ });
+ // 拖拽结束
+ $(document).on('dragend', '.structure-drag button', function(e)
+ {
+ // 移除过程中添加的样式
+ $('.layout-view,.layout-container-tips').removeClass('layout-view-dragenter');
+
+ // 关闭事件
+ $('.layout-view, .layout-container-tips').off('dragover');
+ $('.layout-view, .layout-container-tips').off('dragenter');
+ $('.layout-view, .layout-container-tips').off('drop');
+ });
+ // 拖拽过程中一直在元素内、并阻止默认事件
+ $(document).on('dragover', '.layout-container', function(e)
+ {
+ e.preventDefault();
+ e.stopPropagation();
+ });
+
+ // 拖放接收事件
+ $('.layout-view, .layout-container-tips').on('drop', function(e)
+ {
+ // 添加布局
+ $(this).before(StructureDragHtmlCreate(drag_value));
+
+ // 容器设置弹出框提示初始化
+ $('.layout-content-submit-set').popover({
+ content: '容器设置',
+ trigger: 'hover focus',
+ theme: 'sm'
+ });
+
+ // 新的元素新增样式
+ var $new = $(this).prev();
+ $new.addClass('layout-view-new');
+ setTimeout(function() {
+ $new.removeClass('layout-view-new');
+ }, 1500);
+
+ // 模块拖拽
+ ModuleDragSortInit($new.find('.layout-content'));
+
+ // 关闭事件
+ $('.layout-view, .layout-container-tips').off('dragover');
+ $('.layout-view, .layout-container-tips').off('dragenter');
+ $('.layout-view, .layout-container-tips').off('drop');
+
+ // 开关初始化
+ LayoutSwitchInit();
+
+ // 移除布局提示
+ $('.layout-container-tips').remove();
+ });
+ });
+
+ // 布局设置
+ $(document).on('click', '.layout-submit-set', function()
+ {
+ // 布局对象
+ $layout_content_obj = $(this).parents('.layout-content-submit').next();
+
+ // 配置数据
+ var config_doc = '#offcanvas-layout-config';
+ var json = $layout_content_obj.attr('data-json') || null;
+ if(json != null)
+ {
+ // 数据解析
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+ // 获取表单字段并赋空值
+ if((json || null) == null)
+ {
+ json = GetFormVal(config_doc, true);
+ for(var i in json)
+ {
+ json[i] = '';
+ }
+ }
+ FormDataFill(json, config_doc);
+
+ // 背景色组件处理
+ ModuleColorpickerHandle($offcanvas_layout_config);
+
+ // 指定操作类型
+ $offcanvas_layout_config.attr('data-ent', 'layout-content-children');
+
+ // 打开配置
+ $offcanvas_layout_config.offCanvas('open');
+ });
+
+ // 布局移除
+ $(document).on('click', '.layout-submit-del', function()
+ {
+ var $this = $(this);
+ AMUI.dialog.confirm({
+ title: '温馨提示',
+ content: '移除后不可恢复、确定继续吗?',
+ onConfirm: function(e)
+ {
+ // 移除布局
+ $this.parents('.layout-view').remove();
+
+ // 无布局则添加提示信息
+ if($('.layout-container .layout-view').length <= 0)
+ {
+ $('.layout-container').html('
布局拖放到该区域松开鼠标即可
');
+ }
+ }
+ });
+ });
+
+ // 容器设置
+ $(document).on('click', '.layout-content-submit-set', function()
+ {
+ // 容器内容对象
+ $layout_content_obj = $(this).parents('.layout-content-container');
+
+ // 配置数据
+ var config_doc = '#offcanvas-layout-config';
+ var json = $layout_content_obj.attr('data-json') || null;
+ if(json != null)
+ {
+ // 数据解析
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+ // 获取表单字段并赋空值
+ if((json || null) == null)
+ {
+ json = GetFormVal(config_doc, true);
+ for(var i in json)
+ {
+ json[i] = '';
+ }
+ }
+ FormDataFill(json, config_doc);
+
+ // 背景色组件处理
+ ModuleColorpickerHandle($offcanvas_layout_config);
+
+ // 指定操作类型
+ $offcanvas_layout_config.attr('data-ent', 'layout-content-container');
+
+ // 打开配置
+ $offcanvas_layout_config.offCanvas('open');
+ });
+
+ // 模块拖放
+ $(document).on('dragstart', '.renovation-drag button', function(e)
+ {
+ // 布局配置
+ var drag_value = $(this).data('value');
+
+ // 拖拽过程中经过的元素
+ $(document).on('dragenter', '.layout-content', function(e)
+ {
+ // 当前是否在布局模式下操作
+ if($('.renovation-tabs .am-tabs-nav li.am-active').data('value') == 'module')
+ {
+ $('.layout-content').removeClass('layout-content-dragenter');
+ if(!$(this).hasClass('.layout-content-tips'))
+ {
+ $(this).addClass('layout-content-dragenter');
+ }
+ }
+ });
+ // 拖拽离开元素移除过程中添加的样式
+ $(document).on('dragleave', '.renovation-drag button', function(e)
+ {
+ $('.layout-content').removeClass('layout-content-dragenter');
+ });
+ // 拖拽结束
+ $(document).on('dragend', '.renovation-drag button', function(e)
+ {
+ // 移除过程中添加的样式
+ $('.layout-content').removeClass('layout-content-dragenter');
+
+ // 关闭事件
+ $('.layout-content').off('dragover');
+ $('.layout-content').off('dragenter');
+ $('.layout-content').off('drop');
+ });
+
+ // 拖拽过程中一直在元素内、并阻止默认事件
+ $(document).on('dragover', '.layout-content', function(event)
+ {
+ event.preventDefault();
+ event.stopPropagation();
+ });
+
+ // 拖放接收事件
+ $('.layout-content').on('drop', function(e)
+ {
+ // 生成模块html
+ var html = RenovationModuleDragHtmlCreate(drag_value);
+ if(html != false)
+ {
+ // 添加模块
+ $(this).find('.layout-content-tips').remove();
+ $(this).append(html);
+
+ // 模块弹出框提示初始化
+ $('.module-view-submit-drag').popover({
+ content: '拖拽排序',
+ trigger: 'hover focus',
+ theme: 'sm'
+ });
+ $('.module-view-submit-set').popover({
+ content: '模块设置',
+ trigger: 'hover focus',
+ theme: 'sm'
+ });
+ $('.module-view-submit-del').popover({
+ content: '模块移除',
+ trigger: 'hover focus',
+ theme: 'sm'
+ });
+ }
+
+ // 关闭事件
+ $('.layout-content').off('dragover');
+ $('.layout-content').off('dragenter');
+ $('.layout-content').off('drop');
+ });
+ });
+
+ // 模块移除
+ $(document).on('click', '.module-view-submit-del', function()
+ {
+ var $this = $(this);
+ AMUI.dialog.confirm({
+ title: '温馨提示',
+ content: '移除后不可恢复、确定继续吗?',
+ onConfirm: function(e)
+ {
+ // 模块容器
+ var $module_view = $this.parents('.layout-content');
+
+ // 移除模块
+ $this.parents('.module-view').remove();
+
+ // 无模块则添加提示信息
+ if($module_view.find('.module-view').length <= 0)
+ {
+ $module_view.html('
模块内容区域
');
+ }
+ }
+ });
+ });
+
+ // 模块设置
+ $(document).on('click', '.module-view-submit-set', function()
+ {
+ // 基础
+ var $parent = $(this).parents('.module-view-submit-container');
+ var value = $parent.data('value') || null;
+ var index = $parent.data('index') || null;
+ var doc = $parent.data('doc') || null;
+ if(value == null || index == null || doc == null)
+ {
+ Prompt('模块属性有误');
+ return false;
+ }
+
+ // 公共数据
+ var json = $(doc).attr('data-json') || null;
+ if(json != null)
+ {
+ // 数据解析
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+
+ // 配置模块
+ var config_doc = '#offcanvas-module-config-'+value;
+ var $config = $(config_doc);
+ $config.attr('data-value', value);
+ $config.attr('data-index', index);
+ $config.attr('data-doc', doc);
+
+ // 获取表单字段并赋空值
+ if((json || null) == null)
+ {
+ var fields_dv = {
+ "goods_order_by_type": 0,
+ "goods_order_by_rule": 0,
+ "view_list_show_style": 0,
+ "view_list_number_sm": 2,
+ "view_list_number_md": 5,
+ "view_list_number_lg": 5,
+ "goods_data_type": "goods"
+ };
+ json = GetFormVal(config_doc, true);
+ for(var i in json)
+ {
+ json[i] = (fields_dv[i] == undefined) ? '' : fields_dv[i];
+ }
+ }
+
+ // 展示模式默认值处理、默认常规模式
+ if(json.view_list_show_style != undefined && (json.view_list_show_style || null) == null)
+ {
+ json['view_list_show_style'] = 'routine';
+ }
+
+ // 根据模块类型处理
+ switch(value)
+ {
+ // 图片模块
+ case 'images' :
+ // 图片处理
+ var default_images = $config.data('default-images');
+ var html = '
';
+ html += ' ';
+ html += ' ';
+ html += ' ';
+ $config.find('ul.module-images-type-images-view').html(html);
+
+ // 链接地址处理
+ $config.find('.form-view-choice-container-content').html(ModuleConfigImagesToContentHtml(json.content_to_name || ''));
+ break;
+
+ // 多图
+ case 'many-images' :
+ // 多图图片
+ var html = '';
+ if((json.data_list || null) != null && json.data_list.length > 0)
+ {
+ for(var i in json.data_list)
+ {
+ html += ModuleConfigManyImagesItemContentHtml(json.data_list[i]['images'], json.data_list[i]['type'], json.data_list[i]['name'], json.data_list[i]['value']);
+ }
+ }
+ $config.find('.config-many-images-container').html(html);
+ break;
+
+ // 视频
+ case 'video' :
+ // 视频地址
+ $config.find('.module-video-type-view-video video').attr('src', json.content_video || '');
+
+ // 封面图片
+ var html = '';
+ if((json.content_images || null) != null)
+ {
+ html += '
';
+ html += ' ';
+ html += '× ';
+ html += ' ';
+ }
+ $config.find('.module-video-type-view-images').html(html);
+ break;
+
+ // 商品模块
+ case 'goods' :
+ var goods_data_type = json.goods_data_type || 'goods';
+ switch(goods_data_type)
+ {
+ // 商品
+ case 'goods' :
+ $config.find('.config-goods-list').html(ModuleConfigGoodsItemContentHtml(json.data_list));
+
+ // 清空分类选择
+ $config.find('.offcanvas-config-goods-category-container .form-view-choice-container-content').html(ModuleConfigGoodsCategoryContentHtml());
+ $config.find('input[name="goods_category_value"]').val('');
+ break;
+
+ // 商品分类
+ case 'category' :
+ var category = ((json.goods_category_value || null) == null) ? null : JSON.parse(decodeURIComponent(json.goods_category_value)) || null;
+ var name = (category == null || category.length <= 0) ? '' : category[category.length-1]['name'];
+ var html = ModuleConfigGoodsCategoryContentHtml(name);
+ $config.find('.offcanvas-config-goods-category-container .form-view-choice-container-content').html(html);
+
+ // 清空商品列表
+ $config.find('.config-goods-list').html('');
+ $config.find('input[name="goods_ids"]').val('');
+ break;
+
+ // 未定义
+ default :
+ console.info('模块组件未定义['+goods_data_type+']')
+ }
+
+ // tab处理
+ var index = 0;
+ $config.find('.am-tabs-nav li').each(function(k, v)
+ {
+ if($(this).find('a').data('value') == goods_data_type)
+ {
+ index = k;
+ }
+ });
+ $config.find('.am-tabs-nav li').removeClass('am-active');
+ $config.find('.am-tabs-nav li').eq(index).addClass('am-active');
+ $config.find('.am-tabs-bd .am-tab-panel').removeClass('am-active');
+ $config.find('.am-tabs-bd .am-tab-panel').eq(index).addClass('am-active');
+ break;
+
+ // 标题
+ case 'title' :
+ // 关键字
+ var html = '';
+ if((json.keywords_list || null) != null && json.keywords_list.length > 0)
+ {
+ for(var i in json.keywords_list)
+ {
+ html += ModuleConfigTitleKeywordsContentHtml(json.keywords_list[i]);
+ }
+ }
+ $config.find('.config-title-container').html(html);
+
+ // 链接地址处理
+ $config.find('.form-view-choice-container-content').html(ModuleConfigImagesToContentHtml(json.content_to_name || ''));
+ break;
+ }
+
+ // 表单数据赋值
+ FormDataFill(json, config_doc);
+
+ // 背景色组件处理
+ ModuleColorpickerHandle($config);
+
+ // 更新选择组件
+ $config.find('.chosen-select').trigger('chosen:updated');
+
+ // 打开弹窗
+ $config.offCanvas('open');
+ });
+
+ // 配置图片 - 选择页面事件
+ $offcanvas_config_images.on('click', '.form-view-choice-container-submit', function(e)
+ {
+ OffcanvasConfigPagesChoice($(this), e);
+ });
+
+ // 配置图片 - 选择页面 - 移除
+ $offcanvas_config_images.on('click', '.form-view-choice-container-active i.am-icon-close', function(e)
+ {
+ OffcanvasConfigPagesRemove($(this), e);
+ });
+
+ // 页面选择 tab 切换事件
+ $modal_pages_select.on('click', '.am-tabs-nav a', function()
+ {
+ // 所有处理
+ $modal_pages_select.find('.am-tabs-bd ul li').removeClass('active');
+ $modal_pages_select.find('.am-tabs-bd ul li a').attr('data-json', '');
+
+ // 名称还原
+ $modal_pages_select.find('.am-tabs-bd ul li').each(function(k, v)
+ {
+ var $o = $(this).find('a');
+ $o.attr('data-json', '');
+ $o.find('span').text($o.data('name'));
+ });
+ });
+
+ // 页面选择切换
+ $modal_pages_select.on('click', '.am-tabs-bd ul li a', function()
+ {
+ // 选中状态
+ $(this).parent().addClass('active').siblings().removeClass('active');
+
+ // 参数值
+ var value = $(this).data('value') || null;
+ var name = $(this).data('name') || null;
+ var json = $(this).attr('data-json') || null;
+ if(value == null || name == null)
+ {
+ Prompt('参数值有误');
+ return false;
+ }
+ if(json != null)
+ {
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+
+ // 根据类型处理
+ switch(value)
+ {
+ // 单一商品
+ case 'goods' :
+ // 初始化搜索数据
+ $('.goods-list-container ul.am-gallery').html('
请搜索商品
');
+ $('.goods-page-container').html(PageLibrary());
+
+ // 弹窗数据设置并打开
+ var goods_ids = (json == null || (json.id || null) == null) ? '' : json.id;
+ $popup_goods_select.attr('data-goods-ids', goods_ids);
+ $popup_goods_select.attr('data-type', 'single-goods');
+ $popup_goods_select.attr('data-is-single-choice', 1);
+ $popup_goods_select.modal({closeViaDimmer: false});
+ break;
+
+ // 搜索页面
+ case 'goods_search' :
+ var index = 0;
+ var type = 'category';
+ var value = null;
+ if(json != null && (json.type || null) != null && (json.value || null) != null)
+ {
+ // 基础参数
+ var arr = ['category', 'brand', 'keywords'];
+ index = arr.indexOf(json.type);
+ type = json.type;
+ value = json.value || null;
+ }
+
+ // tab导航和容器
+ $popup_goods_search.find('.am-tabs-nav li').removeClass('am-active');
+ $popup_goods_search.find('.am-tabs-nav li').eq(index).addClass('am-active');
+ $popup_goods_search.find('.am-tabs-bd .am-tab-panel').removeClass('am-active');
+ $popup_goods_search.find('.am-tabs-bd .am-tab-panel').eq(index).addClass('am-active');
+
+ // 数据处理
+ $popup_goods_search.find('.form-container-category').find('.goods-category-select-2, .goods-category-select-3').html('').addClass('am-hide');
+ $popup_goods_search.find('.form-container-category .already-select-tips').attr('data-value', '').addClass('am-hide').find('strong').text('');
+ $popup_goods_search.find('.goods-category-choice-content ul li.active').removeClass('active');
+ $popup_goods_search.find('.form-container-keywords input').val('');
+
+ // 数据选中
+ if(value != null)
+ {
+ switch(type)
+ {
+ // 商品分类
+ case 'category' :
+ for(var i in value)
+ {
+ var $gcs = $popup_goods_search.find('.form-container-category .goods-category-select-'+(parseInt(i)+1));
+ if($gcs.length > 0 && $gcs.find('li').length > 0)
+ {
+ $gcs.find('li').each(function(k, v)
+ {
+ if($(this).find('a').data('value') == value[i]['id'])
+ {
+ $(this).find('a').trigger('click');
+ }
+ });
+ }
+ }
+ break;
+
+ // 品牌
+ case 'brand' :
+ $popup_goods_search.find('.form-container-brand ul li').each(function(k, v)
+ {
+ if($(this).find('a').data('value') == value.id)
+ {
+ $(this).addClass('active');
+ }
+ });
+ break;
+
+ // 关键字
+ case 'keywords' :
+ $popup_goods_search.find('.form-container-keywords input').val(value);
+ break;
+ }
+ }
+
+ $popup_goods_search.modal({closeViaDimmer: false});
+ break;
+ }
+ });
+
+ // 页面选择确认事件
+ $modal_pages_select.on('click', '.pages-confirm-submit', function()
+ {
+ // 参数值
+ var $obj = $modal_pages_select.find('.am-tab-panel.am-active ul li.active a');
+ var to_type = $obj.data('value') || '';
+ var to_name = $obj.data('name') || '';
+ var to_value = $obj.attr('data-json') || '';
+ var json = null;
+ if(to_value != '')
+ {
+ json = JSON.parse(decodeURIComponent(to_value)) || null;
+ }
+ if(to_type == '' || to_name == '')
+ {
+ Prompt('请先选择页面');
+ return false;
+ }
+
+ // 根据类型处理
+ switch(to_type)
+ {
+ // 单一商品
+ case 'goods' :
+ if(json == null)
+ {
+ Prompt('请选择商品');
+ return false;
+ }
+
+ // 选择位置是否存在
+ if($page_parent_obj == null)
+ {
+ Prompt('请先选择链接位置');
+ return false;
+ }
+
+ // 显示名称
+ to_name += '('+json['title']+')';
+ break;
+
+ // 搜索页面
+ case 'goods_search' :
+ if(json == null)
+ {
+ Prompt('请先配置商品搜索');
+ return false;
+ }
+
+ // 显示名称
+ to_name += '('+ModuleConfigGoodsSearchPageShowName(json)+')';
+ break;
+ }
+
+ // 设置数据
+ var $parent = $page_parent_obj.parents('.form-view-choice-container');
+ var key = $parent.data('key') || null;
+ var index = (key == null) ? '' : '_'+key;
+ $parent.find('input[name="content_to_type'+index+'"]').val(to_type);
+ $parent.find('input[name="content_to_name'+index+'"]').val(to_name);
+ $parent.find('input[name="content_to_value'+index+'"]').val(to_value);
+ $page_parent_obj.html(ModuleConfigImagesToContentHtml(to_name));
+ $modal_pages_select.modal('close');
+ });
+
+ // 商品配置-选择商品和分类
+ $offcanvas_config_goods.on('click', '.form-view-choice-container-submit', function()
+ {
+ var value = $(this).parents('.form-view-choice-container').data('value');
+ switch(value)
+ {
+ // 商品
+ case 'goods' :
+ // 初始化搜索数据
+ $('.goods-list-container ul.am-gallery').html('
请搜索商品
');
+ $('.goods-page-container').html(PageLibrary());
+
+ // 弹窗数据设置并打开
+ var goods_ids = OffcanvasModuleConfigGoodsIds();
+ $popup_goods_select.attr('data-goods-ids', goods_ids);
+ $popup_goods_select.attr('data-type', 'list-goods');
+ $popup_goods_select.attr('data-is-single-choice', 0);
+ $popup_goods_select.modal({closeViaDimmer: false});
+ break;
+
+ // 商品分类
+ case 'category' :
+ // 分类数据
+ var json = $offcanvas_config_goods.find('.offcanvas-config-goods-category-container input[name="goods_category_value"]').val() || null;
+ if(json != null)
+ {
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+ if(json == null)
+ {
+ // 数据清空
+ $popup_goods_category.find('.form-container-category').find('.goods-category-select-2, .goods-category-select-3').html('').addClass('am-hide');
+ $popup_goods_category.find('.form-container-category .already-select-tips').attr('data-value', '').addClass('am-hide').find('strong').text('');
+ $popup_goods_category.find('.goods-category-choice-content ul li.active').removeClass('active');
+ } else {
+ // 生成选择的数据
+ for(var i in json)
+ {
+ var $gcs = $popup_goods_category.find('.form-container-category .goods-category-select-'+(parseInt(i)+1));
+ if($gcs.length > 0 && $gcs.find('li').length > 0)
+ {
+ $gcs.find('li').each(function(k, v)
+ {
+ if($(this).find('a').data('value') == json[i]['id'])
+ {
+ $(this).find('a').trigger('click');
+ }
+ });
+ }
+ }
+ }
+
+ $popup_goods_category.modal({closeViaDimmer: false});
+ break;
+
+ default :
+ Prompt('类型事件未定义['+value+']')
+ }
+ });
+
+ // 商品配置-商品选择-移除
+ $(document).on('click', '#offcanvas-module-config-goods .config-goods-list li a.am-close', function()
+ {
+ // 商品id处理
+ var value = $(this).parent().data('gid');
+ var goods_ids = $offcanvas_config_goods.find('input[name="goods_ids"]').val() || null;
+ if(goods_ids != null)
+ {
+ goods_ids = goods_ids.split(',');
+ for(var i in goods_ids)
+ {
+ if(goods_ids[i] == value)
+ {
+ goods_ids.splice(i, 1);
+ }
+ }
+ goods_ids = (goods_ids.length > 0) ? goods_ids.join(',') : '';
+ }
+ $offcanvas_config_goods.find('input[name="goods_ids"]').val(goods_ids || '');
+
+ // 移除元素
+ $(this).parent().remove();
+ });
+
+ // 商品配置-分类选择确认
+ $popup_goods_category.on('click', '.confirm-submit', function()
+ {
+ // 分类数据
+ var json = $popup_goods_category.find('.already-select-tips').attr('data-value') || null;
+ if(json != null)
+ {
+ json = JSON.parse(decodeURIComponent(json)) || null;
+ }
+ if(json == null)
+ {
+ Prompt('请先选择商品分类');
+ return false;
+ }
+
+ // 当前选择的节点
+ var data = json[json.length-1];
+ var html = ModuleConfigGoodsCategoryContentHtml(data.name);
+ var $offcanvas_category = $offcanvas_config_goods.find('.offcanvas-config-goods-category-container');
+ $offcanvas_category.find('.form-view-choice-container-content').html(html);
+ $offcanvas_category.find('input[name="goods_category_value"]').val(encodeURIComponent(JSON.stringify(json)));
+ $popup_goods_category.modal('close');
+ });
+
+ // 商品配置-分类选择确认-移除
+ $offcanvas_config_goods.on('click', '.offcanvas-config-goods-category-container .form-view-choice-container-active i.am-icon-close', function()
+ {
+ var $parent = $(this).parents('.form-view-choice-container-content');
+ $parent.html('
请选择商品分类 ');
+ $parent.parent().find('input[name="goods_category_value"]').val('');
+ return false;
+ });
+
+ // 商品配置-tab切换
+ $offcanvas_config_goods.on('click', '.am-tabs-nav a', function()
+ {
+ $offcanvas_config_goods.find('input[name="goods_data_type"]').val($(this).data('value') || 'goods');
+ });
+
+
+ // 商品搜索选择
+ // 分页
+ $('.goods-page-container').html(PageLibrary());
+
+ // 搜索商品
+ $(document).on('click', '.forth-selection-container .search-submit, .pagelibrary li a', function()
+ {
+ // 分页处理
+ var is_active = $(this).data('is-active') || 0;
+ if(is_active == 1)
+ {
+ return false;
+ }
+ var page = $(this).data('page') || 1;
+
+ // 请求参数
+ var url = $('.forth-selection-container').data('search-url');
+ var category_field = $('.forth-selection-container').find('input[name="category_field"]').val() || '';
+ var category_id = $('.forth-selection-form-category').val();
+ var keywords = $('.forth-selection-form-keywords').val();
+ var goods_ids = $popup_goods_select.attr('data-goods-ids') || '';
+
+ var $this = $(this);
+ $this.button('loading');
+ $('.goods-list-container ul.am-gallery').html('
'+($('.goods-list-container').data('loading-msg'))+'
');
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: {"page":page, "category_field":category_field, "category_id":category_id, "keywords":keywords, "goods_ids":goods_ids},
+ dataType: 'json',
+ success:function(res)
+ {
+ $this.button('reset');
+ if(res.code == 0)
+ {
+ $('.goods-list-container').attr('data-is-init', 0);
+ $('.goods-list-container ul.am-gallery').html(res.data.data);
+ $('.goods-page-container').html(PageLibrary(res.data.total, res.data.page_size, res.data.page, 4));
+ } else {
+ Prompt(res.msg);
+ $('.goods-list-container ul.am-gallery').html('
'+res.msg+'
');
+ }
+ },
+ error:function(res)
+ {
+ $this.button('reset');
+ var msg = HtmlToString(xhr.responseText) || '异常错误';
+ Prompt(msg, null, 30);
+ $('.goods-list-container ul.am-gallery').html('
'+msg+'
');
+ }
+ });
+ });
+
+ // 商品添加/删除
+ $(document).on('click', '.goods-list-container .goods-add-submit, .goods-list-container .goods-del-submit', function()
+ {
+ // 基础参数
+ var is_single_choice = parseInt($popup_goods_select.attr('data-is-single-choice')) || 0;
+ var goods_ids = $popup_goods_select.attr('data-goods-ids') || null;
+ goods_ids = (goods_ids == null) ? [] : goods_ids.split(',');
+
+ // 商品信息
+ var $this = $(this);
+ var type = $this.data('type');
+ var $parent = $this.parents('li');
+ var goods_id = $parent.data('gid');
+ var goods_title = $parent.data('title');
+ var goods_url = $parent.data('url');
+ var goods_img = $parent.data('img');
+
+ // 是否单选
+ if(is_single_choice == 1)
+ {
+ // 还原选项
+ $popup_goods_select.find('.goods-list-container li').each(function(k, v)
+ {
+ $(this).find('.icon-submit-container').html($(this).data('add-html'));
+ });
+
+ if(type == 'add')
+ {
+ goods_ids = [goods_id];
+ $parent.find('.icon-submit-container').html($parent.data('del-html'));
+ } else {
+ goods_ids = [];
+ }
+ } else {
+ // 商品是否已经添加
+ var index = goods_ids.indexOf(goods_id.toString());
+ if(index == -1)
+ {
+ goods_ids.push(goods_id);
+ } else {
+ goods_ids.splice(index, 1);
+ }
+ var icon_html = $parent.data((type == 'add' ? 'del' : 'add')+'-html');
+ $this.parent().html(icon_html);
+ }
+
+ // 选择的商品id赋值
+ $popup_goods_select.attr('data-goods-ids', goods_ids.join(','));
+ });
+
+ // 商品选择确认事件
+ $popup_goods_select.on('click', '.confirm-submit', function()
+ {
+ // 已选商品
+ var goods_ids = $popup_goods_select.attr('data-goods-ids') || null;
+ if(goods_ids == null)
+ {
+ Prompt('请先选择商品');
+ return false;
+ }
+
+ // 基础参数
+ var $this = $(this);
+ var url = $('.forth-selection-container').data('data-url');
+ var type = $popup_goods_select.attr('data-type') || null;
+ var is_single_choice = parseInt($popup_goods_select.attr('data-is-single-choice')) || 0;
+
+ // 获取商品
+ $this.button('loading');
+ $.ajax({
+ url: url,
+ type: 'post',
+ data: {"goods_ids":goods_ids},
+ dataType: 'json',
+ success:function(res)
+ {
+ $this.button('reset');
+ if(res['code'] == 0)
+ {
+ if((res.data || null) != null && res.data.length > 0)
+ {
+ // 根据类型处理不同业务逻辑
+ var data = res.data;
+ switch(type)
+ {
+ // 单一商品选择
+ case 'single-goods' :
+ var $single_goods = $modal_pages_select.find('.am-tabs-bd ul li.page-goods a');
+ $single_goods.find('span').text($single_goods.data('name')+'('+data[0]['title']+')');
+ $single_goods.attr('data-json', encodeURIComponent(JSON.stringify(data[0])));
+ break;
+
+ // 列表商品
+ case 'list-goods' :
+ // 商品id赋值
+ var goods_ids = data.map(function(e){return e.id;}).join(',');
+ $offcanvas_config_goods.find('input[name="goods_ids"]').val(goods_ids);
+
+ // html 接
+ $offcanvas_config_goods.find('.config-goods-list').html(ModuleConfigGoodsItemContentHtml(data));
+ break;
+ }
+
+ // 关闭商品窗口
+ $popup_goods_select.modal('close');
+
+ // 清空选择的商品id
+ $popup_goods_select.attr('data-goods-ids', '');
+ } else {
+ Prompt('商品信息为空');
+ }
+ } else {
+ Prompt(res.msg);
+ }
+ },
+ error:function(res)
+ {
+ $this.button('reset');
+ var msg = HtmlToString(xhr.responseText) || '异常错误';
+ Prompt(msg, null, 30);
+ }
+ });
+ });
+
+ // 商品搜索tab类型切换事件
+ $popup_goods_search.on('click', '.am-tabs-nav a', function()
+ {
+ $popup_goods_search.find('.form-container-category').find('.goods-category-select-2, .goods-category-select-3').html('').addClass('am-hide');
+ $popup_goods_search.find('.form-container-category .already-select-tips').attr('data-value', '').addClass('am-hide').find('strong').text('');
+ $popup_goods_search.find('.goods-category-choice-content ul li.active').removeClass('active');
+ $popup_goods_search.find('.form-container-keywords input').val('');
+ });
+
+ // 分类选择切换
+ $(document).on('click', '.layout-category-choice .goods-category-choice-content ul li a', function()
+ {
+ // 父级
+ var $parents = $(this).parents('.goods-category-choice');
+
+ // 选中
+ $(this).parent().addClass('active').siblings().removeClass('active');
+
+ // 分类数据
+ var data = $(this).data('json') || null;
+ if(data != null)
+ {
+ data = JSON.parse(decodeURIComponent(data)) || null;
+ }
+
+ // 参数
+ var level = $(this).parents('ul').data('level') || 1;
+ var level_next = level+1;
+
+ // 拼接html
+ if(data != null && level < 3)
+ {
+ var html = '';
+ for(var i in data)
+ {
+ var json = (data[i]['items'] || null) == null ? '' : encodeURIComponent(JSON.stringify(data[i]['items']));
+ html += '
'+data[i]['name']+' ';
+ if((data[i]['items'] || null) != null)
+ {
+ html += ' ';
+ }
+ html += '';
+ }
+ $parents.find('.goods-category-select-'+level_next).html(html).removeClass('am-hide');
+ }
+
+ // 级别数据处理
+ if(data == null)
+ {
+ $parents.find('.goods-category-select-'+level_next).addClass('am-hide').html('');
+ } else {
+ $parents.find('.goods-category-select-'+level_next).removeClass('am-hide');
+ }
+
+ // 选择第一级的时候隐藏第三级
+ if(level == 1)
+ {
+ $parents.find('.goods-category-select-3').addClass('am-hide').html('');
+ }
+
+ // 提示信息展示
+ var text = '';
+ var value = [];
+ $parents.find('ul li.active').each(function(k, v)
+ {
+ if(k > 0)
+ {
+ text += ' > ';
+ }
+ var name = $(this).find('a span').text();
+ value.push({"id":$(this).find('a').data('value'), "name":name});
+ text += name;
+ });
+ var $tips = $parents.find('.already-select-tips');
+ $tips.removeClass('am-hide');
+ $tips.find('strong').text(text);
+
+ // 选择数据
+ $tips.attr('data-value', encodeURIComponent(JSON.stringify(value)));
+ });
+
+ // 左侧配置 - 多图- 多图添加图片
+ $offcanvas_config_many_images.on('click', '.config-many-images-item-add', function()
+ {
+ $offcanvas_config_many_images.find('.config-many-images-container').append(ModuleConfigManyImagesItemContentHtml());
+ });
+
+ // 配置多图 - 选择页面事件
+ $offcanvas_config_many_images.on('click', '.form-view-choice-container-submit', function(e)
+ {
+ OffcanvasConfigPagesChoice($(this), e);
+ });
+
+ // 左侧配置 - 配置多图 - 链接地址 - 移除
+ $offcanvas_config_many_images.on('click', '.form-view-choice-container-active i.am-icon-close', function(e)
+ {
+ OffcanvasConfigPagesRemove($(this), e);
+ });
+
+ // 左侧配置 - 配置多图 - 移除
+ $(document).on('click', '#offcanvas-module-config-many-images .config-many-images-container .am-panel a.am-close', function()
+ {
+ $(this).parent().remove();
+ });
+
+ // 展示模式切换
+ $(document).on('click', 'input[name="view_list_show_style"]', function()
+ {
+ $base_show_style_value_obj = $(this).parents('.config-view-show-style').find('input[name="view_list_show_style_value"]');
+ switch($(this).val())
+ {
+ // 滚动
+ case 'rolling' :
+ // 数据填充
+ var json = ViewRollingShowStyleValueHandle($base_show_style_value_obj.val());
+ if(json['item_margin'] <= 0)
+ {
+ json['item_margin'] = '';
+ }
+ FormDataFill(json, '#modal-module-rolling-config');
+
+ // 开关状态
+ $modal_rolling_config.find('input[name="is_auto_play"]').bootstrapSwitch('state', json.is_auto_play);
+ $modal_rolling_config.find('input[name="is_nav_dot"]').bootstrapSwitch('state', json.is_nav_dot);
+
+ // 开启弹窗
+ $modal_rolling_config.modal({
+ width: 260,
+ height: 370,
+ closeViaDimmer: false
+ });
+ break;
+
+ // 列表
+ case 'list' :
+ // 数据填充
+ var json = ViewListShowStyleValueHandle($base_show_style_value_obj.val());
+ if(json['style_margin'] <= 0)
+ {
+ json['style_margin'] = '';
+ }
+ FormDataFill(json, '#modal-module-list-config');
+
+ // 开启弹窗
+ $modal_list_config.modal({
+ width: 260,
+ height: 225,
+ closeViaDimmer: false
+ });
+ break;
+
+ default :
+ $base_show_style_value_obj.val('');
+ }
+ });
+
+ // 左侧配置 - 标题 - 右侧按钮 - 选择页面事件
+ $offcanvas_config_title.on('click', '.form-view-choice-container-submit', function(e)
+ {
+ OffcanvasConfigPagesChoice($(this), e);
+ });
+
+ // 左侧配置 - 标题 - 右侧按钮 - 移除
+ $offcanvas_config_title.on('click', '.form-view-choice-container-active i.am-icon-close', function(e)
+ {
+ OffcanvasConfigPagesRemove($(this), e);
+ });
+
+ // 左侧配置 - 标题 - 添加关键字
+ $offcanvas_config_title.on('click', '.config-title-item-add', function()
+ {
+ ModuleConfigTitleKeywordsOpen();
+ });
+
+ // 左侧配置 - 标题 - 关键字 - 编辑
+ $(document).on('click', '#offcanvas-module-config-title .config-title-container li a.am-icon-edit', function()
+ {
+ var $parent = $(this).parent();
+ $base_title_keywords_obj = $parent;
+ ModuleConfigTitleKeywordsOpen(1, $parent.find('input').val() || null);
+ });
+
+ // 左侧配置 - 标题 - 关键字 - 移除
+ $(document).on('click', '#offcanvas-module-config-title .config-title-container li a.am-icon-remove', function()
+ {
+ $(this).parents('li').remove();
+ });
+
+ // 左侧配置 - 标题 - 关键字 - 选择页面事件
+ $modal_title_keywords.on('click', '.form-view-choice-container-submit', function(e)
+ {
+ OffcanvasConfigPagesChoice($(this), e);
+ });
+
+ // 左侧配置 - 标题 - 关键字 - 移除
+ $modal_title_keywords.on('click', '.form-view-choice-container-active i.am-icon-close', function(e)
+ {
+ OffcanvasConfigPagesRemove($(this), e);
+ });
+});
\ No newline at end of file
diff --git a/public/static/index/default/css/index.css b/public/static/index/default/css/index.css
index bf95204aca09aae5eeadf70e6d7b3f6dd115c2a9..baec55effbf2b097027dfe2994b5850339b77c95 100755
--- a/public/static/index/default/css/index.css
+++ b/public/static/index/default/css/index.css
@@ -183,4 +183,16 @@ text-align: center;float:none}
.floor .goods-list .goods-items { width: 50%; float: left; padding: 10px; border-bottom: 1px solid #eee; }
.floor .goods-list .goods-items:nth-of-type(2n + 1) { border-right: 1px solid #eee; }
.floor .goods-list .goods-items:nth-of-type(2n) { border-left: 1px solid transparent; }
+}
+
+/**
+ * 布局保存
+ */
+.layout-operate-container .am-btn {
+ padding: 4px 10px;
+}
+@media only screen and (max-width: 1025px) {
+ .layout-operate-container {
+ margin-right: 10px;
+ }
}
\ No newline at end of file
diff --git a/public/static/index/default/js/index.js b/public/static/index/default/js/index.js
index 5032f23654d29c8e909587794bb19750b91a9b1e..a55ac751510f40be592516df47eb61a99c3c37fa 100755
--- a/public/static/index/default/js/index.js
+++ b/public/static/index/default/js/index.js
@@ -8,6 +8,11 @@ function FloorResizeHandle()
});
}
+$(window).load(function()
+{
+ FloorResizeHandle();
+});
+
$(function()
{
// 新闻轮播
@@ -35,9 +40,37 @@ $(function()
FloorResizeHandle();
});
-});
+ // 布局保存
+ $('.layout-operate-container button').on('click', function()
+ {
+ var $this = $(this);
+ $this.button('loading');
+ $.ajax({
+ url: $('.layout-operate-container').data('save-url'),
+ type: 'post',
+ data: {"config": JSON.stringify(LayoutViewConfig())},
+ dataType: 'json',
+ success:function(res)
+ {
+ if(res['code'] == 0)
+ {
+ Prompt(res.msg, 'success');
+ setTimeout(function()
+ {
+ window.location.href = __my_url__;
+ }, 1500);
+ } else {
+ $this.button('reset');
+ Prompt(res.msg);
+ }
+ },
+ error:function(res)
+ {
+ $this.button('reset');
+ var msg = HtmlToString(xhr.responseText) || '异常错误';
+ Prompt(msg, null, 30);
+ }
+ });
+ });
-$(window).load(function()
-{
- FloorResizeHandle();
});
\ No newline at end of file