提交 d9f8398a 编写于 作者: D devil

数据列表优化

上级 89579a91
......@@ -51,6 +51,12 @@ class Common extends Controller
protected $page;
protected $page_size;
// 动态表格
protected $form_table;
protected $form_where;
protected $form_params;
protected $form_error;
/**
* 构造方法
* @author Devil
......@@ -84,6 +90,9 @@ class Common extends Controller
// 视图初始化
$this->ViewInit();
// 动态表格初始化
$this->FormTableInit();
// 公共钩子初始化
$this->CommonPluginsInit();
}
......@@ -226,14 +235,41 @@ class Common extends Controller
// 默认不加载百度地图api
$this->assign('is_load_baidu_map_api', 0);
// 动态表格处理
$obj = new \app\form\GoodsForm();
$table = $obj->Table();
$this->assign('form_table', $table);
//print_r($table);
}
/**
* 动态表格初始化
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-02
* @desc description
*/
public function FormTableInit()
{
// 当前操作名称
$module = request()->module();
$controller = request()->controller();
// 数据处理
$res = FormTableLoad($controller, $module, $this->data_request);
if($res['code'] == 0)
{
$this->form_table = $res['data']['table'];
$this->form_where = $res['data']['where'];
$this->form_params = $res['data']['params'];
$this->assign('form_table', $this->form_table);
$this->assign('form_params', $this->form_params);
} else {
$this->form_error = $res['msg'];
$this->assign('form_error', $this->form_error);
}
//print_r($this->data_request);die;
}
/**
* [IsPower 是否有权限]
* @author Devil
......
......@@ -8,7 +8,7 @@
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\form;
namespace app\admin\form;
use think\Db;
use app\service\GoodsService;
......@@ -16,17 +16,17 @@ use app\service\RegionService;
use app\service\BrandService;
/**
* 商品表单
* 商品动态表单
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-05-16
* @desc description
*/
class GoodsForm
class Goods
{
/**
* 表单
* 入口
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
......@@ -34,7 +34,7 @@ class GoodsForm
* @desc description
* @param [array] $params [输入参数]
*/
public function Table($params = [])
public function Run($params = [])
{
return [
// 基础配置
......@@ -42,6 +42,8 @@ class GoodsForm
'key_field' => 'id',
'status_field' => 'is_shelves',
'is_search' => 1,
'search_url' => MyUrl('admin/goods/index'),
],
// 表单配置
'form' => [
......@@ -58,31 +60,9 @@ class GoodsForm
'search_config' => [
'form_type' => 'input',
'form_name' => 'title|simple_desc|seo_title|seo_keywords|seo_keywords',
'where_type' => 'like',
'placeholder' => '请输入名称/简述/SEO信息'
],
// 'search_config' => [
// // input, select, datetime, date, time, section
// 'form_type' => 'select',
// // 表单字段名称
// 'form_name' => 'category_id',
// // 提示信息
// 'placeholder' => '商品分类...',
// // 是否开启占位选择框
// 'is_seat_select' => 1,
// // 选择占位值(默认空)
// 'seat_select_value' => '',
// // 选择占位文本(默认 placeholder 值)
// 'seat_select_text' => '商品分类...',
// // 条件数据
// 'data' => [],
// // 数据 key 字段名称(默认取 id)
// 'data_key' => 'id',
// // 数据 name 字段名称(默认取 name)
// 'data_name' => 'name',
// // 数据默认选中值
// 'default' => '',
// ],
],
[
'label' => '销售价格(元)',
......@@ -91,6 +71,7 @@ class GoodsForm
'search_config' => [
'form_type' => 'section',
'form_name' => 'min_price',
'is_point' => 1,
],
],
[
......@@ -99,8 +80,9 @@ class GoodsForm
'view_key' => 'original_price',
'search_config' => [
// 表单字段名称
'form_name' => 'min_original_price',
'form_type' => 'section',
'form_name' => 'min_original_price',
'is_point' => 1,
],
],
[
......@@ -124,6 +106,7 @@ class GoodsForm
'search_config' => [
'form_type' => 'select',
'form_name' => 'is_shelves',
'where_type' => 'in',
'data' => lang('common_is_shelves_list'),
'data_key' => 'id',
'data_name' => 'name',
......@@ -140,6 +123,7 @@ class GoodsForm
'search_config' => [
'form_type' => 'select',
'form_name' => 'is_home_recommended',
'where_type' => 'in',
'data' => lang('common_is_text_list'),
'data_key' => 'id',
'data_name' => 'name',
......@@ -153,6 +137,7 @@ class GoodsForm
'search_config' => [
'form_type' => 'input',
'form_name' => 'model',
'where_type' => 'like',
],
],
[
......@@ -161,7 +146,9 @@ class GoodsForm
'view_key' => 'category_text',
'search_config' => [
'form_type' => 'module',
'form_name' => 'lib/module/goods_category',
'template' => 'lib/module/goods_category',
'form_name' => 'category_id',
'where_type' => 'in',
'data' => GoodsService::GoodsCategoryAll(),
],
],
......@@ -170,12 +157,13 @@ class GoodsForm
'view_type' => 'field',
'view_key' => 'brand_name',
'search_config' => [
'form_type' => 'select',
'form_type' => 'module',
'template' => 'lib/module/category_brand',
'form_name' => 'brand_id',
'data' => BrandService::CategoryBrand(),
'data_key' => 'id',
'data_name' => 'name',
'is_seat_select' => 1,
'where_type' => 'in',
],
],
[
......@@ -197,61 +185,4 @@ class GoodsForm
],
];
}
/**
* 条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-05-16
* @desc description
* @param [array] $params [输入参数]
*/
public function Search($params = [])
{
return [
// 基础配置
'base' => [
'url' => MyUrl('admin/goods/index'),
'method' => 'POST',
'is_more' => 1,
],
// 大搜索框
'search' => [
'placeholder' => '标题/型号',
'submit_text' => '搜索一下',
'loading_text' => '搜索中哦...',
'form_name' => 'keywords',
],
// 更多条件
'more' => [
[
// 标题名称
'label' => '分类',
// 表单字段名称
'form_name' => 'category_id',
// select, input
'form_type' => 'select',
// 提示信息
'placeholder' => '商品分类...',
// 是否开启占位选择框
'is_seat_select' => 1,
// 选择占位值
'seat_select_value' => '',
// 数据
'data' => [],
// 数据 key 字段名称
'data_key' => 'id',
// 数据 name 字段名称
'data_name' => 'name',
// 数据默认选中值
'default' => '',
],
],
];
}
}
\ No newline at end of file
<!-- 继承公共的 form -->
{{extend name="public/form" /}}
<!-- 搜素条件 -->
{{block name="search_form"}}
<form class="am-form form-validation form-search" method="post" action="{{:MyUrl('admin/goods/index')}}" request-type="form">
<div class="thin">
<div class="am-input-group am-input-group-sm am-fl so">
<input type="text" autocomplete="off" name="keywords" class="am-radius" placeholder="标题/型号" value="{{if !empty($params.keywords)}}{{$params.keywords}}{{/if}}" />
<span class="am-input-group-btn">
<button class="am-btn am-btn-default am-radius" type="submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
</span>
</div>
<label class="am-fl thin_sub more-submit">
更多筛选条件
{{if isset($params['is_more']) and $params['is_more'] eq 1}}
<input type="checkbox" name="is_more" value="1" id="is_more" checked />
<i class="am-icon-angle-up"></i>
{{else /}}
<input type="checkbox" name="is_more" value="1" id="is_more" />
<i class="am-icon-angle-down"></i>
{{/if}}
</label>
</div>
<table class="so-list more-where {{if !isset($params['is_more'])}}none{{/if}}">
<tbody>
<tr>
<td>
<span>分类:</span>
<select class="am-radius chosen-select" name="category_id" data-placeholder="商品分类...">
<option value="0">商品分类...</option>
{{if !empty($goods_category_list)}}
{{foreach $goods_category_list as $v}}
<option value="{{$v.id}}" {{if !empty($params['category_id']) and $v['id'] eq $params['category_id']}}selected{{/if}}>一级 - {{$v.name}}</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 30px;" value="{{$vs.id}}" {{if !empty($params['category_id']) and $vs['id'] eq $params['category_id']}}selected{{/if}}>二级 - {{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $vss}}
<option style="padding-left: 60px;" value="{{$vss.id}}" {{if !empty($params['category_id']) and $vss['id'] eq $params['category_id']}}selected{{/if}}>三级 - {{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
{{/foreach}}
{{/if}}
</select>
</td>
<td>
<span>品牌:</span>
<select name="brand_id" class="am-radius chosen-select" data-placeholder="品牌...">
{{if !empty($brand_list)}}
<option value="0">品牌...</option>
{{foreach $brand_list as $v}}
<optgroup label="{{$v.name}}">
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 30px;" value="{{$vs.id}}" {{if isset($params['brand_id']) and $params['brand_id'] eq $vs['id']}}selected{{/if}}>{{$vs.name}}</option>
{{/foreach}}
{{/if}}
</optgroup>
{{/foreach}}
{{/if}}
</select>
</td>
</tr>
<tr>
<td>
<span>状态:</span>
<select name="is_shelves" class="chosen-select" data-placeholder="上下架状态...">
<option value="-1">上下架状态...</option>
{{foreach $common_is_shelves_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_shelves']) and $params['is_shelves'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
<td>
<span>推荐:</span>
<select name="is_home_recommended" class="chosen-select" data-placeholder="首页推荐...">
<option value="-1">首页推荐...</option>
{{foreach $common_is_text_list as $v}}
<option value="{{$v.id}}" {{if isset($params['is_home_recommended']) and $params['is_home_recommended'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
{{/foreach}}
</select>
</td>
</tr>
<tr>
<td class="time">
<span>时间:</span>
<span>
<input type="text" autocomplete="off" name="time_start" class="am-form-field am-input-sm am-radius Wdate" placeholder="起始时间" value="{{if !empty($params.time_start)}}{{$params.time_start}}{{/if}}" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
<em class="text-grey">~</em>
<span>
<input type="text" autocomplete="off" name="time_end" class="am-form-field am-input-sm am-radius Wdate" placeholder="结束时间" value="{{if !empty($params.time_end)}}{{$params.time_end}}{{/if}}" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}$" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
</td>
<td>
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
<a href="{{:MyUrl('admin/goods/index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
</td>
</tr>
</tbody>
</table>
</form>
{{/block}}
<!-- 表单顶部操作栏 -->
{{block name="form_operate_top"}}
<a href="{{:MyUrl('admin/goods/saveinfo')}}" class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus"> 新增</a>
......
<!-- 分类下品牌 -->
{{if !empty($module_data['data']) && !empty($module_data['form_name_key'])}}
<select class="am-radius chosen-select" multiple name="{{$module_data.form_name_key}}" data-placeholder="品牌...">
{{foreach $module_data.data as $v}}
<optgroup label="{{$v.name}}">
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 15px;" value="{{$vs.id}}" {{if !empty($module_data['params']) and !empty($module_data['params'][$module_data['form_name_key']]) and is_array($module_data['params'][$module_data['form_name_key']]) and in_array($vs['id'], $module_data['params'][$module_data['form_name_key']])}}selected{{/if}}>{{$vs.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
</select>
{{/if}}
\ No newline at end of file
<!-- 商品基础信息 -->
{{if !empty($module_data)}}
<select class="am-radius chosen-select" multiple name="category_id" data-placeholder="商品分类...">
{{foreach $module_data as $v}}
<option value="{{$v.id}}" {{if !empty($module_params['category_id']) and $v['id'] eq $module_params['category_id']}}selected{{/if}}>{{$v.name}}</option>
<!-- 商品分类 -->
{{if !empty($module_data['data']) && !empty($module_data['form_name_key'])}}
<select class="am-radius chosen-select" multiple name="{{$module_data.form_name_key}}" data-placeholder="商品分类...">
{{foreach $module_data.data as $v}}
<option value="{{$v.id}}" {{if !empty($module_data['params']) and !empty($module_data['params'][$module_data['form_name_key']]) and is_array($module_data['params'][$module_data['form_name_key']]) and in_array($v['id'], $module_data['params'][$module_data['form_name_key']])}}selected{{/if}}>{{$v.name}}</option>
{{if !empty($v['items'])}}
{{foreach $v.items as $vs}}
<option style="padding-left: 15px;" value="{{$vs.id}}" {{if !empty($module_params['category_id']) and $vs['id'] eq $module_params['category_id']}}selected{{/if}}>{{$vs.name}}</option>
<option style="padding-left: 15px;" value="{{$vs.id}}" {{if !empty($module_data['params']) and !empty($module_data['params'][$module_data['form_name_key']]) and is_array($module_data['params'][$module_data['form_name_key']]) and in_array($vs['id'], $module_data['params'][$module_data['form_name_key']])}}selected{{/if}}>{{$vs.name}}</option>
{{if !empty($vs['items'])}}
{{foreach $vs.items as $vss}}
<option style="padding-left: 30px;" value="{{$vss.id}}" {{if !empty($module_params['category_id']) and $vss['id'] eq $module_params['category_id']}}selected{{/if}}>{{$vss.name}}</option>
<option style="padding-left: 30px;" value="{{$vss.id}}" {{if !empty($module_data['params']) and !empty($module_data['params'][$module_data['form_name_key']]) and is_array($module_data['params'][$module_data['form_name_key']]) and in_array($vss['id'], $module_data['params'][$module_data['form_name_key']])}}selected{{/if}}>{{$vss.name}}</option>
{{/foreach}}
{{/if}}
{{/foreach}}
......
......@@ -11,6 +11,45 @@
// 应用公共文件
/**
* 模块动态表格加载方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-02
* @desc description
* @param [string] $name [模块名称]
* @param [string] $group [模块组(admin,index)]
* @param [mixed] $params [参数数据]
*/
function FormTableLoad($name, $group = 'admin', $params = [])
{
// 模块
$module = '\app\\'.$group.'\form\\'.$name;
if(!class_exists($module))
{
return DataReturn('动态表格模块未定义['.$module.']', -1);
}
// 调用方法
$action = 'Run';
$obj = new $module();
if(!method_exists($obj, $action))
{
return DataReturn('动态表格方法未定义['.$module.'->'.$action.'()]', -1);
}
$table = $obj->$action($params);
// 处理数据
$res = (new app\module\FormHandle())->Run($table, $params);
$data = [
'table' => $table,
'where' => $res['where'],
'params' => $res['params'],
];
return DataReturn('success', 0, $data);
}
/**
* 模块视图动态加载方法
* @author Devil
......
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\module;
use think\Controller;
/**
* 动态表格处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-02
* @desc description
*/
class FormHandle
{
/**
* 条件处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-06-02
* @desc description
* @param [array] $data [动态表格配置信息]
* @param [array] $params [输入参数]
*/
public function Run($data, $params = [])
{
$w = [];
$p = [];
if(!empty($data['form']))
{
foreach($data['form'] as $k=>$v)
{
if(isset($v['search_config']) && !empty($v['search_config']['form_type']) && !empty($v['search_config']['form_name']))
{
$key = 'fp'.$k;
$name = $v['search_config']['form_name'];
$type = isset($v['search_config']['where_type']) ? $v['search_config']['where_type'] : $v['search_config']['form_type'];
switch($type)
{
// 单个值
case '=' :
case '<' :
case '>' :
case '<=' :
case '>=' :
case 'like' :
if(array_key_exists($key, $params) && $params[$key] !== null && $params[$key] !== '')
{
// 参数值
$value = urldecode($params[$key]);
$p[$key] = $value;
// 条件
$w[] = [$name, $type, $value];
}
break;
// in
case 'in' :
if(array_key_exists($key, $params) && $params[$key] !== null && $params[$key] !== '')
{
// 参数值
$value = urldecode($params[$key]);
if(!is_array($value))
{
$value = explode(',', $value);
}
$p[$key] = $value;
// 条件
$w[] = [$name, $type, $value];
}
break;
// 区间值
case 'section' :
$key_min = $key.'_min';
$key_max = $key.'_max';
if(array_key_exists($key_min, $params) && $params[$key_min] !== null && $params[$key_min] !== '')
{
// 参数值
$value = urldecode($params[$key_min]);
$p[$key_min] = $value;
// 条件
$w[] = [$name, '>=', $value];
}
if(array_key_exists($key_max, $params) && $params[$key_max] !== null && $params[$key_max] !== '')
{
// 参数值
$value = urldecode($params[$key_max]);
$p[$key_max] = $value;
// 条件
$w[] = [$name, '<=', $value];
}
break;
// 时间
case 'datetime' :
case 'date' :
$key_start = $key.'_start';
$key_end = $key.'_end';
if(array_key_exists($key_start, $params) && $params[$key_start] !== null && $params[$key_start] !== '')
{
// 参数值
$value = urldecode($params[$key_start]);
$p[$key_start] = $value;
// 条件
$w[] = [$name, '>=', strtotime($value)];
}
if(array_key_exists($key_end, $params) && $params[$key_end] !== null && $params[$key_end] !== '')
{
// 参数值
$value = urldecode($params[$key_end]);
$p[$key_end] = $value;
// 条件
$w[] = [$name, '<=', strtotime($value)];
}
break;
}
}
}
}
return [
'where' => $w,
'params' => $p,
];
}
}
?>
\ No newline at end of file
......@@ -45,13 +45,11 @@ class ViewInclude extends Controller
* @desc description
* @param [string] $template [模板地址]
* @param [mixed] $data [请求数据]
* @param [mixed] $params [请求参数]
* @return [string] [模板内容]
*/
public function Run($template, $data = [], $params = [])
public function Run($template, $data = [])
{
$this->assign('module_data', $data);
$this->assign('module_params', $params);
return $this->fetch($template);
}
}
......
......@@ -527,20 +527,4 @@ button.colorpicker-submit img {
.form-table-search-time > i {
position: absolute;
margin: 4px 0px 0px -15px;
}
/**
* 下拉选择器
*/
.chosen-container-multi .chosen-choices li.search-choice {
margin: 3px 3px 3px 0;
padding: 2px 13px 1px 2px;
}
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
margin: 0;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
top: 2px;
right: 0px;
}
\ No newline at end of file
......@@ -364,7 +364,13 @@ function FromInit(form_name)
var method = $form.attr('method') || null;
var request_type = $form.attr('request-type') || null;
var request_value = $form.attr('request-value') || null;
var ajax_all = ['ajax-reload', 'ajax-url', 'ajax-fun', 'sync'];
// 以 ajax 开头的都会先请求再处理
// ajax-reload 请求完成后刷新页面
// ajax-url 请求完成后调整到指定的请求值
// ajax-fun 请求完成后调用指定方法
// sync 不发起请求、直接同步调用指定的方法
// jump 不发起请求、拼接数据参数跳转到指定 url 地址
var request_handle = ['ajax-reload', 'ajax-url', 'ajax-fun', 'sync', 'jump'];
// 是form表单直接通过
if(request_type == 'form')
......@@ -373,7 +379,7 @@ function FromInit(form_name)
}
// 参数校验
if(ajax_all.indexOf(request_type) == -1)
if(request_handle.indexOf(request_type) == -1)
{
$button.button('reset');
Prompt('表单[类型]参数配置有误');
......@@ -401,6 +407,19 @@ function FromInit(form_name)
return false;
}
// 拼接参数跳转
if(request_type == 'jump')
{
var params = GetFormVal(form_name, true);
for(var i in params)
{
request_value = UrlFieldReplace(i, encodeURIComponent(params[i]), request_value)
}
window.location.href = request_value;
return false;
}
// 请求 url http类型
if(action == null || method == null)
{
$button.button('reset');
......@@ -476,6 +495,8 @@ function FromInit(form_name)
}
// 默认初始化一次,默认标签[form.form-validation]
FromInit('form.form-validation');
// 公共列表 form 搜索条件
FromInit('form.form-validation-search');
/**
* [FormDataFill 表单数据填充]
......
.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:14px;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #bbb;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container .search-choice .group-name,.chosen-container .chosen-single .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .search-choice .group-name:after,.chosen-container .chosen-single .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:36px;border:1px solid #ddd;background-color:#fff;color:#444;text-decoration:none;white-space:nowrap;line-height:35px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:10px;right:26px;display:block;width:12px;height:12px;color:#999}.chosen-container-single .chosen-single abbr:before{position:absolute;left:0;top:0;display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00d"}.chosen-container-single .chosen-single abbr:hover{color:#666}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div:before{color:#999;content:"\f0d7";display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:5px;white-space:nowrap}.chosen-container-single .chosen-search:after{position:absolute;right:10px;top:12px;color:#aaa;display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f002"}.chosen-container-single .chosen-search input[type="text"]{margin:1px 0;padding:5px 20px 5px 5px;width:100%;height:auto;outline:0;border:1px solid #ccc;font-size:1em;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#0e90d2;color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default;color:#777}.chosen-container .chosen-results li.group-option{padding-left:18px}.chosen-container .chosen-results li.group-option+.group-result{margin-top:10px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:3px 5px;width:100%;height:auto!important;height:1%;border:1px solid #ddd;background-color:#fff;cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type="text"]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #ccc;max-width:100%;background-color:#f2f2f2;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);border-radius:1px;color:#333;line-height:16px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:3px;right:3px;display:block;width:12px;height:12px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00d";color:#999}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before{color:#666}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #3bb4f2;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #bbb;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div:before{content:"\f0d8"}.chosen-container-active .chosen-choices{border:1px solid #3bb4f2;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type="text"]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single,.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}
\ No newline at end of file
.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:14px;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:0;display:none;z-index:1010;width:100%;border:1px solid #bbb;border-top:0;background:#fff;-webkit-box-shadow:0 4px 5px rgba(0,0,0,.15);box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{display:block;}.chosen-container a{cursor:pointer}.chosen-container .search-choice .group-name,.chosen-container .chosen-single .group-name{margin-right:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:400;color:#999}.chosen-container .search-choice .group-name:after,.chosen-container .chosen-single .group-name:after{content:":";padding-left:2px;vertical-align:top}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:36px;border:1px solid #ddd;background-color:#fff;color:#444;text-decoration:none;white-space:nowrap;line-height:35px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:10px;right:26px;display:block;width:12px;height:12px;color:#999}.chosen-container-single .chosen-single abbr:before{position:absolute;left:0;top:0;display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00d"}.chosen-container-single .chosen-single abbr:hover{color:#666}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div:before{color:#999;content:"\f0d7";display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:5px;white-space:nowrap}.chosen-container-single .chosen-search:after{position:absolute;right:10px;top:15px;color:#aaa;display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f002"}.chosen-container-single .chosen-search input[type="text"]{margin:1px 0;padding:5px 20px 5px 5px;width:100%;height:auto;outline:0;border:1px solid #ccc;font-size:1em;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#0e90d2;color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default;color:#777}.chosen-container .chosen-results li.group-option{padding-left:18px}.chosen-container .chosen-results li.group-option+.group-result{margin-top:10px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:3px 5px;width:100%;height:auto!important;height:1%;border:1px solid #ddd;background-color:#fff;cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type="text"]{margin:0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;-webkit-box-shadow:none;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 3px 3px 0;padding:2px 13px 1px 2px;border:1px solid #ccc;max-width:100%;background-color:#f2f2f2;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);border-radius:1px;color:#333;line-height:16px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:2px;right:0px;display:block;width:12px;height:12px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{display:inline-block;font-family:"FontAwesome",sans-serif;font-weight:400;font-style:normal;vertical-align:baseline;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f00d";color:#999}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover:before{color:#666}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #3bb4f2;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #bbb;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div:before{content:"\f0d8"}.chosen-container-active .chosen-choices{border:1px solid #3bb4f2;-webkit-box-shadow:0 0 5px rgba(0,0,0,.3);box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type="text"]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single,.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册