diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..df52c328e60323f9b115db59ade40c04fed21750 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +root = true + +[*] +; 设定文件编码 +charset = utf-8 +end_of_line = lf +insert_final_newline = true +; 使用空格来做缩进 +indent_style = space +; 缩进长度为两个空格 +indent_size = 4 +; 移除文件尾部多余的空格 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000000000000000000000000000000000000..de583d0940d6ec7a20f3b3a29172729e87173fcf --- /dev/null +++ b/.env.development @@ -0,0 +1,5 @@ +# just a flag +ENV = 'development' + +# base api +VUE_APP_BASE_API = '/dev-api' diff --git a/.env.example b/.env.example new file mode 100644 index 0000000000000000000000000000000000000000..7492cb47c4d4eecd3dd2f38e62725384d20ef4e1 --- /dev/null +++ b/.env.example @@ -0,0 +1,60 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=daily +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= +DB_PREFIX=cnpscy_ + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +# MEMCACHED_HOST=127.0.0.1 +MEMCACHED_HOST=memcached + +# REDIS_HOST=127.0.0.1 +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailhog +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS=null +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_APP_CLUSTER=mt1 + +MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +#filesystem +FILESYSTEM_DRIVER=public + +APP_TIMEZONE=Asia/Shanghai +APP_LOCALE=zh-CN + +JWT_SECRET=uuKSCoJpNKumzY7xOdjfpAxF0MMuI5j98iaO4uk3JVwbFCUapvsB7XGohKOBjd92 diff --git a/.env.production b/.env.production new file mode 100644 index 0000000000000000000000000000000000000000..80c810301f3fbaca271b9f3ef4fc1011a3904d8a --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = '/prod-api' + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..967315dd3d16d50942fa7abd383dfb95ec685491 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore index 6552ddf8a06abec2834f50984354df938588faad..1501035b232833aa72b21e22bdfaedd05c4ca8cf 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,13 @@ storage/*.key Homestead.yaml Homestead.json /.vagrant + + +# vue-webpack +public/css +public/fonts +public/images +public/js + +# other +demos-blog \ No newline at end of file diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000000000000000000000000000000000000..9231873a112ba0ded2550a45741bad544e7a1998 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000000000000000000000000000000000000..c24df94547a51449cd67d945d19b279a7eefb6f5 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,57 @@ +command('inspire')->hourly(); + + // var_dump('schedule:' . date('Y-m-d H:i:s')); + + // 每月1号调用:按月分表自动生成 + $schedule->command('autotablebuild')->monthlyOn(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + /** + * 自动加载多模块的自定义命令行 + */ + $modules_path = config('modules.paths.modules'); + if ($dirs = get_dir_files($modules_path)){ + foreach ($dirs as $dir){ + if (is_dir($console_path = $modules_path . '/' . $dir . '/Console')) + $this->load($console_path = $modules_path . '/' . $dir . '/Console'); + } + } + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Admin/AuthException.php b/app/Exceptions/Admin/AuthException.php new file mode 100644 index 0000000000000000000000000000000000000000..dbac6721ffc7a1e95df533459f90000c3fd07f9a --- /dev/null +++ b/app/Exceptions/Admin/AuthException.php @@ -0,0 +1,28 @@ +admin_id = $admin_id; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + // 登录日志 + AdminLoginLog::getInstance()->add($this->admin_id, 0, $this->msg); + + $this->setHttpCode(401); + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Exceptions/Admin/AuthTokenException.php b/app/Exceptions/Admin/AuthTokenException.php new file mode 100644 index 0000000000000000000000000000000000000000..70d58bd884c87a069ae4d13581f598532192e3cd --- /dev/null +++ b/app/Exceptions/Admin/AuthTokenException.php @@ -0,0 +1,28 @@ +admin_id = $admin_id; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + // 登录日志 + AdminLoginLog::getInstance()->add($this->admin_id, 0, $this->msg); + + $this->setHttpCode(401); + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Exceptions/Exception.php b/app/Exceptions/Exception.php new file mode 100644 index 0000000000000000000000000000000000000000..a8bf4b2271d27549e41e9bf858dfab800ee14bfd --- /dev/null +++ b/app/Exceptions/Exception.php @@ -0,0 +1,20 @@ +msg = $message; + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000000000000000000000000000000000000..48a509985bce8e4996e5feb466354cad662a6e17 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,67 @@ +reportable(function (Throwable $e) { + + }); + + } + + /** + * Render an exception into an HTTP response. + * + * @param \Illuminate\Http\Request $request + * @param \Throwable $exception + * @return \Symfony\Component\HttpFoundation\Response + * + * @throws \Throwable + */ + public function render($request, Throwable $exception) + { + // 验证器类的错误监听 + if($exception instanceof \Illuminate\Validation\ValidationException){ + return $this->errorJson($exception->validator->errors()->first()); + } + + return parent::render($request, $exception); + } +} diff --git a/app/Exceptions/InternalException.php b/app/Exceptions/InternalException.php new file mode 100644 index 0000000000000000000000000000000000000000..b9429b263b54b628a4123be4376a92f775aa479b --- /dev/null +++ b/app/Exceptions/InternalException.php @@ -0,0 +1,21 @@ +msg = $msg; + } + + public function render(Request $request) + { + if ($request->expectsJson()) { + return response()->json(['msg' => $this->msg], $this->code); + } + } +} diff --git a/app/Exceptions/InvalidRequestException.php b/app/Exceptions/InvalidRequestException.php new file mode 100644 index 0000000000000000000000000000000000000000..954e53a066d79a7d8bb654dfd753db704324f6de --- /dev/null +++ b/app/Exceptions/InvalidRequestException.php @@ -0,0 +1,20 @@ +expectsJson()) { + return $this->errorJson($this->msg); + } + } +} diff --git a/app/Helper/builtin-functions.php b/app/Helper/builtin-functions.php new file mode 100644 index 0000000000000000000000000000000000000000..664c1b8ec56980502bf42e5d06d3170e2297f7d8 --- /dev/null +++ b/app/Helper/builtin-functions.php @@ -0,0 +1,292 @@ +roles; + $rabc = $menu_lists = []; + foreach ($roles as $key => $role) { + $menus = $role->{$with_func}->toArray(); + $rabc[$role->role_id] = array_flip(array_unique(array_column($menus, 'menu_url'))); + $menu_lists = array_merge($menu_lists, $menus); + } + return ['rabc' => $rabc, 'menu' => $menu_lists]; +} + +function get_request_post() +{ + return request()->isMethod('post'); +} + +function cnpscy_config(string $config_name = '', string $default = '') +{ + return config('cnpscy.' . $config_name, $default); +} + +//快速修改.env文件 +function modifyEnv(array $data) +{ + $envPath = base_path() . DIRECTORY_SEPARATOR . '.env'; + $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES)); + $contentArray->transform(function ($item) use ($data) + { + foreach ($data as $key => $value) { + if (str_contains($item, $key)) { + return $key . '=' . $value; + } + } + return $item; + }); + $content = implode($contentArray->toArray(), "\n"); + File::put($envPath, $content); +} + +/*************** 缓存函数 开始 ***************/ + +/** + * [set_cache] + * + * @param [type] $key [description] + * @param [type] $data [description] + * @param [type] $minutes [description]$minutes = 7*24*60*60 + * + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :设置缓存 + * @englishAnnotation : + */ +function set_cache($key, $data, $minutes = 1 * 60) +{ + return \Cache::put($key, $data, $minutes); +} + +/** + * [get_cache] + * + * @param [type] $key [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :获取缓存的数据 + * @englishAnnotation : + */ +function get_cache($key) +{ + return \Cache::get($key) ?? ''; +} + +/** + * [has_cache] + * + * @param [type] $key [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :是否存在该key的缓存 + * @englishAnnotation : + */ +function has_cache($key) +{ + return \Cache::has($key) ? true : false; +} + +/** + * [del_cache] + * + * @param [type] $key [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :删除缓存 + * @englishAnnotation : + */ +function del_cache($key) +{ + return \Cache::forget($key) ?? false; +} + +/*************** 缓存函数 结束 ***************/ + + +/** + * [logs_data] + * + * @param [type] $data [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :日志数据的过滤 + * @englishAnnotation : + */ +function logs_data($data, $ip_agent) +{ + $data['data'] = json_encode(request()->all()); + $data['action'] = request()->route()->getActionName(); + $data['description'] = $data['description'] ?? ''; + $data['add_time'] = $data['add_time'] ?? time(); + $data['ip'] = $ip_agent['ip'] ?? get_ip(); + $data['browser_type'] = $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT']; + return $data; +} + +/** + * 刷新用户权限、角色 + * 多角色管理 + */ +if (!function_exists('setAdminRabc')) { + function setAdminRabc() + { + $admin = auth('admin')->user(); + $roles = $menus = []; + $rolesResources = $admin->roles()->orderBy('role_id', 'ASC')->get(); + foreach ($rolesResources as $key => $roleResources) { + if ($key == 0) $role_id = $roleResources->role_id; + $roles[$roleResources->role_id] = $roleResources; + $menus[$roleResources->role_id] = array_filter($roleResources->left_menus()->get()->pluck('api_url')->toArray()); + } + + //默认使用第一个角色 + if (empty($admin->use_role)) \App\Models\BasicAdmin\Admin::where('admin_id', $admin->admin_id)->update(['use_role' => $role_id]); + + // 缓存用户权限 + cache()->forever('admin_rabc_' . $admin->admin_id, [ + 'roles' => $roles, + 'menus' => $menus + ]); + } +} + +/** + * 获取当前用户-当前角色-权限 + */ +if (!function_exists('getAdminRabc')) { + function getAdminRabc() + { + $admin = auth('admin')->user(); + $key = 'admin_rabc_' . $admin->admin_id; + if (cache()->has($key)) { + $admin_rabc = cache($key); + return [ + 'roles' => empty($admin->use_role) ? [] : $admin_rabc['roles'][$admin->use_role], + 'menus' => empty($admin->use_role) ? [] : $admin_rabc['menus'][$admin->use_role], + ]; + } + setAdminRabc(); + return cache($key); + } +} + + +function getWebUserHome(int $user_id = 0) +{ + return url('user/' . $user_id); +} + +function route_class() +{ + return str_replace('.', '-', Route::currentRouteName()); +} + +function category_nav_active($category_id) +{ + return active_class((if_route('categories.show') && if_route_param('category', $category_id))); +} + +function make_excerpt($value, $length = 200) +{ + $excerpt = trim(preg_replace('/\r\n|\r|\n+/', ' ', strip_tags($value))); + return Str::limit($excerpt, $length); +} + +function model_admin_link($title, $model) +{ + return model_link($title, $model, 'admin'); +} + +function model_link($title, $model, $prefix = '') +{ + // 获取数据模型的复数蛇形命名 + $model_name = model_plural_name($model); + + // 初始化前缀 + $prefix = $prefix ? "/$prefix/" : '/'; + + // 使用站点 URL 拼接全量 URL + $url = config('app.url') . $prefix . $model_name . '/' . $model->id; + + // 拼接 HTML A 标签,并返回 + return '' . $title . ''; +} + +function model_plural_name($model) +{ + // 从实体中获取完整类名,例如:App\Models\User + $full_class_name = get_class($model); + + // 获取基础类名,例如:传参 `App\Models\User` 会得到 `User` + $class_name = class_basename($full_class_name); + + // 蛇形命名,例如:传参 `User` 会得到 `user`, `FooBar` 会得到 `foo_bar` + $snake_case_name = Str::snake($class_name); + + // 获取子串的复数形式,例如:传参 `user` 会得到 `users` + return Str::plural($snake_case_name); +} + +function get_web_admin_url(string $method, string $controller = '', int $is_compel = 0): string +{ + if (empty($method)) return ''; + $prefix = ltrim(request()->route()->getPrefix(), '/'); + // 如果后台访问地址对不上,关闭下行的注释 + // $prefix = str_replace(head(explode('/', $prefix)), cnpscy_config('web_admin_prefix'), $prefix); + if (empty($controller) && $is_compel == 0) { + $url = $prefix . '/' . ltrim($method, '/'); + } else { + $url = str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . ltrim($method, '/'); + } + return url($url); +} + +function get_api_admin_url(string $method, string $controller = '', int $is_compel = 0) +{ + if (empty($method)) return ''; + $prefix = ltrim(request()->route()->getPrefix(), '/'); + $prefix = str_replace(head(explode('/', $prefix)), cnpscy_config('api_admin_prefix'), $prefix); + if (empty($controller) && $is_compel == 0) { + $url = 'api/' . $prefix . '/' . ltrim($method, '/'); + } else { + $url = 'api/' . str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . ltrim($method, '/'); + } + return url($url); +} + +function get_model_url(string $method, string $controller = '', int $is_compel = 0) +{ + if (empty($method)) return url('/'); + $prefix = ltrim(request()->route()->getPrefix(), '/'); + if (empty($controller) && $is_compel == 0) { + $url = $prefix . '/' . ltrim($method, '/'); + } else { + $url = str_replace(last(explode('/', $prefix)), $controller, $prefix) . (empty($controller) ? '' : '/') . $method; + } + return url($url); +} + +function getControllerAndFunction() +{ + $action = \Route::current()->getActionName(); + list($class, $method) = explode('@', $action); + $class = substr(strrchr($class, '\\'), 1); + return ['controller' => $class, 'method' => $method]; +} + +function getControllerRoutePrefix() +{ + $controller = getControllerAndFunction()['controller'] ?? ''; + return strtolower(str_replace('Controller', '', $controller)); +} diff --git a/app/Helper/functions.php b/app/Helper/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..6148d071c022f5dce40e21b59f025a8c806bd91d --- /dev/null +++ b/app/Helper/functions.php @@ -0,0 +1,3953 @@ += $maxLimit ) { + return false; + } else { + return true; + } + } +} + +if ( !function_exists('psQty_num') ) { + /** + * 获取指定进程的数量 + * + * @param string $search + * + * @return int + */ + function psQty_num(string $search) + { + return count(psQty_res($search)); + } +} + +if ( !function_exists('run_exec') ) { + function run_exec(string $command_name) + { + $command = 'php ' . $command_name; + + $output = 0; + + $return_val = ''; + + exec($command, $output, $return_val); + + return $output; + } +} + +if ( !function_exists('make_signature') ) { + /** + * 生成签名 + * + * @param array $args + * @param string $key + * + * @return string + */ + function make_signature(array $args, string $key) + { + //排序 + ksort($args); + //生成sign + $str = urldecode(http_build_query($args)) . '&key=' . $key; + $sign = strtoupper(md5($str)); + return $sign; + } +} + +if ( !function_exists('get_difference_hours') ) { + /** + * 计算两个时间戳之间相差的小时 + * + * @param int $start_time 开始时间戳 + * @param int $end_time 结束时间戳 + * + * @return int + */ + function get_difference_hours(int $start_time, int $end_time):float + { + if ( $start_time < $end_time ) { + $starttime = $start_time; + $endtime = $end_time; + } else { + $starttime = $end_time; + $endtime = $start_time; + } + //计算小时 + $timediff = $endtime - $starttime; + return floatval($timediff / 3600); + } +} + +if ( !function_exists('array_merge_multiple') ) { + /** + * 多维数组合并 + * + * @param $array1 + * @param $array2 + * + * @return array + */ + function array_merge_multiple($array1, $array2) + { + $merge = $array1 + $array2; + $data = []; + foreach ($merge as $key => $val) { + if ( isset($array1[$key]) && is_array($array1[$key]) && isset($array2[$key]) && is_array($array2[$key]) ) { + $data[$key] = array_merge_multiple($array1[$key], $array2[$key]); + } else { + $data[$key] = isset($array2[$key]) ? $array2[$key] : $array1[$key]; + } + } + return $data; + } +} + +if ( !function_exists('export_excel') ) { + /** + * 数据导出到excel(csv文件) + * + * @param $fileName + * @param array $tileArray + * @param array $dataArray + */ + function export_excel($fileName, $tileArray = [], $dataArray = []) + { + ini_set('memory_limit', '1024M'); + ini_set('max_execution_time', 0); + ob_end_clean(); + ob_start(); + header("Content-Type: text/csv"); + header("Content-Disposition:filename=" . $fileName); + $fp = fopen('php://output', 'w'); + fwrite($fp, chr(0xEF) . chr(0xBB) . chr(0xBF));// 转码 防止乱码(比如微信昵称) + fputcsv($fp, $tileArray); + $index = 0; + foreach ($dataArray as $item) { + if ( $index == 1000 ) { + $index = 0; + ob_flush(); + flush(); + } + $index++; + fputcsv($fp, $item); + } + ob_flush(); + flush(); + ob_end_clean(); + } +} + +if ( !function_exists('is_json') ) { + /** + * 判断字符串是否为 Json 格式 + * + * @param string $data Json 字符串 + * @param bool $assoc 是否返回关联数组。默认返回对象 + * + * @return array|bool|object 成功返回转换后的对象或数组,失败返回 false + */ + function is_json($data = '', $assoc = false) + { + if ( PHP_VERSION > 5.3 ) { + json_decode($data); + return (json_last_error() == JSON_ERROR_NONE); + } else { + $data = json_decode($data, $assoc); + if ( ($data && is_object($data)) || (is_array($data) && !empty($data)) ) { + return $data; + } + return false; + } + } +} + +if ( function_exists('get_request_method') ) { + function get_request_method() : string + { + return strtoupper($_SERVER['REQUEST_METHOD'] ?? ''); + } +} + + +if (!function_exists('my_json_encode') ) { + /** + * 统一的json_encode + * + * @param array $data + * @param string $options + * + * @return false|string + */ + function my_json_encode($data, string $options = '') + { + //$data = is_object($data) ? (array)$data : $data; + return json_encode($data, empty($options) ? (JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) : $options); + } +} + + +if ( !function_exists('my_json_decode') ) { + /** + * 统一的 json_decode + * + * @param string $string + * @param bool $assoc + * + * @return mixed + */ + function my_json_decode(string $string, bool $assoc = true) + { + return json_decode($string, $assoc); + } +} + +/** + * 输出xml字符 + */ +function ToXml($arr = []) +{ + if ( !is_array($arr) || count($arr) <= 0 ) { + exception("数组数据异常!"); + } + + $xml = ""; + foreach ($arr as $key => $val) { + if ( is_numeric($val) ) { + $xml .= "<" . $key . ">" . $val . ""; + } else { + $xml .= "<" . $key . ">"; + } + } + $xml .= ""; + return $xml; +} + +/** + * 将xml转为array + */ +function xml_to_array($xml) +{ + if ( !$xml ) { + \Exception("xml数据异常!"); + } + + // 解决部分json数据误入的问题 + $arr = json_decode($xml, true); + if ( is_array($arr) && !empty($arr) ) { + return $arr; + } + // 将XML转为array + $arr = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); + return $arr; +} + +// 生成签名 +function make_sign($paraMap = [], $partner_key = '') +{ + $buff = ""; + ksort($paraMap); + $paraMap['key'] = $partner_key; + foreach ($paraMap as $k => $v) { + if ( null != $v && "null" != $v && '' != $v && "sign" != $k ) { + $buff .= $k . "=" . $v . "&"; + } + } + $reqPar = ''; + if ( strlen($buff) > 0 ) { + $reqPar = substr($buff, 0, strlen($buff) - 1); + } + + return strtoupper(md5($reqPar)); +} + +/** + * 前端获取后端的数据结果集 + * + * @param $data + * + * @return string + */ +function html_get_res_from_admin($data) +{ + return addslashes(my_json_encode($data)); +} + +if ( !function_exists('axios_request') ) { + /** + * 跨域问题设置 + */ + function axios_request() + { + $http_origin = !isset($_SERVER['HTTP_ORIGIN']) ? "*" : $_SERVER['HTTP_ORIGIN']; + + $http_origin = (empty($http_origin) || $http_origin == null || $http_origin == 'null') ? '*' : $http_origin; + + $_SERVER['HTTP_ORIGIN'] = $http_origin; + + //if(strtoupper($_SERVER['REQUEST_METHOD'] ?? "") == 'OPTIONS'){ //vue 的 axios 发送 OPTIONS 请求,进行验证 + // exit; + //} + + header('Access-Control-Allow-Origin: ' . $http_origin);// . $http_origin + header('Access-Control-Allow-Credentials: true');//【如果请求方存在域名请求,那么为true;否则为false】 + header('Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type, Access-Control-Allow-Headers, x-xsrf-token, Accept, x-file-name, x-frame-options, X-Requested-With'); + header('Access-Control-Allow-Methods: *'); + header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, PATCH'); + //header('X-Frame-Options:SAMEORIGIN'); + } +} + +if ( !function_exists('string_underscore_lowercase') ) { + /** + * 字符串如果存在大小,那么自动转换成 _小写 + * + * @param $string + * @param string $format + * + * @return string|string[]|null + */ + function string_underscore_lowercase($string, $format = '_') + { + return preg_replace('/((?<=[a-z])(?=[A-Z]))/', $format, $string); + } +} + +if ( !function_exists('convert_underline') ) { + // 下划线的字符串转骆驼峰 + function convert_underline($str, $ucfirst = true) + { + $str = ucwords(str_replace('_', ' ', $str)); + $str = str_replace(' ', '', lcfirst($str)); + return $ucfirst ? ucfirst($str) : $str; + } +} + +if ( !function_exists('get_string_pluralize') ) { + /** + * 获得指定字符串的复数 + * + * @param $string + * + * @return mixed|string|string[]|null + */ + function get_string_pluralize(string $string) + { + $plural = [ + [ + '/(quiz)$/i', + "$1zes", + ], + [ + '/^(ox)$/i', + "$1en", + ], + [ + '/([m|l])ouse$/i', + "$1ice", + ], + [ + '/(matr|vert|ind)ix|ex$/i', + "$1ices", + ], + [ + '/(x|ch|ss|sh)$/i', + "$1es", + ], + [ + '/([^aeiouy]|qu)y$/i', + "$1ies", + ], + [ + '/([^aeiouy]|qu)ies$/i', + "$1y", + ], + [ + '/(hive)$/i', + "$1s", + ], + [ + '/(?:([^f])fe|([lr])f)$/i', + "$1$2ves", + ], + [ + '/sis$/i', + "ses", + ], + [ + '/([ti])um$/i', + "$1a", + ], + [ + '/(buffal|tomat)o$/i', + "$1oes", + ], + [ + '/(bu)s$/i', + "$1ses", + ], + [ + '/(alias|status)$/i', + "$1es", + ], + [ + '/(octop|vir)us$/i', + "$1i", + ], + [ + '/(ax|test)is$/i', + "$1es", + ], + [ + '/s$/i', + "s", + ], + [ + '/$/', + "s", + ], + ]; + + $singular = [ + [ + "/s$/", + "", + ], + [ + "/(n)ews$/", + "$1ews", + ], + [ + "/([ti])a$/", + "$1um", + ], + [ + "/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/", + "$1$2sis", + ], + [ + "/(^analy)ses$/", + "$1sis", + ], + [ + "/([^f])ves$/", + "$1fe", + ], + [ + "/(hive)s$/", + "$1", + ], + [ + "/(tive)s$/", + "$1", + ], + [ + "/([lr])ves$/", + "$1f", + ], + [ + "/([^aeiouy]|qu)ies$/", + "$1y", + ], + [ + "/(s)eries$/", + "$1eries", + ], + [ + "/(m)ovies$/", + "$1ovie", + ], + [ + "/(x|ch|ss|sh)es$/", + "$1", + ], + [ + "/([m|l])ice$/", + "$1ouse", + ], + [ + "/(bus)es$/", + "$1", + ], + [ + "/(o)es$/", + "$1", + ], + [ + "/(shoe)s$/", + "$1", + ], + [ + "/(cris|ax|test)es$/", + "$1is", + ], + [ + "/([octop|vir])i$/", + "$1us", + ], + [ + "/(alias|status)es$/", + "$1", + ], + [ + "/^(ox)en/", + "$1", + ], + [ + "/(vert|ind)ices$/", + "$1ex", + ], + [ + "/(matr)ices$/", + "$1ix", + ], + [ + "/(quiz)zes$/", + "$1", + ], + ]; + + $irregular = [ + [ + 'move', + 'moves', + ], + [ + 'sex', + 'sexes', + ], + [ + 'child', + 'children', + ], + [ + 'man', + 'men', + ], + [ + 'person', + 'people', + ], + ]; + + $uncountable = [ + 'sheep', + 'fish', + 'series', + 'species', + 'money', + 'rice', + 'information', + 'equipment', + ]; + + if ( in_array(strtolower($string), $uncountable) ) return $string; + + foreach ($irregular as $noun) { + if ( strtolower($string) == $noun[0] ) return $noun[1]; + } + foreach ($plural as $pattern) { + $str = preg_replace($pattern[0], $pattern[1], $string); + if ( $str !== null && $str != $string ) return $str; + } + } +} + +if ( !function_exists('get_month_range') ) { + /** + * 指定日期范围之内的所有月份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_month_range(string $start_date, string $end_date, string $format = 'Y-m') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' month')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('get_year_range') ) { + function get_year_range(string $start_date, string $end_date, string $format = 'Y') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' year')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('load_vendor') ) { + /** + * 加载composer的包 - vendor文件目录下 + */ + function load_vendor() + { + /* + |-------------------------------------------------------------------------- + | Register The Auto Loader + |-------------------------------------------------------------------------- + | + | Composer provides a convenient, automatically generated class loader for + | our application. We just need to utilize it! We'll simply require it + | into the script here so that we don't have to worry about manual + | loading any of our classes later on. It feels great to relax. + | + */ + require ROOT . '/vendor/autoload.php'; + } +} + +if ( !function_exists('data_get') ) { + /** + * Get an item from an array or object using "dot" notation. + * + * @param mixed $target + * @param string|array|int $key + * @param mixed $default + * + * @return mixed + */ + function data_get($target, $key, $default = null) + { + if ( is_null($key) ) { + return $target; + } + + $key = is_array($key) ? $key : explode('.', $key); + + while ( !is_null($segment = array_shift($key)) ) { + if ( $segment === '*' ) { + if ( $target instanceof Collection ) { + $target = $target->all(); + } elseif ( !is_array($target) ) { + return ($default); + } + + $result = []; + + foreach ($target as $item) { + $result[] = data_get($item, $key); + } + + return in_array('*', $key) ? \system\exp\Cnpscy\Library\Arr::collapse($result) : $result; + } + + if ( \system\exp\Cnpscy\Library\Arr::accessible($target) && \system\exp\Cnpscy\Library\Arr::exists($target, $segment) ) { + $target = $target[$segment]; + } elseif ( is_object($target) && isset($target->{$segment}) ) { + $target = $target->{$segment}; + } else { + return ($default); + } + } + + return $target; + } +} + +if ( !function_exists('data_set') ) { + /** + * Set an item on an array or object using dot notation. + * + * @param mixed $target + * @param string|array $key + * @param mixed $value + * @param bool $overwrite + * + * @return mixed + */ + function data_set(&$target, $key, $value, $overwrite = true) + { + $segments = is_array($key) ? $key : explode('.', $key); + + if ( ($segment = array_shift($segments)) === '*' ) { + if ( !Arr::accessible($target) ) { + $target = []; + } + + if ( $segments ) { + foreach ($target as &$inner) { + data_set($inner, $segments, $value, $overwrite); + } + } elseif ( $overwrite ) { + foreach ($target as &$inner) { + $inner = $value; + } + } + } elseif ( Arr::accessible($target) ) { + if ( $segments ) { + if ( !Arr::exists($target, $segment) ) { + $target[$segment] = []; + } + + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ( $overwrite || !Arr::exists($target, $segment) ) { + $target[$segment] = $value; + } + } elseif ( is_object($target) ) { + if ( $segments ) { + if ( !isset($target->{$segment}) ) { + $target->{$segment} = []; + } + + data_set($target->{$segment}, $segments, $value, $overwrite); + } elseif ( $overwrite || !isset($target->{$segment}) ) { + $target->{$segment} = $value; + } + } else { + $target = []; + + if ( $segments ) { + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ( $overwrite ) { + $target[$segment] = $value; + } + } + + return $target; + } +} + +if ( !function_exists('config') ) { + /** + * Get / set the specified configuration value. + * + * If an array is passed as the key, we will assume you want to set an array of values. + * + * @param array|string|null $key + * @param mixed $default + * + * @return mixed|\Illuminate\Config\Repository + */ + function config($key = null, $default = null) + { + if ( is_null($key) ) { + return app('config'); + } + + if ( is_array($key) ) { + return app('config')->set($key); + } + return app('config')->get($key, $default); + } +} + +if ( !function_exists('abort') ) { + /** + * Throw an HttpException with the given data. + * + * @param $code + * @param string $msg + * @param array $headers + * + * @return mixed + */ + function abort($code, $msg = '', array $headers = []) + { + return \Cnpscy\Embedded\Router::throwException($msg, $code); + exit; + //return http_response_code($code); + + try { + if ( $code instanceof Response ) { + throw new \Cnpscy\Exceptions\HttpResponseException($code); + } elseif ( $code instanceof Responsable ) { + throw new \Cnpscy\Exceptions\HttpResponseException($code->toResponse(request())); + } + if ( $code == 404 ) { + throw new \Cnpscy\Exceptions\NotFoundHttpException($msg); + } + throw new \Cnpscy\Exceptions\HttpException($code, $msg, null, $headers); + } catch (\Cnpscy\Exceptions\HttpExceptionInterface $e) { + http_response_code($e->getStatusCode()); + + \Cnpscy\Embedded\Response::new() + ->failMsg(\app\lib\code::EMAIL_NO_EXIST, $e->getMessage() ?? $msg); + } + } +} + +if ( !function_exists('http_response_code') ) { + function http_response_code($code = null) + { + if ( $code !== null ) { + switch ($code) { + case 100: + $text = 'Continue'; + break; + case 101: + $text = 'Switching Protocols'; + break; + case 200: + $text = 'OK'; + break; + case 201: + $text = 'Created'; + break; + case 202: + $text = 'Accepted'; + break; + case 203: + $text = 'Non-Authoritative Information'; + break; + case 204: + $text = 'No Content'; + break; + case 205: + $text = 'Reset Content'; + break; + case 206: + $text = 'Partial Content'; + break; + case 300: + $text = 'Multiple Choices'; + break; + case 301: + $text = 'Moved Permanently'; + break; + case 302: + $text = 'Moved Temporarily'; + break; + case 303: + $text = 'See Other'; + break; + case 304: + $text = 'Not Modified'; + break; + case 305: + $text = 'Use Proxy'; + break; + case 400: + $text = 'Bad Request'; + break; + case 401: + $text = 'Unauthorized'; + break; + case 402: + $text = 'Payment Required'; + break; + case 403: + $text = 'Forbidden'; + break; + case 404: + $text = 'Not Found'; + break; + case 405: + $text = 'Method Not Allowed'; + break; + case 406: + $text = 'Not Acceptable'; + break; + case 407: + $text = 'Proxy Authentication Required'; + break; + case 408: + $text = 'Request Time-out'; + break; + case 409: + $text = 'Conflict'; + break; + case 410: + $text = 'Gone'; + break; + case 411: + $text = 'Length Required'; + break; + case 412: + $text = 'Precondition Failed'; + break; + case 413: + $text = 'Request Entity Too Large'; + break; + case 414: + $text = 'Request-URI Too Large'; + break; + case 415: + $text = 'Unsupported Media Type'; + break; + case 500: + $text = 'Internal Server Error'; + break; + case 501: + $text = 'Not Implemented'; + break; + case 502: + $text = 'Bad Gateway'; + break; + case 503: + $text = 'Service Unavailable'; + break; + case 504: + $text = 'Gateway Time-out'; + break; + case 505: + $text = 'HTTP Version not supported'; + break; + default: + exit('Unknown http status code "' . htmlentities($code) . '"'); + break; + } + + $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); + + header($protocol . ' ' . $code . ' ' . $text); + + $GLOBALS['http_response_code'] = $code; + } else { + + $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); + } + return $code; + } +} + +if ( !function_exists('filtering_html_tags') ) { + /** + * 过滤HTML的标签,只保留文本 + * + * @param $string + * + * @return string + */ + function filtering_html_tags($string) + { + return strip_tags(htmlspecialchars_decode($string), ''); + } +} + +if ( !function_exists('hash_make') ) { + /** + * hash加密 + * + * @param string $password + * + * @return string + */ + function hash_make(string $password = '123456') : string + { + return hash_encryption($password); + } +} + +if ( !function_exists('hash_encryption') ) { + /** + * [hash_encryption] + * + * @param string $pass [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :hash加密 + * @englishAnnotation : + * @version :1.0 + */ + function hash_encryption($pass = '123456') : string + { + return password_hash($pass, PASSWORD_DEFAULT); + } +} + +if ( !function_exists('hash_verify') ) { + /** + * [hash_verify] + * + * @param string $pass [description] + * @param string $hash_pass [description] + * + * @return bool + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :hash解密 + * @englishAnnotation : + * + * @version :1.0 + */ + function hash_verify(string $pass, string $hash_pass) : bool + { + return password_verify($pass, $hash_pass); + } +} + +/** + * 数组按照指定字段进行分组 + * + * @param array $array + * @param string $field + * + * @return array + */ +function array_field_group(array $array = [], string $field = '') : array +{ + $new_ary = []; + foreach ($array as $k => $val) $new_ary[$val[$field]][] = $val; + return $new_ary; +} + +//计算中奖概率 +function get_random_probability($proArr) +{ + $rs = ''; //z中奖结果 + $proSum = array_sum($proArr); //概率数组的总概率精度 + //概率数组循环 + foreach ($proArr as $key => $proCur) { + $randNum = mt_rand(0, $proSum); + if ( $randNum <= $proCur ) { + $rs = $key; + break; + } else $proSum -= $proCur; + } + unset($proArr); + return $rs; +} + +/** + * 对比数组的不同: + * 第二个数组对于第一个数组的不同数据返回 + * 并不是array_diff数组的效果,找两个数组之间的差集 + * + * @param $array1 + * @param $array2 + * + * @return array + */ +function get_array_diff($array1, $array2) +{ + if ( empty($array2) ) return $array1; + $diff = []; + foreach ($array1 as $key => $val) { + if ( !isset($array2[$val]) ) $diff[$val] = $val; + } + return $diff; +} + +function list_to_tree($list, $primary_key = 'menu_id', $pid = 'parent_id', $child = '_child', $root = 0) : array +{ + $tree = []; + if ( is_array($list) ) { + $refer = []; + foreach ($list as $key => $data) $refer[$data[$primary_key]] =& $list[$key]; + foreach ($list as $key => $data) { + $parentId = $data[$pid]; + if ( $root == $parentId ) $tree[] =& $list[$key]; else { + if ( isset($refer[$parentId]) ) { + $parent =& $refer[$parentId]; + $parent[$child][] =& $list[$key]; + } + } + } + } + return $tree; +} + +/** + * [login_token] + * + * @param integer $length [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:登录token值 + * @englishAnnotation: + */ +function login_token($length = 60) : string +{ + //, '#', '%', '&', '+', '^', '`' --- 会影响参数获取,参数获取不全 + $chars = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + '!', + '@', + '$', + '*', + '(', + ')', + '-', + '_', + '[', + ']', + '{', + '}', + '<', + '>', + '~', + '=', + ',', + '.', + ';', + ':', + '/', + '?', + '|', + ]; + $array = rand_array_fill($chars, $length); + $rand = ''; + for ($i = 0; $i < $length; $i++) $rand .= $chars[$array[$i]]; + + unset($length, $array, $chars); + + return $rand; +} + +function rand_array_fill(&$ary, $length) +{ + $count = count($ary); + if ( $count < $length ) { + $new_ary = []; + for ($i = 0; $i < ceil($length / $count); $i++) { + for ($j = 0; $j < count($ary); $j++) { + array_push($new_ary, $ary[$j]); + } + } + $ary = $new_ary; + return array_rand($new_ary, $length); + } else return array_rand($ary, $length); +} + +if ( !function_exists('get_client_info') ) { + /** + * 获取IP与浏览器信息、语言 + * + * @return array + */ + function get_client_info() : array + { + if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) { + $XFF = $_SERVER['HTTP_X_FORWARDED_FOR']; + $client_pos = strpos($XFF, ', '); + $client_ip = false !== $client_pos ? substr($XFF, 0, $client_pos) : $XFF; + unset($XFF, $client_pos); + } else $client_ip = $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? $_SERVER['LOCAL_ADDR'] ?? '0.0.0.0'; + $client_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) : ''; + $client_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; + return [ + 'ip' => &$client_ip, + 'lang' => &$client_lang, + 'agent' => &$client_agent, + ]; + } +} + +if ( !function_exists('get_ip') ) { + function get_ip() : string + { + $data = get_client_info(); + return $data['ip'] ?? ''; + } +} + +if ( !function_exists('get_this_url') ) { + function get_this_url() + { + return 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; + } +} + +if ( !function_exists('get_request_url') ) { + function get_request_url() + { + return $_SERVER['REQUEST_URI']; + } +} + +/** + * [request_post 模拟post进行url请求] + * + * @Author :cnpscy——<[2278757482@qq.com]> + * @DateTime :2017-09-25 + * @chineseAnnotation:模拟post进行url请求 + * @englishAnnotation:Simulate post for URL requests + * + * @param string $url [url地址] + * @param array $post_data [提交的数据] + * @param boolean $ispost [是否是post请求] + * @param string $type [返回格式] + * + * @return array [description] + */ +function request_post(string $url = '', array $post_data = [], $ispost = true, $type = 'json') +{ + @header("Content-type: text/html; charset=utf-8"); + if ( empty($url) ) return false; + $o = ""; + if ( !empty($post_data) ) { + foreach ($post_data as $k => $v) $o .= "$k=" . urlencode($v) . "&"; + $post_data = substr($o, 0, -1); + $key = md5(base64_encode($post_data)); + } else $key = 'key'; + if ( $ispost ) { + $url = $url; + $curlPost = $post_data; + } else { + $url = $url . '?' . implode(',', $post_data); + $curlPost = 'key=' . $key; + } + $ch = curl_init();//初始化curl + curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0);//设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 + if ( $ispost ) { + curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); + } + $data = curl_exec($ch);//运行curl + curl_close($ch); + $object = json_decode($data); + $return = object_to_array($object); + return $return; +} + +/** + * [object_to_array 对象转为数组] + * + * @Author :cnpscy——<[2278757482@qq.com]> + * @DateTime :2017-09-26 + * @chineseAnnotation:对象转为数组 + * @englishAnnotation:The object is converted to an array + * + * @param object $array [需要转换的对象] + * + * @return array [description] + */ +function object_to_array($array) +{ + if ( is_object($array) ) $array = (array)$array; + if ( is_array($array) ) { + foreach ($array as $key => $value) $array[$key] = object_to_array($value); + } + return $array; +} + +/** + * [config_array_analysis] + * + * @param [type] $data [需要解析的数组] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :配置多维数组的解析 + * @englishAnnotation : + */ +function config_array_analysis($data) +{ + $value_extra = preg_split('/[,;\r\n]+/', trim($data, ",;\r\n")); + if ( strpos($data, ':') ) { + $array = []; + foreach ($value_extra as $val) { + [ + $k, + $v, + ] = explode(':', $val); + $array[$k] = $v; + } + } else $array = $value_extra; + return $array ?? []; +} + +/** + * [is_base64] + * + * @param [type] $str [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测是否为base64位编码 + * @englishAnnotation : + */ +function is_base64($str) +{ + //这里多了个纯字母和纯数字的正则判断 + if ( @preg_match('/^[0-9]*$/', $str) || @preg_match('/^[a-zA-Z]*$/', $str) ) return false; elseif ( is_utf8(base64_decode($str)) && base64_decode($str) != '' ) return true; + return false; +} + +/** + * [is_utf8] + * + * @param [type] $str [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :判断否为UTF-8编码 + * @englishAnnotation : + */ +function is_utf8($str) +{ + $len = strlen($str); + for ($i = 0; $i < $len; $i++) { + $c = ord($str[$i]); + if ( $c > 128 ) { + if ( ($c > 247) ) return false; elseif ( $c > 239 ) $bytes = 4; + elseif ( $c > 223 ) $bytes = 3; + elseif ( $c > 191 ) $bytes = 2; + else return false; + if ( ($i + $bytes) > $len ) return false; + while ( $bytes > 1 ) { + $i++; + $b = ord($str[$i]); + if ( $b < 128 || $b > 191 ) return false; + $bytes--; + } + } + } + return true; +} + +function getMillisecond() +{ + [ + $t1, + $t2, + ] = explode(' ', microtime()); + return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); +} + +/** + * [check_url] + * + * @param string $_url [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测URL地址格式 + * @englishAnnotation : + * @version :1.0 + */ +if ( !function_exists('check_url') ) { + function check_url(string $url) : bool + { + $str = "/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/"; + if ( !preg_match($str, $url) ) return false; else return true; + } +} + +if ( !function_exists('filter_url') ) { + function filter_url(string $url) : bool + { + return filter_var($url, FILTER_VALIDATE_URL) !== false ? false : true; + } +} + +/** + * [array_ksort_to_string] + * + * @param [type] $data [description] + * + * @return string + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :数组升序转成字符串 + * @englishAnnotation : + * @version :1.0 + */ +function array_ksort_to_string($data) : string +{ + if ( is_string($data) ) return $data; + ksort($data); + $tmps = []; + foreach ($data as $k => $v) $tmps[] = $k . $v; + return implode('', $tmps); +} + +/** + * [mobile_web] + * + * @return boolean [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:是否为手机端访问 + * @englishAnnotation: + */ +function mobile_web() : bool +{ + $useragent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; + $useragent_commentsblock = preg_match('|\(.*?\)|', $useragent, $matches) > 0 ? $matches[0] : ''; + + $mobile_os_list = [ + 'Google Wireless Transcoder', + 'Windows CE', + 'WindowsCE', + 'Symbian', + 'Android', + 'armv6l', + 'armv5', + 'Mobile', + 'CentOS', + 'mowser', + 'AvantGo', + 'Opera Mobi', + 'J2ME/MIDP', + 'Smartphone', + 'Go.Web', + 'Palm', + 'iPAQ', + ]; + $mobile_token_list = [ + 'Profile/MIDP', + 'Configuration/CLDC-', + '160×160', + '176×220', + '240×240', + '240×320', + '320×240', + 'UP.Browser', + 'UP.Link', + 'SymbianOS', + 'PalmOS', + 'PocketPC', + 'SonyEricsson', + 'Nokia', + 'BlackBerry', + 'Vodafone', + 'BenQ', + 'Novarra-Vision', + 'Iris', + 'NetFront', + 'HTC_', + 'Xda_', + 'SAMSUNG-SGH', + 'Wapaka', + 'DoCoMo', + 'iPhone', + 'iPod', + ]; + + $found_mobile = CheckSubstrs($mobile_os_list, $useragent_commentsblock) || CheckSubstrs($mobile_token_list, $useragent); + + if ( $found_mobile ) return true; else return false; +} + +function CheckSubstrs($substrs, $text) +{ + foreach ($substrs as $substr) { + if ( false !== strpos($text, $substr) ) return true; + } + return false; +} + +/** + * [is_app] + * + * @return boolean [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测是否为App + * @englishAnnotation: + */ +function is_app() +{ + if ( isset ($_SERVER['HTTP_X_WAP_PROFILE']) ) return true;// 如果有HTTP_X_WAP_PROFILE则一定是移动设备 + // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 + if ( isset ($_SERVER['HTTP_VIA']) ) return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;// 找不到为flase,否则为true + // 脑残法,判断手机发送的客户端标志,兼容性有待提高 + if ( isset ($_SERVER['HTTP_USER_AGENT']) ) { + $clientkeywords = [ + 'nokia', + 'sony', + 'ericsson', + 'mot', + 'samsung', + 'htc', + 'sgh', + 'lg', + 'sharp', + 'sie-', + 'philips', + 'panasonic', + 'alcatel', + 'lenovo', + 'iphone', + 'ipod', + 'blackberry', + 'meizu', + 'android', + 'netfront', + 'symbian', + 'ucweb', + 'windowsce', + 'palm', + 'operamini', + 'operamobi', + 'openwave', + 'nexusone', + 'cldc', + 'midp', + 'wap', + 'mobile', + ]; + // 从HTTP_USER_AGENT中查找手机浏览器的关键字 + if ( preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])) ) return true; + } + // 协议法,因为有可能不准确,放到最后判断 + if ( isset ($_SERVER['HTTP_ACCEPT']) ) { + // 如果只支持wml并且不支持html那一定是移动设备 + // 如果支持wml和html但是wml在html之前则是移动设备 + if ( (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) ) return true; + } + return false; +} + +/** + * 检测身份证号码 + * + * @param string $id + * + * @return bool + */ +function check_idcard(string $id) : bool +{ + $id = strtoupper($id); + $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/"; + $arr_split = []; + if ( !preg_match($regx, $id) ) return false; + if ( 15 == strlen($id) ) { //检查15位 + $regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/"; + @preg_match($regx, $id, $arr_split); + //检查生日日期是否正确 + $dtm_birth = "19" . $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4]; + if ( !strtotime($dtm_birth) ) return false; else return true; + } else { //检查18位 + $regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/"; + @preg_match($regx, $id, $arr_split); + $dtm_birth = $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4]; + if ( !strtotime($dtm_birth) ) return false;//检查生日日期是否正确 + else { + //检验18位身份证的校验码是否正确。 + //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 + $arr_int = [ + 7, + 9, + 10, + 5, + 8, + 4, + 2, + 1, + 6, + 3, + 7, + 9, + 10, + 5, + 8, + 4, + 2, + ]; + $arr_ch = [ + '1', + '0', + 'X', + '9', + '8', + '7', + '6', + '5', + '4', + '3', + '2', + ]; + $sign = 0; + for ($i = 0; $i < 17; $i++) { + $b = (int)$id{$i}; + $w = $arr_int[$i]; + $sign += $b * $w; + } + $n = $sign % 11; + $val_num = $arr_ch[$n]; + if ( $val_num != substr($id, 17, 1) ) return false; else return true;//phpfensi.com + } + } +} + +/** + * [round_down_decimal] + * + * @param float|integer $money_num [description] + * @param int|integer $length [description] + * + * @return float + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:保留几位小数,向下取,就是直接截断 3 为小数即可。 + * @englishAnnotation: + */ +function round_down_decimal(float $money_num = 0, int $length = 2) : float +{ + return substr($money_num, 0, strlen($money_num) - _getFloatLength($money_num) + $length); +} + +/** + * [_getFloatLength] + * + * @param [type] $num [description] + * + * @return int + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :计算小数部分的长度 + * @englishAnnotation : + * @version :1.0 + */ +function _getFloatLength($num) : int +{ + $count = 0; + $temp = explode('.', $num); + if ( sizeof($temp) > 1 ) { + $decimal = end($temp); + $count = strlen($decimal); + } + return $count; +} + +/** + * [set_money_conversion] + * + * @param float|integer $money [description] + * @param int|integer $length [description] + * + * @return float + * + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:金额插入数据库的时候,单位转换为“分”【具体根据$length长度而定】 + * @englishAnnotation: + * @version :1.0 + */ +function set_money_conversion(float $money = 0, int $length = 2) : float +{ + return floatval($money) * pow(10, $length); +} + +/** + * [get_money_conversion] + * + * @param float|integer $money [description] + * @param int|integer $length [description] + * + * @return [type] [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :金额取出的时候,由“分”转化为“元”【具体根据$length长度而定】 + * @englishAnnotation : + */ +function get_money_conversion(float $money = 0, int $length = 2) : float +{ + return floatval($money) / pow(10, $length); +} + +/** + * [is_date] + * + * @param string $date [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:是否为日期格式 + * @englishAnnotation: + * @version :1.0 + */ +function is_date(string $date) : bool +{ + $ret = strtotime($date); + return $ret !== false && $ret != -1; + + // if (date('Y-m-d H:i:s', strtotime($date)) === $date) return true; + // else return false; +} + +/** + * [month_list] + * + * @param int $start [description] + * @param int $end [description] + * + * @return [type] [description] + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation : + * @englishAnnotation : + */ +function month_list(int $start, int $end) : array +{ + if ( !is_numeric($start) || !is_numeric($end) || ($end <= $start) ) return ''; + $start = date('Y-m', $start); + $end = date('Y-m', $end); + //转为时间戳 + $start = strtotime($start . '-01'); + $end = strtotime($end . '-01'); + $i = 0; + $d = []; + while ( $start <= $end ) { + //这里累加每个月的的总秒数 计算公式:上一月1号的时间戳秒数减去当前月的时间戳秒数 + $d[$i] = trim(date('Y-m', $start), ' '); + $start += strtotime('+1 month', $start) - $start; + $i++; + } + return $d; +} + +function get_errors_list(array $data = []) : string +{ + $html = ''; + if ( !empty($data) ) { + foreach ($data as $k => $v) $html .= $k + 1 . '.' . $v . PHP_EOL; + } + return $html; +} + +//内存占用空间 +function memory_usage() +{ + $memory = ( !function_exists('memory_get_usage')) ? '0' : round(memory_get_usage() / 1024 / 1024, 2) . 'MB'; + return $memory; +} + +/** + * 参数说明 + * $string 欲截取的字符串 + * $sublen 截取的长度 + * $start 从第几个字节截取,默认为0 + * $code 字符编码,默认UTF-8 + */ +function cut_str(string $string, int $sublen = 100, int $start = 0, $code = 'UTF-8') +{ + if ( $code == 'UTF-8' ) { + $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; + preg_match_all($pa, $string, $t_string); + if ( count($t_string[0]) - $start > $sublen ) return join('', array_slice($t_string[0], $start, $sublen)) . "....."; + return join('', array_slice($t_string[0], $start, $sublen)); + } else { + $start = $start * 2; + $sublen = $sublen * 2; + $strlen = strlen($string); + $tmpstr = ''; + for ($i = 0; $i < $strlen; $i++) { + if ( $i >= $start && $i < ($start + $sublen) ) { + if ( ord(substr($string, $i, 1)) > 129 ) { + $tmpstr .= substr($string, $i, 2); + } else { + $tmpstr .= substr($string, $i, 1); + } + } + if ( ord(substr($string, $i, 1)) > 129 ) $i++; + } + if ( strlen($tmpstr) < $strlen ) $tmpstr .= ""; + return $tmpstr; + } +} + +/** + * [strToHex] + * + * @param [type] $string [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :字符串转16进制 + * @englishAnnotation : + * @version :1.0 + */ +function strToHex($string) +{ + $this_i = $hex = ""; + for ($i = 0; $i < strlen($string); $i++) { + $this_i = dechex(ord($string[$i])); + if ( strlen($this_i) == 0 ) $this_i = '00'; elseif ( strlen($this_i) == 1 ) $this_i = '0' . $this_i; + $hex .= $this_i; + } + $hex = strtoupper($hex); + return $hex; +} + +/** + * [hexToStr] + * + * @param [type] $hex [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :16进制转字符串 + * @englishAnnotation : + * @version :1.0 + */ +function hexToStr($hex) +{ + $sendStrArray = str_split(str_replace(' ', '', $hex), 2); // 将16进制数据转换成两个一组的数组 + $send_info = ''; + for ($j = 0; $j < count($sendStrArray); $j++) { + $send_info .= chr(hexdec($sendStrArray[$j])); + } + return $send_info; +} + +function crc16($string, $start_reverse = 0) +{ + $string = pack('H*', $string); + $crc = 0xFFFF; + for ($x = 0; $x < strlen($string); $x++) { + $crc = $crc ^ ord($string[$x]); + for ($y = 0; $y < 8; $y++) { + if ( ($crc & 0x0001) == 0x0001 ) { + $crc = (($crc >> 1) ^ 0xA001); + } else { + $crc = $crc >> 1; + } + } + } + $more_data = strlen(dechex(floor($crc % 256))) < 2 ? '0' . dechex($crc % 256) : dechex($crc % 256); + $less_data = strlen(dechex(floor($crc / 256))) < 2 ? '0' . dechex($crc / 256) : dechex($crc / 256); + return strtoupper($start_reverse == 0 ? ($more_data . $less_data) : ($less_data . $more_data)); +} + +function gencrc16($string) +{ + $crc = 0xFFFF; + for ($x = 0; $x < strlen($string); $x++) { + $crc = $crc ^ ord($string[$x]); + for ($y = 0; $y < 8; $y++) { + if ( ($crc & 0x0001) == 0x0001 ) { + $crc = (($crc >> 1) ^ 0xA001); + } else { + $crc = $crc >> 1; + } + } + } + return strtoupper($crc); +} + +/** + * @param $lat1 + * @param $lng1 + * @param $lat2 + * @param $lng2 + * + * @return int + * + * 经纬度计算两点之间的距离 + */ +function getDistance($lat1, $lng1, $lat2, $lng2) +{ + + // 将角度转为狐度 + $radLat1 = deg2rad($lat1);// deg2rad()函数将角度转换为弧度 + $radLat2 = deg2rad($lat2); + $radLng1 = deg2rad($lng1); + $radLng2 = deg2rad($lng2); + + $a = $radLat1 - $radLat2; + $b = $radLng1 - $radLng2; + + $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6378.137; + + return $s; +} + +/** + * @param $lat1 + * @param $lon1 + * @param $lat2 + * @param $lon2 + * @param float $radius 星球半径 KM + * + * @return float + * + * 经纬度计算两点之间的距离 + */ +function distance($lat1, $lon1, $lat2, $lon2, $radius = 6378.137) +{ + $rad = floatval(M_PI / 180.0); + + $lat1 = floatval($lat1) * $rad; + $lon1 = floatval($lon1) * $rad; + $lat2 = floatval($lat2) * $rad; + $lon2 = floatval($lon2) * $rad; + + $theta = $lon2 - $lon1; + + $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta)); + + if ( $dist < 0 ) { + $dist += M_PI; + } + return $dist = $dist * $radius; +} + +function request_function(string $url = '', array $post_data = [], $ispost = true, $json_conversion = 1) +{ + if ( empty($url) ) return false; + $o = ""; + if ( !empty($post_data) ) { + foreach ($post_data as $k => $v) $o .= "$k=" . urlencode($v) . "&"; + $post_data = substr($o, 0, -1); + $key = md5(base64_encode($post_data)); + } else $key = 'key'; + if ( $ispost ) { + $url = $url; + $curlPost = $post_data; + } else { + $url = $url . '?' . $post_data; + $curlPost = 'key=' . $key; + } + $ch = curl_init();//初始化curl + curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页 + curl_setopt($ch, CURLOPT_HEADER, 0);//设置header + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //禁止 cURL 验证对等证书 + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否检测服务器的域名与证书上的是否一致 + if ( $ispost ) { + curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 + curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); + } + $data = curl_exec($ch);//运行curl + curl_close($ch); + return $json_conversion ? json_decode($data, true) : $data; +} + +/** + * [set_field_filtering] + * + * @param string $field [数据] + * @param string $field_type [数据的类型] + * @param string $default_val [默认值] + * + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:数据类型过滤 + * @englishAnnotation: + */ +function set_field_filtering($field = '', $field_type = 'string', $default_val = '') +{ + if ( isset($field) || $field == null ) return $field; + $field_type = strtolower(trim($field_type)); + if ( in_array($field_type, [ + 'str', + 'string', + 'varchar', + ]) ) return trim($field ?? $default_val); elseif ( in_array($field_type, [ + 'int', + 'intval', + 'number', + ]) ) return intval($field ?? $default_val); + elseif ( in_array($field_type, [ + 'double', + 'float', + 'floatval', + ]) ) return floatval($field ?? $default_val); +} + +function get_server_url() : string +{ + $pact = isset($_SERVER['HTTPS']) && 'off' !== $_SERVER['HTTPS'] ? 'https://' : 'http://'; + return $pact . ($_SERVER['SERVER_NAME'] ?? ''); +} + +function set_server_url($str) : string +{ + return get_server_url() . $str; + // return get_server_url() . $str; +} + +function remove_server_url(string $img) : string +{ + return str_replace(get_server_url(), "", $img); +} + +//生成随机数 +function get_rand($sum = 6) +{ + $rand = ''; + for ($i = 1; $i <= $sum; $i++) $rand .= rand(0, 9); + return $rand; +} + +/** + * 获取随机字符串 + * + * @param int $randLength 长度 + * @param int $create_time 是否加入当前时间戳 + * @param int $includenumber 是否包含数字 + * + * @return string + */ +if ( !function_exists('rand_str') ) { + function rand_str($randLength = 6, $create_time = 1, $includenumber = 1) + { + if ( $includenumber ) { + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQEST123456789'; + } else { + $chars = 'abcdefghijklmnopqrstuvwxyz'; + } + $len = strlen($chars); + $randStr = ''; + for ($i = 0; $i < $randLength; $i++) { + $randStr .= $chars[mt_rand(0, $len - 1)]; + } + $tokenvalue = $randStr; + if ( $create_time ) { + $tokenvalue = $randStr . '-' . time(); + } + return $tokenvalue; + } +} + +/** + * 倒计时 转化成 天-时分秒 展示 + * + * @param $time + * + * @return string + */ +function countdown_conversion_time($time) +{ + if ( empty($time) ) return ''; + $day = intval($time / (60 * 60 * 24)); + $hour = intval($time / (60 * 60) - $day * 24); + $minute = intval($time / 60 - $day * 24 * 60 - $hour * 60); + $second = intval($time - $day * 24 * 60 * 60 - $hour * 60 * 60 - $minute * 60); + + $day = (intval($day) <= 0) ? '' : $day . '天 '; + if ( intval($hour) <= 9 ) $hour = '0' . $hour; + if ( intval($minute) <= 9 ) $minute = '0' . $minute; + if ( intval($second) <= 9 ) $second = '0' . $second; + return $day . $hour . '时' . $minute . '分' . $second . '秒'; +} + +function amount_conversion($money, $length = 2) +{ + return round(floatval($money), $length); +} + +/** + * 金额格式化 + * + * @param [float] $value [金额] + * @param [int] $decimals [保留的位数] + * @param [string] $dec_point [保留小数分隔符] + */ +function PriceNumberFormat($value, $decimals = 2, $dec_point = '.') +{ + return number_format($value, $decimals, $dec_point, ''); +} + +function getWxPayMoeny($moeny) +{ + return $moeny * 100;//以分为单位 +} + +/* + * 检测银行卡 + 16-19 位卡号校验位采用 Luhm 校验方法计算: + 1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2 + 2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字 + 3,将加法和加上校验位能被 10 整除。 +*/ +function check_bank_card($bankCardNo) +{ + $strlen = strlen($bankCardNo); + if ( $strlen < 15 || $strlen > 19 ) { + return false; + } + if ( !preg_match("/^\d{15}$/i", $bankCardNo) && !preg_match("/^\d{16}$/i", $bankCardNo) && !preg_match("/^\d{17}$/i", $bankCardNo) && !preg_match("/^\d{18}$/i", $bankCardNo) && !preg_match("/^\d{19}$/i", $bankCardNo) ) { + return false; + } + $arr_no = str_split($bankCardNo); + $last_n = $arr_no[count($arr_no) - 1]; + krsort($arr_no); + $i = 1; + $total = 0; + foreach ($arr_no as $n) { + if ( $i % 2 == 0 ) { + $ix = $n * 2; + if ( $ix >= 10 ) { + $nx = 1 + ($ix % 10); + $total += $nx; + } else { + $total += $ix; + } + } else { + $total += $n; + } + $i++; + } + $total -= $last_n; + $x = 10 - ($total % 10); + if ( $x != $last_n ) { + return false; + } + return true; +} + +/** + * 生成混合code + * + * @param integer $length [description] + * + * @return [type] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :登录token值 + * @englishAnnotation : + */ +function make_blend_code($length = 20) : string +{ + $chars = [ + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z', + '0', + '1', + '2', + '3', + '4', + '5', + '6', + '7', + '8', + '9', + ]; + $array = array_rand($chars, $length); + $rand = ''; + for ($i = 0; $i < $length; $i++) $rand .= $chars[$array[$i]]; + return $rand; +} + +/** + * 生成UUID + * + * @param string $string + * + * @return string + */ +if ( !function_exists('make_uuid') ) { + /** + * 生成UUID + * + * @param string $string + * + * @return string + */ + function make_uuid(string $string = '') : string + { + $string = '' === $string ? uniqid(mt_rand(), true) : (0 === (int)preg_match('/[A-Z]/', $string) ? $string : mb_strtolower($string, 'UTF-8')); + $code = hash('sha1', $string . ':UUID'); + $uuid = substr($code, 0, 10); + $uuid .= substr($code, 10, 4); + $uuid .= substr($code, 16, 4); + $uuid .= substr($code, 22, 4); + $uuid .= substr($code, 28, 12); + $uuid = strtoupper($uuid); + unset($string, $code); + return $uuid; + } +} + +/** + * Generate UUID (string hash based) + * + * @param string $string + * + * @return string + */ +function get_uuid(string $string = '') : string +{ + if ( '' === $string ) { + //Create random string + $string = uniqid(microtime() . getmypid() . mt_rand(), true); + } + + $start = 0; + $codes = []; + $length = [ + 8, + 4, + 4, + 4, + 12, + ]; + $string = hash('md5', $string); + + foreach ($length as $len) { + $codes[] = substr($string, $start, $len); + $start += $len; + } + + $uuid = implode('-', $codes); + + unset($string, $start, $codes, $length, $len); + return $uuid; +} + +function getFirstChar($s) +{ + $s0 = mb_substr($s, 0, 3); //获取名字的姓 + $s = iconv('UTF-8', 'gb2312', $s0); //将UTF-8转换成GB2312编码 + if ( ord($s0) > 128 ) { //汉字开头,汉字没有以U、V开头的 + $asc = ord($s{0}) * 256 + ord($s{1}) - 65536; + if ( $asc >= -20319 and $asc <= -20284 ) return "A"; + if ( $asc >= -20283 and $asc <= -19776 ) return "B"; + if ( $asc >= -19775 and $asc <= -19219 ) return "C"; + if ( $asc >= -19218 and $asc <= -18711 ) return "D"; + if ( $asc >= -18710 and $asc <= -18527 ) return "E"; + if ( $asc >= -18526 and $asc <= -18240 ) return "F"; + if ( $asc >= -18239 and $asc <= -17760 ) return "G"; + if ( $asc >= -17759 and $asc <= -17248 ) return "H"; + if ( $asc >= -17247 and $asc <= -17418 ) return "I"; + if ( $asc >= -17417 and $asc <= -16475 ) return "J"; + if ( $asc >= -16474 and $asc <= -16213 ) return "K"; + if ( $asc >= -16212 and $asc <= -15641 ) return "L"; + if ( $asc >= -15640 and $asc <= -15166 ) return "M"; + if ( $asc >= -15165 and $asc <= -14923 ) return "N"; + if ( $asc >= -14922 and $asc <= -14915 ) return "O"; + if ( $asc >= -14914 and $asc <= -14631 ) return "P"; + if ( $asc >= -14630 and $asc <= -14150 ) return "Q"; + if ( $asc >= -14149 and $asc <= -14091 ) return "R"; + if ( $asc >= -14090 and $asc <= -13319 ) return "S"; + if ( $asc >= -13318 and $asc <= -12839 ) return "T"; + if ( $asc >= -12838 and $asc <= -12557 ) return "W"; + if ( $asc >= -12556 and $asc <= -11848 ) return "X"; + if ( $asc >= -11847 and $asc <= -11056 ) return "Y"; + if ( $asc >= -11055 and $asc <= -10247 ) return "Z"; + } elseif ( ord($s) >= 48 and ord($s) <= 57 ) { //数字开头 + switch (iconv_substr($s, 0, 1, 'utf-8')) { + case 1: + return "Y"; + case 2: + return "E"; + case 3: + return "S"; + case 4: + return "S"; + case 5: + return "W"; + case 6: + return "L"; + case 7: + return "Q"; + case 8: + return "B"; + case 9: + return "J"; + case 0: + return "L"; + } + } elseif ( ord($s) >= 65 and ord($s) <= 90 ) { //大写英文开头 + return substr($s, 0, 1); + } elseif ( ord($s) >= 97 and ord($s) <= 122 ) { //小写英文开头 + return strtoupper(substr($s, 0, 1)); + } else { + return iconv_substr($s0, 0, 1, 'utf-8'); + //中英混合的词语,不适合上面的各种情况,因此直接提取首个字符即可 + } +} + +function strip_html_tags($tags, $str) +{ + $html = []; + foreach ($tags as $tag) $html[] = "/(<(?:\/" . $tag . "|" . $tag . ")[^>]*>)/i"; + $data = preg_replace($html, '', $str); + return $data; +} + +//获取本地存储的文件 +function GetLocalFileByPath($path) +{ + return asset('uploads') . '/' . $path; +} + +//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies +function curl_request($url, $post = '', $json = false, $header = []) +{ + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)'); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0); + curl_setopt($curl, CURLOPT_AUTOREFERER, 0); + //curl_setopt($curl, CURLOPT_REFERER, "http://XXX"); + if ( $json ) { + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post)); + curl_setopt($curl, CURLOPT_HTTPHEADER, array_merge([ + 'Content-Type: application/json; charset=utf-8', + //伪造IP + //'CLIENT-IP:85.25.105.77','X-FORWARDED-FOR:85.25.105.77',//此处可以改为任意假IP + 'Content-Length: ' . (empty($post) ? 0 : strlen(http_build_query($post))), + ], $header)); + } + curl_setopt($curl, CURLOPT_TIMEOUT, 60); + //不输出头信息 + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + $data = curl_exec($curl); + if ( curl_errno($curl) ) { + return false; + //throw new Exception("Error:".curl_error($curl)); + } + curl_close($curl); + return $data; +} + +function curlRequest($url, $params = [], $method = 'POST', $header = [], $type = 'json', $options = []) +{ + if (empty($options)) { + $options = [CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTPHEADER => ['X-REQUESTED-WITH: XMLHttpRequest']]; + } + + $method = strtoupper($method); + $protocol = substr($url, 0, 5); + + if ($type == 'json' && is_array($params)) { + $query_string = json_encode($params, JSON_UNESCAPED_UNICODE); + }else{ + $query_string = is_array($params) ? http_build_query($params) : $params; + } + + $ch = curl_init(); + $defaults = []; + if ('GET' == $method) { + $geturl = $query_string ? $url . (stripos($url, '?') !== false ? '&' : '?') . $query_string : $url; + $defaults[CURLOPT_URL] = $geturl; + } else { + $defaults[CURLOPT_URL] = $url; + if ($method == 'POST') { + $defaults[CURLOPT_POST] = 1; + } else { + $defaults[CURLOPT_CUSTOMREQUEST] = $method; + } + $defaults[CURLOPT_POSTFIELDS] = $query_string; + } + + $defaults[CURLOPT_HEADER] = false; + $defaults[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36'; + $defaults[CURLOPT_FOLLOWLOCATION] = true; + $defaults[CURLOPT_RETURNTRANSFER] = true; + $defaults[CURLOPT_CONNECTTIMEOUT] = 3; + $defaults[CURLOPT_TIMEOUT] = 3; + + // disable 100-continue + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']); + + if ('https' == $protocol) { + $defaults[CURLOPT_SSL_VERIFYPEER] = false; + $defaults[CURLOPT_SSL_VERIFYHOST] = false; + } + + curl_setopt_array($ch, (array)$options + $defaults); + + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge([ + 'Content-Type: application/json; charset=utf-8', + //伪造IP + 'CLIENT-IP:85.25.105.77', + 'X-FORWARDED-FOR:85.25.105.77',//此处可以改为任意假IP + 'Content-Length: ' . strlen($query_string), + ], $header) + ); + + $ret = curl_exec($ch); + $err = curl_error($ch); + + curl_close($ch); + + return json_decode($ret, true); +} + +//过滤值为空的数组 +function filterEmptyArr($array) +{ + + if ( !is_array($array) ) return false; + + $return_arr = []; + foreach ($array as $k => $v) { + if ( is_array($v) ) { + + foreach ($v as $k1 => $v1) { + if ( $v1 ) { + $return_arr[$k] = $v; + } + } + } elseif ( $v ) { + $return_arr[$k] = $v; + } + } + + return $return_arr; +} + +//验证数组是否为空,除了指定的key +function CheckArrIsEmpty($arr, $except = []) +{ + if ( !is_array($arr) ) return false; + foreach ($arr as $k => $value) { + if ( is_array($value) ) { + CheckArrIsEmpty($value); + } elseif ( !$value && $value != 0 ) { + if ( !in_array($k, $except) ) { + throw new Exception($k . " is empty.", 40000); + } + } + } +} + +/** + * 获取客户端浏览器信息 + * + * @param null + * + * @return string + * @author huang + */ +function get_broswer() +{ + $sys = $_SERVER['HTTP_USER_AGENT']; //获取用户代理字符串 + if ( stripos($sys, "Firefox/") > 0 ) { + preg_match("/Firefox\/([^;)]+)+/i", $sys, $b); + $exp[0] = "Firefox"; + $exp[1] = $b[1]; //获取火狐浏览器的版本号 + } elseif ( stripos($sys, "Maxthon") > 0 ) { + preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou); + $exp[0] = "傲游"; + $exp[1] = $aoyou[1]; + } elseif ( stripos($sys, "MSIE") > 0 ) { + preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie); + $exp[0] = "IE"; + $exp[1] = $ie[1]; //获取IE的版本号 + } elseif ( stripos($sys, "OPR") > 0 ) { + preg_match("/OPR\/([\d\.]+)/", $sys, $opera); + $exp[0] = "Opera"; + $exp[1] = $opera[1]; + } elseif ( stripos($sys, "Edge") > 0 ) { + //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配 + preg_match("/Edge\/([\d\.]+)/", $sys, $Edge); + $exp[0] = "Edge"; + $exp[1] = $Edge[1]; + } elseif ( stripos($sys, "Chrome") > 0 ) { + preg_match("/Chrome\/([\d\.]+)/", $sys, $google); + $exp[0] = "Chrome"; + $exp[1] = $google[1]; //获取google chrome的版本号 + } elseif ( stripos($sys, 'rv:') > 0 && stripos($sys, 'Gecko') > 0 ) { + preg_match("/rv:([\d\.]+)/", $sys, $IE); + $exp[0] = "IE"; + $exp[1] = $IE[1]; + } else { + $exp[0] = "未知浏览器"; + $exp[1] = ""; + } + return $exp[0] . '(' . $exp[1] . ')'; +} + +/** + * 获取客户端操作系统信息,包括win10 + * + * @param null + * + * @return string + * @author huang + */ +function get_os() +{ + + $agent = $_SERVER['HTTP_USER_AGENT']; + $os = false; + + if ( preg_match('/win/i', $agent) && strpos($agent, '95') ) { + $os = 'Windows 95'; + } elseif ( preg_match('/win 9x/i', $agent) && strpos($agent, '4.90') ) { + $os = 'Windows ME'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/98/i', $agent) ) { + $os = 'Windows 98'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent) ) { + $os = 'Windows Vista'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent) ) { + $os = 'Windows 7'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent) ) { + $os = 'Windows 8'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent) ) { + $os = 'Windows 10';#添加win10判断 + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent) ) { + $os = 'Windows XP'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent) ) { + $os = 'Windows 2000'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/nt/i', $agent) ) { + $os = 'Windows NT'; + } elseif ( preg_match('/win/i', $agent) && preg_match('/32/i', $agent) ) { + $os = 'Windows 32'; + } elseif ( preg_match('/linux/i', $agent) ) { + $os = 'Linux'; + } elseif ( preg_match('/unix/i', $agent) ) { + $os = 'Unix'; + } elseif ( preg_match('/sun/i', $agent) && preg_match('/os/i', $agent) ) { + $os = 'SunOS'; + } elseif ( preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent) ) { + $os = 'IBM OS/2'; + } elseif ( preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent) ) { + $os = 'Macintosh'; + } elseif ( preg_match('/PowerPC/i', $agent) ) { + $os = 'PowerPC'; + } elseif ( preg_match('/AIX/i', $agent) ) { + $os = 'AIX'; + } elseif ( preg_match('/HPUX/i', $agent) ) { + $os = 'HPUX'; + } elseif ( preg_match('/NetBSD/i', $agent) ) { + $os = 'NetBSD'; + } elseif ( preg_match('/BSD/i', $agent) ) { + $os = 'BSD'; + } elseif ( preg_match('/OSF1/i', $agent) ) { + $os = 'OSF1'; + } elseif ( preg_match('/IRIX/i', $agent) ) { + $os = 'IRIX'; + } elseif ( preg_match('/FreeBSD/i', $agent) ) { + $os = 'FreeBSD'; + } elseif ( preg_match('/teleport/i', $agent) ) { + $os = 'teleport'; + } elseif ( preg_match('/flashget/i', $agent) ) { + $os = 'flashget'; + } elseif ( preg_match('/webzip/i', $agent) ) { + $os = 'webzip'; + } elseif ( preg_match('/offline/i', $agent) ) { + $os = 'offline'; + } else { + $os = '未知操作系统'; + } + return $os; +} + +//生成树形结构数据 + +function listToTree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0) +{ + $tree = []; + if ( is_array($list) ) { + $refer = []; + foreach ($list as $key => $data) { + $refer[$data[$pk]] = &$list[$key]; + } + + foreach ($list as $key => $data) { + // 判断是否存在parent + $parentId = $data[$pid]; + + if ( $root == $parentId ) { + $tree[$data[$pk]] = &$list[$key]; + } else { + if ( isset($refer[$parentId]) ) { + $parent = &$refer[$parentId]; + $parent[$child][$data[$pk]] = &$list[$key]; + } + } + } + } + + return $tree; +} + +//获取本地翻译语言 +function getTranslateByKey($key) +{ + //echo (__("admin.zh.index_allow_curl")); + echo __(session("admin_current_language")["shortcode"] . "." . $key); +} + +function getHomeByKey($key) +{ + echo __(session("home_current_language")["shortcode"] . "." . $key); +} + +//获取上一页的URL +function getPreUrl() +{ + return url()->previous(); +} + +function excelTime($date, $time = false) +{ + if ( function_exists('GregorianToJD') ) { + if ( is_numeric($date) ) { + $jd = GregorianToJD(1, 1, 1970); + $gregorian = JDToGregorian($jd + intval($date) - 25569); + $date = explode('/', $gregorian); + $date_str = str_pad($date [2], 4, '0', STR_PAD_LEFT) . "-" . str_pad($date [0], 2, '0', STR_PAD_LEFT) . "-" . str_pad($date [1], 2, '0', STR_PAD_LEFT) . ($time ? " 00:00:00" : ''); + return $date_str; + } + } else { + $date = $date > 25568 ? $date + 1 : 25569; + /*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/ + $ofs = (70 * 365 + 17 + 2) * 86400; + $date = date("Y-m-d", ($date * 86400) - $ofs) . ($time ? " 00:00:00" : ''); + } + return $date; +} + +//判断是否是微信浏览器 +function is_weixin() +{ + + if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { + return true; + } + return false; +} + +//是否为手机号码 +if ( !function_exists('is_mobile') ) { + function is_mobile(string $text) + { + $search = '/^0?1[3|4|5|6|7|8][0-9]\d{8}$/'; + if ( preg_match($search, $text) ) return true; else return false; + } +} + +//手机号码 中间4位加密 +if ( !function_exists('get_encryption_mobile') ) { + function get_encryption_mobile($tel) + { + $new_tel = preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $tel); + return $new_tel; + } +} + +//API统一的数据返回格式 +if ( !function_exists('return_api_format') ) { + function return_api_format($return = []) + { + $return['data'] = !isset($return['data']) ? [] : $return['data']; + $return['msg'] = !isset($return['msg']) ? '获取成功' : $return['msg']; + $return['status'] = !isset($return['status']) ? (empty($return['data']) ? 40000 : 200) : $return['status']; + return response()->json($return); + } +} + +if ( !function_exists('del_dir_files') ) { + /** + * 删除文件夹与下方的所有文件 + * + * @param $dirName 文件夹名称 + * @param int $delete_dir 是否删除文件夹【1.删除;0.不删除】 + */ + function del_dir_files($dirName, $delete_dir = 1) + { + if ( $handle = @opendir($dirName) ) { + while ( false !== ($item = @readdir($handle)) ) { + if ( $item != '.' && $item != '..' ) { + if ( is_dir($dirName . '/' . $item) ) del_dir_files($dirName . '/' . $item); else @unlink($dirName . '/' . $item); + } + } + @closedir($handle); + } + if ( $delete_dir == 1 ) @rmdir($dirName); + } +} + +if ( !function_exists('get_file_filtering') ) { + /** + * 获取指定格式的文件 + * + * @param array $array + * @param array $format + * + * @return array + */ + function get_file_filtering($array = [], $format = []) + { + $return = []; + if ( empty($array) || empty($format) ) return $return; + foreach ($array as $key => $value) { + $arr = pathinfo($value); + if ( !empty($arr['extension']) && in_array($arr['extension'], $format) ) $return[] = $value; + } + return $return; + } +} + +if ( !function_exists('write_lock_file') ) { + /** + * 写入锁文件 + * + * @param $path + */ + function write_lock_file($path, $content = '') + { + $lock_file = fopen($path . '/lock', 'w+');//创建 锁文件 + fwrite($lock_file, empty($content) ? date('Y-m-d H:i:s') : $content);//写入 + } +} + +if ( !function_exists('del_dir_files') ) { + /** + * 删除文件夹与下方的所有文件 + * + * @param $dirName 文件夹名称 + * @param int $delete_dir 是否删除文件夹【1.删除;0.不删除】 + */ + function del_dir_files($dirName, $delete_dir = 1) + { + if ( $handle = @opendir($dirName) ) { + while ( false !== ($item = @readdir($handle)) ) { + if ( $item != '.' && $item != '..' ) { + if ( is_dir($dirName . '/' . $item) ) del_dir_files($dirName . '/' . $item); else @unlink($dirName . '/' . $item); + } + } + @closedir($handle); + } + if ( $delete_dir == 1 ) @rmdir($dirName); + } +} + +if ( !function_exists('get_client_info') ) { + /** + * 获取IP与浏览器信息、语言 + */ + function get_client_info() : array + { + if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) { + $XFF = $_SERVER['HTTP_X_FORWARDED_FOR']; + $client_pos = strpos($XFF, ', '); + $client_ip = false !== $client_pos ? substr($XFF, 0, $client_pos) : $XFF; + unset($XFF, $client_pos); + } else $client_ip = $_SERVER['HTTP_CLIENT_IP'] ?? $_SERVER['REMOTE_ADDR'] ?? $_SERVER['LOCAL_ADDR'] ?? '0.0.0.0'; + $client_lang = isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) : ''; + $client_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; + return [ + 'ip' => &$client_ip, + 'lang' => &$client_lang, + 'agent' => &$client_agent, + ]; + } +} + +if ( !function_exists('get_ip') ) { + function get_ip() : string + { + $data = get_client_info(); + return empty($data['ip']) ? '' : $data['ip']; + } +} + +if ( !function_exists('get_month_days') ) { + /** + * 获取某月份的所有日期列表 + * + * @param string $time + * @param string $format + * + * @return array + */ + function get_month_days($time = '', $format = 'Y-m-d') + { + $time = $time != '' ? $time : time(); + //获取当前周几 + $week = date('d', $time); + $date = []; + for ($i = 1; $i <= date('t', $time); $i++) { + $date[$i] = date($format, strtotime('+' . $i - $week . ' days', $time)); + } + return $date; + } +} + +if ( !function_exists('get_month_range') ) { + /** + * 指定日期范围之内的所有月份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_month_range(string $start_date, string $end_date, string $format = 'Y-m') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $month = date($format, strtotime($start_date . ' + ' . $i . ' month')); + $range[] = $month; + $i++; + } while ( $month < $end ); + return $range; + } +} + +if ( !function_exists('get_days_range') ) { + /** + * 指定日期范围之内的所有天 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_days_range(string $start_date, string $end_date, string $format = 'Y-m-d') + { + $end = date($format, strtotime($end_date)); // 转换为月 + $range = []; + $i = 0; + do { + $day = date($format, strtotime($start_date . ' + ' . $i . ' day')); + $range[] = $day; + $i++; + } while ( $day < $end ); + return $range; + } +} + +if ( !function_exists('get_years_range') ) { + /** + * 指定日期范围之内的所有年份 + * + * @param string $start_date 开始日期 + * @param string $end_date 结束日期 + * @param string $format 返回格式 + * + * @return array + */ + function get_years_range(string $start_date, string $end_date, string $format = 'Y') + { + $start_date = date('Y-m-d', strtotime($start_date . '-01-01')); + $end = date($format, strtotime($end_date)); // 转换为年 + $range = []; + $i = 0; + do { + $year = date($format, strtotime($start_date . ' + ' . $i . ' year')); + $range[] = $year; + $i++; + } while ( $year < $end ); + return $range; + } +} + +if ( !function_exists('set_month_format') ) { + /** + * 设置 月份 的格式统一 + * + * @param $month + * + * @return string + */ + function set_month_format($month) + { + return (string)(strlen($month) == 1 ? '0' . $month : $month); + } +} + +if ( !function_exists('get_mail_template_message') ) { + /** + * 获取模板消息内容 + * + * @param $content + * @param string $change 也可以是数组 + * @param string $code 对应数组 + * + * @return mixed + */ + function get_mail_template_message($content, $change = '', $code = '{$code}') + { + return str_replace($code, $change, $content); + } +} + +/** + * 获取当前host域名 + * + * @return string + */ +function get_host() +{ + if ( isset($_SERVER['HTTP_HOST']) ) { + $scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + $SCRIPT_NAME = $_SERVER['SCRIPT_NAME']; + $arr = explode('/', $SCRIPT_NAME); + $url = $scheme . $_SERVER['HTTP_HOST'] . substr($SCRIPT_NAME, 0, -strlen($arr[count($arr) - 2])) . '/'; + return $url; + //$scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + //$SCRIPT_NAME = rtrim($_SERVER['REQUEST_URI'], '/'); + //$arr = explode('/', $SCRIPT_NAME); + //$url = $scheme . $_SERVER['HTTP_HOST'] . substr($SCRIPT_NAME, 0, -strlen($arr[count($arr) - 2])); + //return $url; + } else { + if ( empty($baseUrl) ) { + $request = \think\facade\Request::instance(); + $subDir = str_replace('\\', '/', dirname($request->server('PHP_SELF'))); + $baseUrl = $request->scheme() . '://' . $request->host() . $subDir . ($subDir === '/' ? '' : '/'); + } + + return trim($baseUrl, '/'); + } +} + +/** + * [is_email] + * + * @param string $email [description] + * + * @return boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测邮箱格式 + * @englishAnnotation: + * @version :1.0 + */ +function is_email(string $email) : bool +{ + // '/^[a-z0-9]+([._-][a-z0-9]+)*@([0-9a-z]+\.[a-z]{2,14}(\.[a-z]{2})?)$/i'; + $checkmail = "/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/";//定义正则表达式 + if ( preg_match($checkmail, $email) ) return true; else return false; +} + +/** + * [is_mobile] + * + * @param [type] $text [description] + * + * @return bool|boolean [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :检测手机号格式是否正确 + * @englishAnnotation : + * @version :1.0 + */ +function is_mobile(string $text) : bool +{ + $search = '/^0?1[3|4|5|6|7|8][0-9]\d{8}$/'; + if ( preg_match($search, $text) ) return true; else return false; +} + +/** + * [check_url] + * + * @param string $_url [description] + * + * @return bool + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:检测URL地址格式 + * @englishAnnotation: + * @version :1.0 + */ +function check_url(string $_url) : bool +{ + $str = "/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/"; + if ( !preg_match($str, $_url) ) return false; else return true; +} + +/** + * [roundDownDecimal] + * + * @param float|integer $money_num [description] + * @param int|integer $length [description] + * + * @return float + * @version :1.0 + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:保留几位小数,向下取,就是直接截断 3 为小数即可。 + * @englishAnnotation: + */ +function roundDownDecimal(float $money_num = 0, int $length = 2) : float +{ + return substr($money_num, 0, strlen($money_num) - _getFloatLength($money_num) + $length); +} + +if ( !function_exists('writeLog') ) { + function writeLog($msg, $file_name, $path = __DIR__) + { + /** + * 第一部分路径 + */ + $dirPath = $path . '/logs'; + if ( !is_dir($dirPath) ) @mkdir($dirPath); + $dirPath .= '/' . date('Y'); + if ( !is_dir($dirPath) ) @mkdir($dirPath); + $dirPath .= '/' . date('n'); + if ( !is_dir($dirPath) ) @mkdir($dirPath); + /** + * 第二部分 + */ + file_put_contents($dirPath . '/' . (empty($file_name) ? date('j') : $file_name) . '.txt', "\n\n" . date('Y-m-d H:i:s') . "\n", FILE_APPEND); + file_put_contents($dirPath . '/' . (empty($file_name) ? date('j') : $file_name) . '.txt', print_r($msg, true), FILE_APPEND); + } +} + +/** + * 通过省市区的名称获取对应的经纬度 + * + * @param string $area_name + * + * @return string + */ +function getNameAcquisitionLongitudeAndLatitude($area_name = '') +{ + if ( empty($area_name) ) return ''; + $res = request_function('https://restapi.amap.com/v3/geocode/geo', [ + 'address' => $area_name, + 'key' => MyC('common_lbsamap_apikey'), + 'output' => 'JSON', + ], false); + if ( $res['status'] == 1 ) return empty($res['geocodes']) ? '' : $res['geocodes'][0]['location']; + return ''; +} + +/** + * 倒计时 转化成 天-时分秒 展示 + * + * @param $time + * + * @return string + */ +function countdownConversionTime($time) +{ + if ( empty($time) ) return ''; + $day = intval($time / (60 * 60 * 24)); + $hour = intval($time / (60 * 60) - $day * 24); + $minute = intval($time / 60 - $day * 24 * 60 - $hour * 60); + $second = intval($time - $day * 24 * 60 * 60 - $hour * 60 * 60 - $minute * 60); + + $day = (intval($day) <= 0) ? '' : $day . '天 '; + if ( intval($hour) <= 9 ) $hour = '0' . $hour; + if ( intval($minute) <= 9 ) $minute = '0' . $minute; + if ( intval($second) <= 9 ) $second = '0' . $second; + return $day . $hour . ':' . $minute . ':' . $second . ''; +} + +if ( !function_exists('returnLastPage') ) { + function returnLastPage() + { + echo ''; + } +} + +if ( !function_exists('array_key_first') ) { + /** + * Gets the first key of an array + * + * @param array $array + * + * @return mixed + */ + function array_key_first(array $array) + { + if ( count($array) ) { + reset($array); + return key($array); + } + return null; + } +} + +function hidden_mobile(string $text) : string +{ + $start = substr($text, 0, 3); + $end = substr($text, -4, 4); + return $start . ' **** ' . $end; +} + +function msubstr($str, $start = 0, $length, $charset = "utf-8", $suffix = true) +{ + if ( function_exists("mb_substr") ) { + if ( $suffix ) return mb_substr($str, $start, $length, $charset) . "..."; else + return mb_substr($str, $start, $length, $charset); + } elseif ( function_exists('iconv_substr') ) { + if ( $suffix ) return iconv_substr($str, $start, $length, $charset) . "..."; else + return iconv_substr($str, $start, $length, $charset); + } + $re['utf-8'] = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef] +[x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/"; + $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/"; + $re['gbk'] = "/[x01-x7f]|[x81-xfe][x40-xfe]/"; + $re['big5'] = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/"; + preg_match_all($re[$charset], $str, $match); + $slice = join("", array_slice($match[0], $start, $length)); + if ( $suffix ) return $slice . "…"; + return $slice; +} + +// function hidden_bank(string $text, $start = 1): string +// { +// $start = substr($text, 0, 6); +// $end = substr($text, -4, 4); +// return $start . ($start == 1 ? ' ' : '') . '········' . ($start == 1 ? ' ' : '') . $end; +// return $start . ($start == 1 ? ' ' : '') . '**** ****' . ($start == 1 ? ' ' : '') . $end; +// } + +function hidden_bank(string $text) : string +{ + $start = substr($text, 0, 4); + $end = substr($text, -4, 4); + return $start . ' **** **** ' . $end; +} + +function get_month_first_day() +{ + return date('Y-m-01', strtotime(date("Y-m-d", time()))); +} + +function get_month_last_day() +{ + $date = date('Y-m-01', strtotime(date("Y-m-d", time()))); + return date('Y-m-d', strtotime("$date +1 month -1 day")); +} + +/** + * [Xml_Array xml转数组] + * + * @param [xml] $xmlstring [xml数据] + * + * @return [array] [array数组] + */ +function Xml_Array($xmlstring) +{ + return json_decode(json_encode((array)simplexml_load_string($xmlstring)), true); +} + +/** + * [IsMobile 是否是手机访问] + * + * @return [boolean] [手机访问true, 则false] + */ +function IsMobile() +{ + /* 如果有HTTP_X_WAP_PROFILE则一定是移动设备 */ + if ( isset($_SERVER['HTTP_X_WAP_PROFILE']) ) return true; + + /* 此条摘自TPM智能切换模板引擎,适合TPM开发 */ + if ( isset($_SERVER['HTTP_CLIENT']) && 'PhoneClient' == $_SERVER['HTTP_CLIENT'] ) return true; + + /* 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 */ + if ( isset($_SERVER['HTTP_VIA']) && stristr($_SERVER['HTTP_VIA'], 'wap') !== false ) return true; + + /* 判断手机发送的客户端标志,兼容性有待提高 */ + if ( isset($_SERVER['HTTP_USER_AGENT']) ) { + $clientkeywords = [ + 'nokia', + 'sony', + 'ericsson', + 'mot', + 'samsung', + 'htc', + 'sgh', + 'lg', + 'sharp', + 'sie-', + 'philips', + 'panasonic', + 'alcatel', + 'lenovo', + 'iphone', + 'ipad', + 'ipod', + 'blackberry', + 'meizu', + 'android', + 'netfront', + 'symbian', + 'ucweb', + 'windowsce', + 'palm', + 'operamini', + 'operamobi', + 'openwave', + 'nexusone', + 'cldc', + 'midp', + 'wap', + 'mobile', + ]; + /* 从HTTP_USER_AGENT中查找手机浏览器的关键字 */ + if ( preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])) ) { + return true; + } + } + + /* 协议法,因为有可能不准确,放到最后判断 */ + if ( isset($_SERVER['HTTP_ACCEPT']) ) { + /* 如果只支持wml并且不支持html那一定是移动设备 */ + /* 如果支持wml和html但是wml在html之前则是移动设备 */ + if ( (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) ) return true; + } + return false; +} + +/** + * [EmptyDir 清空目录下所有文件] + * + * @param [string] $dir_path [目录地址] + * + * @return [boolean] [成功true, 失败false] + */ +function EmptyDir($dir_path) +{ + if ( is_dir($dir_path) ) { + $dn = @opendir($dir_path); + if ( $dn !== false ) { + while ( false !== ($file = readdir($dn)) ) { + if ( $file != '.' && $file != '..' ) { + if ( !unlink($dir_path . $file) ) { + return false; + } + } + } + } else { + return false; + } + } + return true; +} + +/** + * [FileSizeByteToUnit 文件大小转常用单位] + * + * @param [int] $bit [字节数] + * + * @return string + */ +function FileSizeByteToUnit($bit) : string +{ + //单位每增大1024,则单位数组向后移动一位表示相应的单位 + $type = [ + 'Bytes', + 'KB', + 'MB', + 'GB', + 'TB', + ]; + for ($i = 0; $bit >= 1024; $i++) { + $bit /= 1024; + } + + //floor是取整函数,为了防止出现一串的小数,这里取了两位小数 + return (floor($bit * 100) / 100) . $type[$i]; +} + +/** + * json带格式输出 + * + * @param [array] $data [数据] + * @param [string] $indent [缩进字符,默认4个空格 ] + * + * @return string + */ +function JsonFormat($data, $indent = null) : string +{ + // json encode + $data = json_encode($data, JSON_UNESCAPED_UNICODE); + + // 缩进处理 + $ret = ''; + $pos = 0; + $length = strlen($data); + $indent = isset($indent) ? $indent : ' '; + $newline = "\n"; + $prevchar = ''; + $outofquotes = true; + + for ($i = 0; $i <= $length; $i++) { + $char = substr($data, $i, 1); + + if ( $char == '"' && $prevchar != '\\' ) { + $outofquotes = !$outofquotes; + } elseif ( ($char == '}' || $char == ']') && $outofquotes ) { + $ret .= $newline; + $pos--; + for ($j = 0; $j < $pos; $j++) { + $ret .= $indent; + } + } + + $ret .= $char; + + if ( ($char == ',' || $char == '{' || $char == '[') && $outofquotes ) { + $ret .= $newline; + if ( $char == '{' || $char == '[' ) { + $pos++; + } + + for ($j = 0; $j < $pos; $j++) { + $ret .= $indent; + } + } + + $prevchar = $char; + } + + return $ret; +} + +/** + * 根据身份证号码得到年龄 + * + * @param $id + * + * @return float|int|string + */ +function getAgeByID(string $id) +{ //过了这年的生日才算多了1周岁 + + if ( empty($id) ) return ''; + + $date = strtotime(substr($id, 6, 8)); //获得出生年月日的时间戳 + + $today = strtotime('today'); //获得今日的时间戳 + + $diff = floor(($today - $date) / 86400 / 365); //得到两个日期相差的大体年数 + + //strtotime加上这个年数后得到那日的时间戳后与今日的时间戳相比 + + $age = strtotime(substr($id, 6, 8) . '+' . $diff . 'years') > $today ? ($diff + 1) : $diff; + + return $age; +} + +/** + * [api_url] + * + * @return [string] [URL] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :API请求地址 + * @englishAnnotation :API request URL address + */ +function web_url() +{ + return http_type() . $_SERVER['HTTP_HOST']; +} + +/** + * [http_type] + * + * @return [string] [description] + * @author :cnpscy <[2278757482@qq.com]> + * @chineseAnnotation :获取http类型:http\https + * @englishAnnotation :Get the HTTP type: http\https + */ +function http_type() : string +{ + return $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://'; +} + +/** + * 格式化字节大小 + * + * @param number $size 字节数 + * @param string $delimiter 数字和单位分隔符 + * + * @return string 格式化后的带单位的大小 + */ +function format_bytes($size, $delimiter = '') +{ + $units = [ + 'B', + 'KB', + 'MB', + 'GB', + 'TB', + 'PB', + ]; + for ($i = 0; $size >= 1024 && $i < 5; $i++) { + $size /= 1024; + } + return $size . $delimiter . $units[$i]; +} + +/** + * CURL发送Request请求,含POST和REQUEST + * + * @param string $url 请求的链接 + * @param mixed $params 传递的参数 + * @param string $method 请求的方法 + * @param mixed $options CURL的参数 + * + * @return array + */ +function send_request($url, $params = [], $method = 'POST', $type = 'json', $options = []) +{ + if ( empty($options) ) { + $options = [ + CURLOPT_CONNECTTIMEOUT => 30, + CURLOPT_TIMEOUT => 30, + CURLOPT_SSL_VERIFYPEER => false, + CURLOPT_HTTPHEADER => ['X-REQUESTED-WITH: XMLHttpRequest'], + ]; + } + + $params = array_merge([ + 'origin_host' => get_host(), + 'origin_url' => $_SERVER['REQUEST_URI'], + 'origin_ip' => get_ip(), + ], $params); + $method = strtoupper($method); + $protocol = substr($url, 0, 5); + if ( $type == 'json' && is_array($params) ) { + $params = json_encode($params, JSON_UNESCAPED_UNICODE); + } + $query_string = is_array($params) ? http_build_query($params) : $params; + + $ch = curl_init(); + $defaults = []; + if ( 'GET' == $method ) { + $geturl = $query_string ? $url . (stripos($url, '?') !== false ? '&' : '?') . $query_string : $url; + $defaults[CURLOPT_URL] = $geturl; + } else { + $defaults[CURLOPT_URL] = $url; + if ( $method == 'POST' ) { + $defaults[CURLOPT_POST] = 1; + } else { + $defaults[CURLOPT_CUSTOMREQUEST] = $method; + } + $defaults[CURLOPT_POSTFIELDS] = $query_string; + } + + $defaults[CURLOPT_HEADER] = false; + $defaults[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36'; + $defaults[CURLOPT_FOLLOWLOCATION] = true; + $defaults[CURLOPT_RETURNTRANSFER] = true; + $defaults[CURLOPT_CONNECTTIMEOUT] = 3; + $defaults[CURLOPT_TIMEOUT] = 3; + + // disable 100-continue + curl_setopt($ch, CURLOPT_HTTPHEADER, ['Expect:']); + + if ( 'https' == $protocol ) { + $defaults[CURLOPT_SSL_VERIFYPEER] = false; + $defaults[CURLOPT_SSL_VERIFYHOST] = false; + } + + curl_setopt_array($ch, (array)$options + $defaults); + + $ret = curl_exec($ch); + $err = curl_error($ch); + + if ( false === $ret || !empty($err) ) { + $errno = curl_errno($ch); + $info = curl_getinfo($ch); + curl_close($ch); + return [ + 'ret' => false, + 'errno' => $errno, + 'msg' => $err, + 'info' => $info, + ]; + } + curl_close($ch); + + return json_decode($ret, true); +} + +//随机验证码 +if ( !function_exists('random_verification_code') ) { + function random_verification_code($length = 6) + { + $code = ''; + for ($i = 0; $i < $length; $i++) $code .= mt_rand(0, 9); + return $code; + } +} + +if ( !function_exists('get_dir_files') ) { + + //获取某目录下所有子文件和子目录,可以过滤 + function get_dir_files($path, $filter = [], $onlydir = false) + { + if ( !is_dir($path) ) { + return false; + } + //scandir方法 + $arr = []; + $data = scandir($path); + foreach ($data as $value) { + if ( $value != '.' && $value != '..' && $value != ".DS_Store" && !in_array($value, $filter) ) { + if ( $onlydir ) { + if ( is_dir($path . "/" . $value) ) { + $arr[] = $value; + } else { + continue; + } + } else { + $arr[] = $value; + } + } + } + return $arr; + } + + // 列出指定目录下所有目录和文件 + function get_dir_files1($dir) + { + $arr = []; + if ( is_dir($dir) ) {//如果是目录,则进行下一步操作 + $d = opendir($dir);//打开目录 + if ( $d ) {//目录打开正常 + while ( ($file = readdir($d)) !== false ) {//循环读出目录下的文件,直到读不到为止 + if ( $file != '.' && $file != '..' ) {//排除一个点和两个点 + if ( is_dir($file) ) {//如果当前是目录 + $arr[$file] = get_dir_files($file);//进一步获取该目录里的文件 + } else { + $arr[] = $file;//记录文件名 + } + } + } + } + closedir($d);//关闭句柄 + } + return $arr; + } +} + +if ( !function_exists('write_lock_file') ) { + /** + * 写入锁文件 + * + * @param $path + * @param string $content + */ + function write_lock_file($path, $content = '') + { + $lock_file = fopen($path . '/lock', 'w+');//创建 锁文件 + fwrite($lock_file, empty($content) ? date('Y-m-d H:i:s') : $content);//写入 + } +} + +if ( !function_exists('put_file_to_zip') ) { + /** + * 把指定文件目录下的所有文件,打包压缩至压缩包内 + * + * @param string $path + * @param $zip + * @param string $old_filename + * @param array $limit_dir 限制压缩的文件目录 + */ + function put_file_to_zip(string $path, $zip, string $old_filename, $limit_dir = []) + { + header('content-type:text/html;charset=utf-8'); + $handler = opendir($path); //打开当前文件夹由$path指定。 + while ( ($filename = readdir($handler)) !== false ) { + if ( $filename != '.' && $filename != '..' ) {//文件夹文件名字为'.'和‘..’,不要对他们进行操作 + if ( is_dir($path . '/' . $filename) ) {// 如果读取的某个对象是文件夹,则递归 + if ( !empty($limit_dir) && !in_array($filename, $limit_dir) ) continue; + $old_filename = (empty($old_filename) ? '' : ($old_filename . '/')); + $zip->addEmptyDir($old_filename . $filename); + put_file_to_zip($path . '/' . $filename, $zip, $old_filename . $filename); + } else { //将文件加入zip对象 + $zip->addFile($path . '/' . $filename, (empty($old_filename) ? '' : ($old_filename . '/')) . $filename); + } + } + } + @closedir($path); + } +} + +if ( !function_exists('check_http_file_exists') ) { + //判断远程文件是否存在 + function check_http_file_exists($url) + { + $curl = curl_init($url); + // 不取回数据 + curl_setopt($curl, CURLOPT_NOBODY, true); + // 发送请求 + $result = curl_exec($curl); + $found = false; + // 如果请求没有发送失败 + if ( $result !== false ) { + $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); + if ( $statusCode == 200 ) $found = true; + } + curl_close($curl); + return $found; + } +} + +if ( !function_exists('check_dir_exits') ) { + /** + * 检测目录是否存在,不存在则创建目录 + * + * @param string $dir_path + */ + function check_dir_exits(string $dir_path) : void + { + if ( !is_dir($dir_path) ) @mkdir($dir_path, 0755, true); + } +} + +function get_url() : string +{ + $scheme = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; + $url = $scheme . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '/' . $_SERVER['REQUEST_URI']; + return $url; +} + +//把时间戳转换为几分钟或几小时前或几天前 +function formatting_timestamp($time) : string +{ + $time = (int)substr($time, 0, 10); + $int = time() - $time; + $str = ''; + if ( $int <= 30 ) { + $str = sprintf('刚刚', $int); + } elseif ( $int < 60 ) { + $str = sprintf('%d秒前', $int); + } elseif ( $int < 3600 ) { + $str = sprintf('%d分钟前', floor($int / 60)); + } elseif ( $int < 86400 ) { + $str = sprintf('%d小时前', floor($int / 3600)); + } elseif ( $int < 2592000 ) { + $str = sprintf('%d天前', floor($int / 86400)); + } elseif ( date('Y', $time) == date('Y') ) { + $str = date('m-d H:i:s', $time); + } else { + $str = date('Y-m-d H:i:s', $time); + } + return $str; +} + +// 统计字数 +function comment_count_word($str) +{ + //$str =characet($str); + //判断是否存在替换字符 + $is_tihuan_count = substr_count($str, "龘"); + try { + //先将回车换行符做特殊处理 + $str = preg_replace('/(\r\n+|\s+| +)/', "龘", $str); + //处理英文字符数字,连续字母、数字、英文符号视为一个单词 + $str = preg_replace('/[a-z_A-Z0-9-\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~`\?:;|]/', "m", $str); + //合并字符m,连续字母、数字、英文符号视为一个单词 + $str = preg_replace('/m+/', "*", $str); + //去掉回车换行符 + $str = preg_replace('/龘+/', "", $str); + //返回字数 + return mb_strlen($str) + $is_tihuan_count; + } catch (Exception $e) { + return 0; + } +} + +// 二分查找法 +function Binary_Search() +{ + //function binary_search($nums, $num) + //{ + // return binary_search_internal($nums, $num, 0, count($nums) - 1); + //} + // + //function binary_search_internal($nums, $num, $low, $high) + //{ + // if ($low > $high) { + // return -1; + // } + // + // $mid = floor(($low + $high) / 2); + // if ($num > $nums[$mid]) { + // return binary_search_internal($nums, $num, $mid + 1, $high); + // } elseif ($num < $nums[$mid]) { + // return binary_search_internal($nums, $num, $low, $mid - 1); + // } else { + // return $mid; + // } + //} + // + //$nums = [1, 2, 3, 4, 5, 6]; + //$index = binary_search($nums, 5); + //print $index; +} + +function exist_http($str) : bool +{ + return preg_match('/(http:\/\/)|(https:\/\/)/i', $str); +} + +/** + * 生成订单号 + * + * @return string + */ +function order_no() +{ + return date('Ymd') . substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000000000000000000000000000000000000..a0a2a8a34a6221e4dceb24a759ed14e911f74c57 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000000000000000000000000000000000000..704089a7fe757c137d99241b758c912d8391e19d --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/ConvertEmptyStringsToNull.php b/app/Http/Middleware/ConvertEmptyStringsToNull.php new file mode 100644 index 0000000000000000000000000000000000000000..386c627cefbe52a9b0b37813c14ce682d7f2b59a --- /dev/null +++ b/app/Http/Middleware/ConvertEmptyStringsToNull.php @@ -0,0 +1,32 @@ +getMethod()); + if ( + $method == 'POST' + || + $method == 'PUT' + ){ + // 希望在POST、PUT时,新增与更新数据时,移除[空字符串自动转换为null的中间件]效果。 + }else{ + (new \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull)->handle($request, $next); + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000000000000000000000000000000000000..033136ad128b7687558bc41b03cc92f39cf69149 --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000000000000000000000000000000000000..5a50e7b5c8bd8a5c853ee7edb8170508f2ff4f86 --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000000000000000000000000000000000000..14befceb006114d1b6bb607bd0cfcf489dd50f42 --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ +setUserAgent('Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36 Edg/87.0.664.75'); + + $content = $http->fetch(); + var_dump($content); + var_dump($http->getHttpCode()); + var_dump($http->getLastError()); + } + + //Pre-defined content types + const CONTENT_TYPE_XML = 'application/xml; charset=UTF-8'; + const CONTENT_TYPE_JSON = 'application/json; charset=UTF-8'; + const CONTENT_TYPE_FORM_DATA = 'multipart/form-data'; + const CONTENT_TYPE_URL_ENCODED = 'application/x-www-form-urlencoded'; + + //Job info + public $data = []; + public $file = []; + public $header = []; + + public $url = ''; + public $etag = ''; + public $cookie = ''; + public $referer = ''; + public $modified = ''; + public $curl_error = ''; + + public $proxy = ''; + public $proxy_passwd = ''; + + public $max_follow = 0; + public $response_code = 0; + + public $http_ver = 'HTTP/2'; //HTTP Version + public $method = 'GET'; //Request method + public $user_agent = 'Mozilla/5.0 (Compatible; NervSys/111)'; //User Agent string + public $connection = 'keep-alive'; //Connection type + + public $content_type = self::CONTENT_TYPE_URL_ENCODED; //Content type + public $accept_charset = 'UTF-8,*;q=0'; //Accept charset + public $accept_encoding = 'gzip,deflate,identity,*;q=0'; //Accept encoding + public $accept_language = 'en-US,en,zh-CN,zh,*;q=0'; //Accept language + + public $accept_type = 'application/json;q=0.9,application/xml;q=0.8,text/plain;q=0.7,text/html;q=0.6,*/*;q=0.5'; //Accept types + + /** + * libHttp constructor. + * + * @param string $url + */ + public function __construct(string $url = '') + { + $this->url = &$url; + unset($url); + } + + /** + * Add request data + * + * @param array ...$data + * + * @return $this + */ + public function addData(array ...$data): self + { + foreach ($data as $item) { + $this->data += $item; + } + + unset($data, $item); + return $this; + } + + /** + * Add upload file + * + * @param array ...$file + * + * @return $this + */ + public function addFile(array ...$file): self + { + foreach ($file as $key => $val) { + if (file_exists($val)) { + $this->file[$key] = new \CURLFile($val); + } + } + + unset($file, $key, $val); + return $this; + } + + /** + * Add header data + * + * @param array $header + * + * @return $this + */ + public function addHeader(array $header): self + { + $this->header += $header; + + unset($header); + return $this; + } + + /** + * Add cookie data + * + * @param array $cookie + * + * @return $this + */ + public function addCookie(array $cookie): self + { + foreach ($cookie as $key => $val) { + if ('' !== $this->cookie) { + $this->cookie .= '; '; + } + + $this->cookie .= $key . '=' . $val; + } + + unset($cookie, $key, $val); + return $this; + } + + /** + * Set method + * + * @param string $method + * + * @return $this + */ + public function setMethod(string $method = 'POST'): self + { + $this->method = strtoupper($method); + + unset($method); + return $this; + } + + /** + * Set content type + * + * @param string $content_type + * + * @return $this + */ + public function setContentType(string $content_type = self::CONTENT_TYPE_URL_ENCODED): self + { + $this->content_type = &$content_type; + + unset($content_type); + return $this; + } + + /** + * Set referer URL + * + * @param string $referer + * + * @return $this + */ + public function setReferer(string $referer): self + { + $this->referer = &$referer; + + unset($referer); + return $this; + } + + /** + * Set User-Agent string + * + * @param string $user_agent + * + * @return $this + */ + public function setUserAgent(string $user_agent): self + { + $this->user_agent = &$user_agent; + + unset($user_agent); + return $this; + } + + /** + * Set max follows + * + * @param int $max_follow + * + * @return $this + */ + public function setMaxFollow(int $max_follow): self + { + $this->max_follow = &$max_follow; + + unset($max_follow); + return $this; + } + + /** + * Set HTTP accept types + * + * @param string $accept_type + * + * @return $this + */ + public function setAcceptType(string $accept_type): self + { + $this->accept_type = &$accept_type; + + unset($accept_type); + return $this; + } + + /** + * Set ETag value + * + * @param string $etag + * + * @return $this + */ + public function setETag(string $etag): self + { + $this->etag = &$etag; + + unset($etag); + return $this; + } + + /** + * Set modified since value + * + * @param string $last_modified + * + * @return $this + */ + public function setLastModified(string $last_modified): self + { + $this->modified = &$last_modified; + + unset($last_modified); + return $this; + } + + /** + * Set proxy + * + * @param string $proxy + * @param string $proxy_passwd + * + * @return $this + */ + public function setProxy(string $proxy, string $proxy_passwd): self + { + $this->proxy = &$proxy; + $this->proxy_passwd = &$proxy_passwd; + + unset($proxy, $proxy_passwd); + return $this; + } + + /** + * Fetch response data + * + * @param bool $with_body + * @param bool $with_header + * + * @return string + * @throws \Exception + */ + public function fetch(bool $with_body = true, bool $with_header = false): string + { + if ('' === $this->url) { + throw new \Exception('URL not set!', E_USER_NOTICE); + } + + //Prepare data + if (!empty($this->file)) { + $this->data += $this->file; + $this->content_type = self::CONTENT_TYPE_FORM_DATA; + } + + //Set method + if (!empty($this->data)) { + $this->method = 'POST'; + } + + //Get URL units + $url_unit = $this->getUrlUnit($this->url); + + //Get cURL headers + $header = $this->getHeader($url_unit); + + //Initialize + $opt = []; + $curl = curl_init(); + + //Build options + $opt[CURLOPT_URL] = $this->url; + $opt[CURLOPT_PORT] = &$url_unit['port']; + $opt[CURLOPT_TIMEOUT] = 60; + $opt[CURLOPT_NOSIGNAL] = true; + $opt[CURLOPT_AUTOREFERER] = true; + $opt[CURLOPT_COOKIESESSION] = true; + $opt[CURLOPT_RETURNTRANSFER] = true; + $opt[CURLOPT_SSL_VERIFYHOST] = 2; + $opt[CURLOPT_SSL_VERIFYPEER] = false; + $opt[CURLOPT_HTTPHEADER] = &$header; + $opt[CURLOPT_ENCODING] = $this->accept_encoding; + $opt[CURLOPT_USERAGENT] = $this->user_agent; + $opt[CURLOPT_CUSTOMREQUEST] = strtoupper($this->method); + $opt[CURLOPT_POST] = ('POST' === $this->method); + $opt[CURLOPT_NOBODY] = !$with_body; + $opt[CURLOPT_HEADER] = &$with_header; + + if ('' !== $this->cookie) { + $opt[CURLOPT_COOKIE] = $this->cookie; + } + + if ('' !== $this->referer) { + $opt[CURLOPT_REFERER] = $this->referer; + } + + if (0 < $this->max_follow) { + $opt[CURLOPT_FOLLOWLOCATION] = true; + $opt[CURLOPT_MAXREDIRS] = $this->max_follow; + } + + if ('' !== $this->proxy) { + $opt[CURLOPT_PROXY] = $this->proxy; + + if ('' !== $this->proxy_passwd) { + $opt[CURLOPT_PROXYUSERPWD] = $this->proxy_passwd; + } + } + + if (!empty($this->data)) { + switch ($this->content_type) { + case self::CONTENT_TYPE_JSON: + $opt[CURLOPT_POSTFIELDS] = json_encode($this->data); + break; + + case self::CONTENT_TYPE_XML: + $opt[CURLOPT_POSTFIELDS] = IOUnit::new()->toXml($this->data); + break; + + case self::CONTENT_TYPE_URL_ENCODED: + $opt[CURLOPT_POSTFIELDS] = http_build_query($this->data); + break; + + default: + $opt[CURLOPT_POSTFIELDS] = &$this->data; + break; + } + } + + //Set cURL options + curl_setopt_array($curl, $opt); + + //Get response + $response = curl_exec($curl); + + //Collect HTTP CODE or ERROR + false !== $response + ? $this->response_code = curl_getinfo($curl, CURLINFO_RESPONSE_CODE) + : $this->curl_error = curl_error($curl); + + //Close cURL handle + curl_close($curl); + + unset($opt, $curl, $key, $val); + return (string)$response; + } + + /** + * Get last HTTP response code + * + * @return string + */ + public function getHttpCode() + { + return $this->response_code; + } + + /** + * Get last HTTP curl error + * + * @return string + */ + public function getLastError(): string + { + return $this->curl_error; + } + + /** + * Extract URL units + * + * @param string $url + * + * @return array + */ + private function getUrlUnit(string $url): array + { + //Parse URL + $unit = parse_url($url); + + //Check main components + if (false === $unit || !isset($unit['scheme']) || !isset($unit['host'])) { + return []; + } + + //Prepare URL unit + if (!isset($unit['path'])) { + $unit['path'] = '/'; + } + + $unit['query'] = isset($unit['query']) ? '?' . $unit['query'] : ''; + + if (!isset($unit['port'])) { + $unit['port'] = 'https' === $unit['scheme'] ? 443 : 80; + } + + unset($url); + return $unit; + } + + /** + * get request header + * + * @param array $url_unit + * + * @return array + */ + private function getHeader(array $url_unit): array + { + $header_list = ['Host' => $url_unit['host'] . ':' . $url_unit['port']]; + + if (!empty($this->header)) { + $header_list += $this->header; + } + + if ('' !== $this->cookie) { + $header_list['Cookie'] = $this->cookie; + } + + if ('' !== $this->etag) { + $header_list['If-None-Match'] = $this->etag; + } + + if ('' !== $this->modified) { + $header_list['If-Modified-Since'] = $this->modified; + } + + $header_list += [ + 'Accept' => $this->accept_type, + 'Accept-Charset' => $this->accept_charset, + 'Accept-Encoding' => $this->accept_encoding, + 'Accept-Language' => $this->accept_language, + 'Content-Type' => $this->content_type, + 'User-Agent' => $this->user_agent, + 'Connection' => $this->connection + ]; + + $headers = [$this->method . ' ' . $url_unit['path'] . $url_unit['query'] . ' ' . $this->http_ver]; + + foreach ($header_list as $key => $val) { + $headers[] = $key . ': ' . $val; + } + + unset($url_unit, $header_list, $key, $val); + return $headers; + } +} diff --git a/app/Library/SystemInfo.php b/app/Library/SystemInfo.php new file mode 100644 index 0000000000000000000000000000000000000000..1bf1755de9964990663aa523deadcdf81f194fc0 --- /dev/null +++ b/app/Library/SystemInfo.php @@ -0,0 +1,191 @@ + 0, + // 空闲磁盘 + 'free' => 0, + // 已使用的磁盘 + 'used' => 0, + // 磁盘占用率 + 'usage_ratio' => 0, + + // 单位符 + 'unit_symbol' => 'G', + ]; + + /** + * 获取磁盘相关数据 + * + * @return array + */ + public function getDisk() + { + if ( is_windows() ) { //windows服务器 + // 总磁盘(kb -> k -> M -> G) + $this->disk['total'] = round(disk_total_space("C:") / 1024 / 1024 / 1024, 2); + $this->disk['free'] = round(disk_free_space("C:") / 1024 / 1024 / 1024, 2); + $this->disk['used'] = round($this->disk['total'] - $this->disk['free'], 2); + $this->disk['usage_ratio'] = round(round($this->disk['free'] / $this->disk['total'], 4) * 100, 2); + } else { + //获取磁盘占用率 + $fp = popen('df -lh | grep -E "^(/)"', "r"); + $rs = fread($fp, 1024); + pclose($fp); + $rs = preg_replace('/\s{2,}/', ' ', $rs); //把多个空格换成 “_” + $hd = explode(" ", $rs); + $this->disk['total'] = trim($hd[1], 'G');//可用空间G + $this->disk['used'] = trim($hd[2], 'G');//可用空间G + $this->disk['free'] = trim($hd[3], 'G');//可用空间G + $this->disk['usage_ratio'] = trim($hd[4], '%');//已使用百分比 + } + return $this->disk; + } + + // 内存 + private $memory = [ + // 总内存 + 'total' => 0, + // 空闲内存 + 'free' => 0, + // 已使用的内存 + 'used' => 0, + // 内存占用率 + 'usage_ratio' => 0, + // 单位符 + 'unit_symbol' => 'M', + ]; + + /** + * 获取内存相关数据 + * + * @return array + */ + public function getMemory() + { + if ( is_windows() ) { // windows服务器 + $path = $this->getMemoryUsageVbsPathByWindows(); + exec("cscript -nologo $path", $usage); + $memory = my_json_decode($usage[0], true); + + $this->memory['total'] = round($memory['TotalVisibleMemorySize'] / 1024, 2); + $this->memory['free'] = round($memory['FreePhysicalMemory'] / 1024, 2); + $this->memory['used'] = round($this->memory['total'] - $this->memory['free'], 2); + $this->memory['usage_ratio'] = round(round($this->memory['used'] / $this->memory['total'], 4) * 100, 2); + } else { + //内存使用率 + $fp = popen('top -b -n 2 | grep -E "(Mem)"', "r"); + $rs = fread($fp, 1024); + $sys_info = explode("\n", $rs); + $mem_info = explode(",", $sys_info[2]); //内存占有量 数组 + $this->memory['total'] = trim(trim($mem_info[0], 'KiB Mem : '), ' total'); + $this->memory['used'] = trim(trim($mem_info[2], 'used')); + $this->memory['buffer_cache'] = trim(trim($mem_info[3], 'buff/cache')); + $this->memory['free'] = trim(trim($mem_info[1], 'free')); + $this->memory['usage_ratio'] = round($this->memory['used'] / intval($this->memory['total']), 4) * 100; //百分比 + } + return $this->memory; + } + + // Cpu + private $cpu = [ + // 总Cpu + 'total' => 0, + // 空闲Cpu + 'free' => 0, + // 已使用的Cpu + 'used' => 0, + // Cpu占用率 + 'usage_ratio' => 0, + ]; + + /** + * 获取Cpu相关数据 + * + * @return array + */ + public function getCpu() + { + if ( is_windows() ) { // windows服务器 + // WINDOWS的CPU是极为不准确的。 + $this->cpu['usage_ratio'] = (float)$this->getCpuUsage(); + } else { + //获取CPU使用率以及内存使用率 + $fp = popen('top -b -n 2 | grep -E "(Cpu)"', "r"); + $rs = fread($fp, 1024); + $sys_info = explode("\n", $rs); + $this->cpu['usage_ratio'] = (float)trim(current(explode(',', trim($sys_info[0], '%Cpu(s): '))), 'us'); //百分比; + } + return $this->cpu; + } + + /** + * 获得总内存及可用物理内存JSON vbs文件生成函数 + * + * @return string 返回vbs文件路径 + */ + private function getMemoryUsageVbsPathByWindows() + { + return $this->getFilePath('memory_usage.vbs', "On Error Resume Next + Set objWMI = GetObject(\"winmgmts:\\\\.\\root\cimv2\") + Set colOS = objWMI.InstancesOf(\"Win32_OperatingSystem\") + For Each objOS in colOS + Wscript.Echo(\"{\"\"TotalVisibleMemorySize\"\":\" & objOS.TotalVisibleMemorySize & \",\"\"FreePhysicalMemory\"\":\" & objOS.FreePhysicalMemory & \"}\") + Next"); + } + + /** + * 判断指定路径下指定文件是否存在,如不存在则创建 + * + * @param string $fileName 文件名 + * @param string $content 文件内容 + * + * @return string 返回文件路径 + */ + private function getFilePath($fileName, $content) + { + $path = dirname(__FILE__) . "\\$fileName"; + if ( !file_exists($path) ) { + file_put_contents($path, $content); + } + return $path; + } + + /** + * 获得CPU使用率 + * + * @return Number + */ + private function getCpuUsage() + { + $path = $this->getCupUsageVbsPathByWindows(); + exec("cscript -nologo $path", $usage); + return $usage[0]; + } + + /** + * 获得cpu使用率vbs文件生成函数 + * + * @return string 返回vbs文件路径 + */ + private function getCupUsageVbsPathByWindows() + { + return $this->getFilePath('cpu_usage.vbs', "On Error Resume Next + Set objProc = GetObject(\"winmgmts:\\\\.\\root\cimv2:win32_processor='cpu0'\") + WScript.Echo(objProc.LoadPercentage)"); + } +} diff --git a/app/Library/cpu_usage.vbs b/app/Library/cpu_usage.vbs new file mode 100644 index 0000000000000000000000000000000000000000..60a7bddb9421ae21e1131e4482d83637a4897853 --- /dev/null +++ b/app/Library/cpu_usage.vbs @@ -0,0 +1,3 @@ +On Error Resume Next + Set objProc = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'") + WScript.Echo(objProc.LoadPercentage) \ No newline at end of file diff --git a/app/Library/memory_usage.vbs b/app/Library/memory_usage.vbs new file mode 100644 index 0000000000000000000000000000000000000000..4c4218f308656747c35bb246896630c714f99d69 --- /dev/null +++ b/app/Library/memory_usage.vbs @@ -0,0 +1,6 @@ +On Error Resume Next + Set objWMI = GetObject("winmgmts:\\.\root\cimv2") + Set colOS = objWMI.InstancesOf("Win32_OperatingSystem") + For Each objOS in colOS + Wscript.Echo("{""TotalVisibleMemorySize"":" & objOS.TotalVisibleMemorySize & ",""FreePhysicalMemory"":" & objOS.FreePhysicalMemory & "}") + Next \ No newline at end of file diff --git a/app/Listeners/QueryListener.php b/app/Listeners/QueryListener.php new file mode 100644 index 0000000000000000000000000000000000000000..63368e5656ad83987d64adab1d97e9b5decbb12e --- /dev/null +++ b/app/Listeners/QueryListener.php @@ -0,0 +1,52 @@ +log = new Logger('mysql'); + + // 创建mysql文件夹 + $dir_path = dirname(dirname(__DIR__)) . '/storage/logs/' . $this->log->getName(); + if (!is_dir($dir_path)) mkdir($dir_path, 0755); + + $log_path = storage_path('logs/' . $this->log->getName() . '/' . date('Y-m-d') . '.log'); + if (!file_exists($log_path)) { + fopen($log_path, "w"); + } + + $this->log->pushHandler(new StreamHandler($log_path, Logger::DEBUG)); + } + + /** + * Handle the event. + * + * @param object $event + * + * @return void + */ + public function handle($event): void + { + if (env('APP_DEBUG') == true) { + /** + * sql语句的监听 + */ + $sql = str_replace("?", "'%s'", $event->sql); + $log = vsprintf($sql, $event->bindings); + + $this->log->addRecord(Logger::DEBUG, '[' . $event->time . '] | ' . $log . ' |'); + } + } +} diff --git a/app/Models/Model.php b/app/Models/Model.php new file mode 100644 index 0000000000000000000000000000000000000000..50b47798c814b9ee28db5e2b28f111f1e44bc30e --- /dev/null +++ b/app/Models/Model.php @@ -0,0 +1,92 @@ +attributes[self::CREATED_AT]; + } + + public function getUpdatedTimeAttribute() + { + return $this->attributes[self::UPDATED_AT]; + } + + /** + * 自定义的软删除 + */ + protected $is_delete = 1; //是否开启删除(1.开启删除,就是直接删除;0.假删除) + protected $delete_field = 'is_delete'; //删除字段 + + public function getIsDelete() + { + return $this->is_delete; + } + + public function getDeleteField() + { + return $this->delete_field; + } + + /** + * 不可批量赋值的属性 + * + * @var array + */ + protected $guarded = []; + + /** + * 模型的 "booted" 方法 + * + * 应用全局作用域 + * + * @return void + */ + protected static function booted() + { + // 假删除的作用域 + static::addGlobalScope(new DeleteScope(new static)); + } + + public static function firstByWhere($where) + { + return self::where($where)->first(); + } +} diff --git a/app/Models/MonthModel.php b/app/Models/MonthModel.php new file mode 100644 index 0000000000000000000000000000000000000000..e79223fbda4572d33770bb9c6b73e617fe9ef780 --- /dev/null +++ b/app/Models/MonthModel.php @@ -0,0 +1,100 @@ +setMonthTable(); + } + + public function getMonth(): string + { + return $this->month; + } + + + /** + * 设置按月分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : date(self::MONTH_FORMAT, strtotime($month)); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= str_replace('_', '-', self::MIN_TABLE) ) { + $this->month = date(self::MONTH_FORMAT, strtotime($month)); + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 获取从开始分表到今天为止,所有的月份 + * + * @return array + */ + public function getAllMonthes() : array + { + $monthes = get_month_range(str_replace('_', '-', self::MIN_TABLE), date('Y-m')); + krsort($monthes); + return $monthes; + } + + /** + * 获取原始表名(移除月份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按月分表的表名 + if (preg_match ("/^([0-9]{4})_([0-9]{2})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000000000000000000000000000000000000..804799bafe1da2889c0cc8ae43ff3c307f017e3c --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,43 @@ + 'datetime', + ]; +} diff --git a/app/Models/YearModel.php b/app/Models/YearModel.php new file mode 100644 index 0000000000000000000000000000000000000000..316ef1e0e854c802cf78aeb5a5d9b8a1605572fd --- /dev/null +++ b/app/Models/YearModel.php @@ -0,0 +1,89 @@ +setMonthTable(); + } + + /** + * 获取从开始分表到明年为止,所有的年份 + * + * @return array + */ + public function getAllMonthes(): array + { + $years = get_year_range(self::MIN_TABLE . '-01', date('Y-01', strtotime('+1 year'))); + krsort($years); + return $years; + } + + /** + * 设置按年分表 + * + * @param string $month + * + * @return $this + */ + public function setMonthTable(string $month = '') + { + $month = empty($month) ? date(self::MONTH_FORMAT) : (strlen($month) == 4 ? $month : date(self::MONTH_FORMAT, strtotime($month))); + // 替换为日期格式,否则将无法转化为时间戳(有效的日期格式 - 拼接才可以) + $month = str_replace('_', '-', $month); + + // 当表名大于最小表名时,设置表名。 + if ( $month >= self::MIN_TABLE ) { + $this->month = $month; + $this->table = $this->getOldTableName() . '_' . $this->month; + } + + return $this; + } + + /** + * 生成新表 + * + * @param string $new_table + * @param string $time + * @param string $format + * @param string $old_table + * + * @return bool + */ + public function createMonthTable(string $new_table = '', $time = '', $format = self::MONTH_FORMAT, string $old_table = '') + { + $new_table = empty($new_table) ? $this->getOldTableName() . '_' . date($format, empty($time) ? time() : $time) : $new_table; + + // 数据表前缀 + $db_prefix = env('DB_PREFIX'); + + return $this->setCopyTable($db_prefix . $new_table, $db_prefix . $this->getOldTableName()); + } + + /** + * 获取原始表名(移除年份表的后缀)【包含前缀】 + * + * @return string + */ + public function getOldTableName():string + { + $table_name = $this->getTable(); + $suffix_len = strlen(self::MIN_TABLE); + $suffix = substr($table_name, -$suffix_len, $suffix_len); + // 检测当前表名是否为按年分表的表名 + if (preg_match ("/^([0-9]{4})$/", $suffix, $parts)){ + // 减1是因为默认还有一个下划线 + $table_name = substr($table_name, 0, -$suffix_len - 1); + } + return $table_name; + } +} diff --git a/app/Modules/Admin/Config/.gitkeep b/app/Modules/Admin/Config/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Config/config.php b/app/Modules/Admin/Config/config.php new file mode 100644 index 0000000000000000000000000000000000000000..0fa4b426518ee0066eb63724f10ece2a16a1eba1 --- /dev/null +++ b/app/Modules/Admin/Config/config.php @@ -0,0 +1,5 @@ + 'Admin' +]; diff --git a/app/Modules/Admin/Console/.gitkeep b/app/Modules/Admin/Console/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Console/AutoTableBuild.php b/app/Modules/Admin/Console/AutoTableBuild.php new file mode 100644 index 0000000000000000000000000000000000000000..88c27747dae2e642dec44a8cbecb482478521548 --- /dev/null +++ b/app/Modules/Admin/Console/AutoTableBuild.php @@ -0,0 +1,77 @@ +model_lists as $model){ + (new $model)->createMonthTable('', strtotime('+1 month')); + } + } + + /** + * Get the console command arguments. + * + * @return array + */ + protected function getArguments() + { + return [ + ['example', InputArgument::REQUIRED, 'An example argument.'], + ]; + } + + /** + * Get the console command options. + * + * @return array + */ + protected function getOptions() + { + return [ + ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null], + ]; + } +} diff --git a/app/Modules/Admin/Database/Migrations/.gitkeep b/app/Modules/Admin/Database/Migrations/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Database/Seeders/.gitkeep b/app/Modules/Admin/Database/Seeders/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php b/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php new file mode 100644 index 0000000000000000000000000000000000000000..9a8738e2f09b9049df5438802abfbfbf01445644 --- /dev/null +++ b/app/Modules/Admin/Database/Seeders/AdminDatabaseSeeder.php @@ -0,0 +1,21 @@ +call("OthersTableSeeder"); + } +} diff --git a/app/Modules/Admin/Database/factories/.gitkeep b/app/Modules/Admin/Database/factories/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Entities/.gitkeep b/app/Modules/Admin/Entities/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Entities/Article/Article.php b/app/Modules/Admin/Entities/Article/Article.php new file mode 100644 index 0000000000000000000000000000000000000000..cda0eeea82bc5fd240c9c2eda6991dcd52373ad3 --- /dev/null +++ b/app/Modules/Admin/Entities/Article/Article.php @@ -0,0 +1,35 @@ +attributes['article_cover'] = str_replace(Storage::url('/'), '', $key); + } + } + + public function category() + { + return $this->hasOne(ArticleCategory::class, 'category_id', 'category_id'); + } + + public function labels() + { + return $this->belongsToMany(ArticleLabel::class, ArticleWithLabel::class, 'article_id' , 'label_id' , 'article_id', 'label_id')->withPivot(['article_id', 'label_id']); + } +} diff --git a/app/Modules/Admin/Entities/Article/ArticleCategory.php b/app/Modules/Admin/Entities/Article/ArticleCategory.php new file mode 100644 index 0000000000000000000000000000000000000000..82ef61fcd7b55d7a22cb868358e45419c32b67bc --- /dev/null +++ b/app/Modules/Admin/Entities/Article/ArticleCategory.php @@ -0,0 +1,87 @@ +getCacheTree(); + } + + /** + * 删除缓存 + * + * @return bool + */ + public function delCache() + { + Cache::forget($this->cache_key); + return true; + } + + /** + * 获取文章分类的数据缓存 + * + * @param string $get_type + * + * @return mixed + */ + private function getCache(string $get_type = '') + { + return Cache::remember($this->cache_key, 3600, function() use ($get_type) { + $all = $this->orderBy('category_sort', 'ASC')->get()->toArray(); + $tree = list_to_tree($all, $this->getKeyName()); + return compact('all', 'tree'); + }); + } + + /** + * 获取Tree格式化数据 + * + * @return array|mixed + */ + public function getCacheTree() + { + return $this->getCache()['tree'] ?? []; + } + + /** + * 获取所有文章数据 + * + * @return array|mixed + */ + public function getCacheAll() + { + return $this->getCache()['all'] ?? []; + } + + /** + * 获取所有子集的Id集合(包含自己) + * + * @param int $parent_id + * @param array $all + * + * @return array|int[] + */ + public function getChildIds(int $parent_id, array $all = []) + { + $ids = [$parent_id]; + empty($all) && $all = $this->getCacheAll(); + foreach ($all as $key => $value) { + if ( $value['parent_id'] == $parent_id ) { + unset($all[$key]); + $child_ids = $this->getChildIds((int)$value['category_id'], $all); + !empty($child_ids) && $ids = array_merge($ids, $child_ids); + } + } + return $ids; + } +} diff --git a/app/Modules/Admin/Entities/Article/ArticleLabel.php b/app/Modules/Admin/Entities/Article/ArticleLabel.php new file mode 100644 index 0000000000000000000000000000000000000000..8910298463c9c82766a6610cc4334519480a83e9 --- /dev/null +++ b/app/Modules/Admin/Entities/Article/ArticleLabel.php @@ -0,0 +1,11 @@ +belongsTo(Admin::class, 'admin_id', 'admin_id'); + } + + public function getLogDurationAttribute($key) + { + return floatval($key); + } +} diff --git a/app/Modules/Admin/Entities/Log/AdminLoginLog.php b/app/Modules/Admin/Entities/Log/AdminLoginLog.php new file mode 100644 index 0000000000000000000000000000000000000000..063c8d0e253fbc551454f62d4f5e708e9f15029d --- /dev/null +++ b/app/Modules/Admin/Entities/Log/AdminLoginLog.php @@ -0,0 +1,38 @@ +belongsTo(Admin::class, 'admin_id', 'admin_id'); + } + + public function getLogDurationAttribute($key) + { + return floatval($key); + } + + public function add(int $admin_id = 0, int $log_status = 1, $description = '登录成功') + { + $ip_agent = get_client_info(); + return $this->setMonthTable()->create([ + 'admin_id' => $admin_id, + 'created_ip' => $ip_agent['ip'] ?? get_ip(), + 'browser_type' => $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT'], + 'log_status' => $log_status, + 'description' => $description, + 'log_action' => request()->route()->getActionName(), + 'log_method' => request()->getMethod(), + 'log_duration' => microtime(true) - LARAVEL_START, + 'request_data' => json_encode(request()->all()), + ]); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/Admin.php b/app/Modules/Admin/Entities/Rabc/Admin.php new file mode 100644 index 0000000000000000000000000000000000000000..891b305287e2ace1e089325c17bcaa1d69a5e775 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/Admin.php @@ -0,0 +1,145 @@ +is_delete; + } + + public function getDeleteField() + { + return $this->delete_field; + } + + /** + * 是否主动维护时间戳 + * + * @var bool + */ + public $timestamps = false; + + protected $hidden = ['password']; + + /** + * 不可批量赋值的属性 + * + * @var array + */ + protected $guarded = []; + + /** + * 模型的 "booted" 方法 + * + * 应用全局作用域 + * + * @return void + */ + protected static function booted() + { + // 假删除的作用域 + $static = new static; + static::addGlobalScope('delete', function(Builder $builder) use ($static){ + if ($static->is_delete == 0) $builder->where($static->delete_field, $static->is_delete); + }); + } + + public function getAdminByName(string $admin_name) + { + return $this->where('admin_name', $admin_name)->first(); + } + + public function setPasswordAttribute($key) + { + if (empty($key)) unset($this->attributes['password']); + else $this->attributes['password'] = hash_encryption($key); + } + + /** + * 获取会储存到 jwt 声明中的标识 + * @return mixed + */ + public function getJWTIdentifier() + { + return $this->getKey(); + } + + /** + * 返回包含要添加到 jwt 声明中的自定义键值对数组 + * @return array + */ + public function getJWTCustomClaims() + { + return ['role' => 'admin']; + } + + public function adminInfo() + { + return $this->hasOne(AdminInfo::class, $this->primaryKey, $this->primaryKey); + } + + public function roles() + { + return $this->belongsToMany(AdminRole::class, AdminWithRole::class, 'admin_id', 'role_id')->withPivot(['admin_id', 'role_id']); + } + + /** + * @Function assignRole + * + * @param $roles + * + * @return bool + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:给用户分配角色 + * @englishAnnotation: + */ + public function assignRole($roles) + { + return $this->roles()->save($roles); + } + + /** + * @Function deleteRole + * + * @param $roles + * + * @return mixed + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:取消用户分配的角色,取消而不是删除 + * @englishAnnotation: + */ + public function deleteRole($roles) + { + return $this->roles()->detach($roles); + } + + public function getAdminHeadAttribute($key) + { + if (empty($key)) return $key; + return Storage::url($key); + } + + public function setAdminHeadAttribute($key) + { + if (!empty($key)) { + $this->attributes['admin_head'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminInfo.php b/app/Modules/Admin/Entities/Rabc/AdminInfo.php new file mode 100644 index 0000000000000000000000000000000000000000..9c0ed7d22eea0e59a00a0037bb104ba09a82495e --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminInfo.php @@ -0,0 +1,10 @@ +orderBy('menu_sort', 'ASC')->get(); + } + + public function getSelectLists() + { + return list_to_tree($this->orderBy('menu_sort', 'ASC')->get()->toArray()); + } + + public function getMenusByIds(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids) + ->orderBy('menu_sort', 'ASC') + ->get(); + } + + public function getMenusByIdsForRabc(array $menu_ids) + { + return $this->whereIn('menu_id', $menu_ids)->where('api_url', '<>', '')->pluck('api_method', 'api_url'); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminRole.php b/app/Modules/Admin/Entities/Rabc/AdminRole.php new file mode 100644 index 0000000000000000000000000000000000000000..496acaa705f2fdd851083a5d00d73c28c1f57006 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminRole.php @@ -0,0 +1,48 @@ +belongsToMany(AdminMenu::class, 'admin_role_with_menus', 'role_id', 'menu_id') + ->where(['is_delete' => 0, 'is_check' => 1]) + ->orderBy('menu_sort', 'ASC'); + } + + /** + * @Function grantMenus + * + * @param $menus + * + * @return bool + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:给角色赋予权限 + * @englishAnnotation: + */ + public function grantMenus($menus) + { + return AdminRoleWithMenu::create($menus); + } + + /** + * @Function deleteMenus + * + * @param $menus + * + * @return mixed + * @author : cnpscy <[2278757482@qq.com]> + * @chineseAnnotation:取消角色赋予的权限 + * @englishAnnotation: + */ + public function deleteMenus($menus) + { + return AdminRoleWithMenu::where($menus)->delete(); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php new file mode 100644 index 0000000000000000000000000000000000000000..28aeb42d98060b484dbe6944689dc535ee56fcd4 --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminRoleWithMenu.php @@ -0,0 +1,16 @@ +whereIn('role_id', $role_ids)->select('menu_id')->get()->toArray(), 'menu_id')); + } +} diff --git a/app/Modules/Admin/Entities/Rabc/AdminWithRole.php b/app/Modules/Admin/Entities/Rabc/AdminWithRole.php new file mode 100644 index 0000000000000000000000000000000000000000..89fed335f80f4c8b97117288b7df48e11d473d8b --- /dev/null +++ b/app/Modules/Admin/Entities/Rabc/AdminWithRole.php @@ -0,0 +1,10 @@ +attributes['banner_cover'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/System/Config.php b/app/Modules/Admin/Entities/System/Config.php new file mode 100644 index 0000000000000000000000000000000000000000..91b85bf5631c58a7b960b957c6e5c75d984fc1e0 --- /dev/null +++ b/app/Modules/Admin/Entities/System/Config.php @@ -0,0 +1,92 @@ +where('is_check', 1) + ->select('config_value', 'config_name', 'config_type') + ->get() + ->toArray();//字段进行过滤 + $_data = $data_list = []; + array_walk($config_data, function ($value) use (&$data_list) { + /** + * 对于数组格式的处理 + * + * in_array(strtoupper($value['config_name']), ['CONFIG_GROUP_LIST', 'CONFIG_TYPE_LIST', 'MENU_TYPE_LIST']) || + */ + if ($value['config_type'] == 3) { + $value_ary = array_filter(explode('|', str_replace(["\r", "\r\n", "\n"], '|', $value['config_value']))); + foreach ($value_ary as $k => $v) { + if (empty($value['config_name'])) continue; + $array = explode(':', str_replace(["'", '"', "\r", "\r\n", "\n"], '', $v)); + $_data[$array[0]] = $array[1]; + } + $data_list[$value['config_name']] = $_data; + }else{ + /** + * 配置项的值,对于不同字符类型的格式进行处理 + */ + switch ($value['config_type']){ + case 2: // 数字 + $config_value = floatval($value['config_value']); + break; + default: + $config_value = $value['config_value']; + break; + } + /** + * 如果存在某一类的设置项: + * 如:user.login_days、user.pass 这一类,自动设置为数据格式数据,便于使用config的 . 找到数组下坐标 + */ + if (strstr($value['config_name'], '.')){ + $ary = explode('.', $value['config_name']); + if (count($ary) > 2){ + list($key, $val, $third) = $ary; + $data_list[$key][$val][$third] = $config_value; + }else{ + list($key, $val) = $ary; + $data_list[$key][$val] = $config_value; + } + }else{ + $data_list[$value['config_name']] = $config_value; + } + } + }); + // 文件写入 + $res = file_put_contents( config_path() . '/cnpscy.php', 'select()->toArray(); + if (!empty($configs)) { + foreach ($configs as &$v) { + if (in_array($v['config_type'], [4])){ + if (!empty($v['config_extra'])) $v['config_extra'] = config_array_analysis($v['config_extra']); + } + } + } + $configs = array_field_group($configs, 'config_group');//按照配置进行分组 + if (empty($configs[0])) $configs[0] = []; + return $configs; + } +} diff --git a/app/Modules/Admin/Entities/System/Friendlink.php b/app/Modules/Admin/Entities/System/Friendlink.php new file mode 100644 index 0000000000000000000000000000000000000000..9e03f1a0b2842037f0c95ac6ce00acc0b866a007 --- /dev/null +++ b/app/Modules/Admin/Entities/System/Friendlink.php @@ -0,0 +1,25 @@ +attributes['link_cover'] = str_replace(Storage::url('/'), '', $key); + } + } +} diff --git a/app/Modules/Admin/Entities/System/Protocol.php b/app/Modules/Admin/Entities/System/Protocol.php new file mode 100644 index 0000000000000000000000000000000000000000..d4fd0e4d40ef5c860d76d1aeecf7c088858c046e --- /dev/null +++ b/app/Modules/Admin/Entities/System/Protocol.php @@ -0,0 +1,11 @@ +service = $articleCategoryService; + } + + public function create(ArticleCategoryRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleCategoryRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Article/ArticleController.php b/app/Modules/Admin/Http/Controllers/Article/ArticleController.php new file mode 100644 index 0000000000000000000000000000000000000000..cb9385c962eb5bd113d17bf14ce4a834c4cee37b --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Article/ArticleController.php @@ -0,0 +1,25 @@ +service = $articleService; + } + + public function create(ArticleRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php new file mode 100644 index 0000000000000000000000000000000000000000..7aaf19da1c109545dd37e2061f1e22365281e806 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Article/ArticleLabelController.php @@ -0,0 +1,25 @@ +service = $articleLabelService; + } + + public function create(ArticleLabelRequest $request) + { + return $this->createService($request); + } + + public function update(ArticleLabelRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/AuthController.php b/app/Modules/Admin/Http/Controllers/AuthController.php new file mode 100644 index 0000000000000000000000000000000000000000..e811b8cc32da7bb22e44a8c1dccfb112b017ea03 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/AuthController.php @@ -0,0 +1,64 @@ +service = $authService; + } + + /** + * 登录流程 + * + * @param LoginRequest $request + * @return \Illuminate\Http\JsonResponse + * @throws \App\Exceptions\Admin\AuthException + * @throws \App\Exceptions\InvalidRequestException + */ + public function login(LoginRequest $request) + { + $data = $request->validated(); + + // 登录流程 + $token = $this->service->login($data); + + return $this->successJson($token); + } + + /** + * 获取登录管理员信息 + * + * @return \Illuminate\Http\JsonResponse + * @throws \App\Exceptions\Admin\AuthException + */ + public function me() + { + if (\request()->getMethod() == 'OPTIONS'){ + return $this->successJson(); + } + + return $this->successJson($this->service->me()); + } + + /** + * 退出登录 + * + * @return \Illuminate\Http\JsonResponse + */ + public function logout() + { + return $this->successJson($this->service->logout()); + } + + public function getRabcList() + { + // 临时测试数据 + return $this->successJson(list_to_tree(AdminMenu::getInstance()->getAllMenus()->toArray())); + } +} diff --git a/app/Modules/Admin/Http/Controllers/BaseController.php b/app/Modules/Admin/Http/Controllers/BaseController.php new file mode 100644 index 0000000000000000000000000000000000000000..6006d7ceed566951c17129216cf020d4c7493251 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/BaseController.php @@ -0,0 +1,147 @@ +service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + return $this->successJson($this->service->lists($request->all())); + } + + /** + * 详情 + * + * @param int $id + * + * @return \Illuminate\Http\JsonResponse + */ + public function detail(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($detail = $this->service->detail($request)){ + return $this->successJson($detail); + }else{ + return $this->errorJson('数据不存在!'); + } + } + + /** + * 新增流程 + * + * @param $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function createService($request) + { + if ($request instanceof FormRequest){ + $request->validated(); + } + + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->create($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 更新流程 + * + * @param $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function updateService($request) + { + if ($request instanceof FormRequest){ + $request->validated(); + } + + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->update($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 删除 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function delete(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + if ($this->service->delete($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 指定字段变更操作 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function changeFiledStatus(Request $request) + { + if (!isset($this->service)){ + return $this->successJson([], '请先设置Service或者重写方法!'); + } + + if ($this->service->changeFiledStatus($request->all())){ + return $this->successJson([], $this->service->getError()); + }else{ + return $this->errorJson($this->service->getError()); + } + } + + /** + * 下拉筛选列表(可搜索) + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function getSelectLists(Request $request) + { + $lists = $this->service->getSelectLists($request); + return $this->successJson($lists); + } +} diff --git a/app/Modules/Admin/Http/Controllers/IndexController.php b/app/Modules/Admin/Http/Controllers/IndexController.php new file mode 100644 index 0000000000000000000000000000000000000000..a46eab31581f48930c6befe06e2969cae8638571 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/IndexController.php @@ -0,0 +1,78 @@ +service = $indexService; + } + + public function index(Request $request) + { + return $this->successJson($this->service->index()); + } + + /** + * 按照日志类型的统计图数据 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function logsStatistics(Request $request) + { + return $this->successJson($this->service->logsStatistics()); + } + + /** + * 月份表列表 + * + * @return \Illuminate\Http\JsonResponse + */ + public function getMonthList() + { + return $this->successJson(MonthModel::getInstance()->getAllMonthes()); + } + + /** + * 编辑登录管理员信息 + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\JsonResponse + */ + public function update(Request $request) + { + if ( $this->service->updateAdmin($request) ) { + return $this->successJson([], $this->service->getError()); + } else { + return $this->errorJson($this->service->getError()); + } + } + + /** + * 版本历史记录 + * + * @return mixed + */ + public function versionLogs() + { + return $this->successJson($this->service->versionLogs()); + } + + /** + * 获取服务器状态 + * + * @return \Illuminate\Http\JsonResponse + */ + public function getServerStatus() + { + return $this->successJson($this->service->getServerStatus()); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php b/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php new file mode 100644 index 0000000000000000000000000000000000000000..7ca869b99c284c9c112af29940a289ec564dd9d8 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Log/AdminLogController.php @@ -0,0 +1,14 @@ +service = $adminLogService; + } +} diff --git a/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php b/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php new file mode 100644 index 0000000000000000000000000000000000000000..47811b5a17b850a0d76a20a97dadad5eb28c4a1f --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Log/AdminLoginLogController.php @@ -0,0 +1,14 @@ +service = $adminLoginLogService; + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php new file mode 100644 index 0000000000000000000000000000000000000000..a4a03fd6956390365e7f5db487c11657250a3d98 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminController.php @@ -0,0 +1,25 @@ +service = $adminService; + } + + public function create(AdminRequest $request) + { + return $this->createService($request); + } + + public function update(AdminRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php new file mode 100644 index 0000000000000000000000000000000000000000..40d95e9aab972383567b2f44b2320092746ee87e --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminMenuController.php @@ -0,0 +1,25 @@ +service = $adminMenuService; + } + + public function create(AdminMenuRequest $request) + { + return $this->createService($request); + } + + public function update(AdminMenuRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php b/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php new file mode 100644 index 0000000000000000000000000000000000000000..5ff9f1eb1cf0e7e61ca7b3de70ab1fffd4f7f195 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/Rabc/AdminRoleController.php @@ -0,0 +1,25 @@ +service = $adminRoleService; + } + + public function create(AdminRoleRequest $request) + { + return $this->createService($request); + } + + public function update(AdminRoleRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/BannerController.php b/app/Modules/Admin/Http/Controllers/System/BannerController.php new file mode 100644 index 0000000000000000000000000000000000000000..11598c26f11286fec96550bee6994091901746f9 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/BannerController.php @@ -0,0 +1,25 @@ +service = $bannerService; + } + + public function create(BannerRequest $request) + { + return $this->createService($request); + } + + public function update(BannerRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/ConfigController.php b/app/Modules/Admin/Http/Controllers/System/ConfigController.php new file mode 100644 index 0000000000000000000000000000000000000000..3ab6f3097d634a227194b8f3f49cb08b276030df --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/ConfigController.php @@ -0,0 +1,59 @@ +service = $configService; + } + + public function create(ConfigRequest $request) + { + return $this->createService($request); + } + + public function update(ConfigRequest $request) + { + return $this->updateService($request); + } + + public function getConfigGroupType() + { + $config_type_list = $config_group_list = []; + $config_group = cnpscy_config('config_group_list'); + foreach ($config_group as $key => $value){ + $config_group_list[] = [ + 'value' => $key, + 'name' => $value, + ]; + } + $config_type = cnpscy_config('config_type_list'); + foreach ($config_type as $key => $value){ + $config_type_list[] = [ + 'value' => $key, + 'name' => $value, + ]; + } + return $this->successJson([ + 'config_group_list' => $config_group_list, + 'config_type_list' => $config_type_list, + ]); + } + + /** + * 同步配置 + * + * @return \Illuminate\Http\JsonResponse + */ + public function pushRefreshConfig() + { + $this->service->pushRefreshConfig(); + return $this->successJson([], '配置文件已同步成功!'); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php b/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php new file mode 100644 index 0000000000000000000000000000000000000000..3cecbac7d3c3c04237fcbd46a67a004f1f52fe7c --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/FriendlinkController.php @@ -0,0 +1,25 @@ +service = $friendlinkService; + } + + public function create(FriendlinkRequest $request) + { + return $this->createService($request); + } + + public function update(FriendlinkRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/ProtocolController.php b/app/Modules/Admin/Http/Controllers/System/ProtocolController.php new file mode 100644 index 0000000000000000000000000000000000000000..86ab72687fbe6d13029afc39f9dbb93fbd922ddd --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/ProtocolController.php @@ -0,0 +1,25 @@ +service = $protocolService; + } + + public function create(ProtocolRequest $request) + { + return $this->createService($request); + } + + public function update(ProtocolRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/System/VersionController.php b/app/Modules/Admin/Http/Controllers/System/VersionController.php new file mode 100644 index 0000000000000000000000000000000000000000..768cfdb4db17d88e7c6d8fc60a3a55863a89716c --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/System/VersionController.php @@ -0,0 +1,25 @@ +service = $versionService; + } + + public function create(VersionRequest $request) + { + return $this->createService($request); + } + + public function update(VersionRequest $request) + { + return $this->updateService($request); + } +} diff --git a/app/Modules/Admin/Http/Controllers/UploadController.php b/app/Modules/Admin/Http/Controllers/UploadController.php new file mode 100644 index 0000000000000000000000000000000000000000..5277dc1110d46c53bb99f80ce692b5aa81b8ebc9 --- /dev/null +++ b/app/Modules/Admin/Http/Controllers/UploadController.php @@ -0,0 +1,31 @@ +file($file))){ + return $this->errorJson('请上传文件!'); + } + + $path = $request->file($file)->storePublicly( + date('Ym'), + config('filesystems') + ); + + return $this->successJson($path, '上传成功', ['path_url' => Storage::url($path)]); + } +} diff --git a/app/Modules/Admin/Http/Middleware/.gitkeep b/app/Modules/Admin/Http/Middleware/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Http/Middleware/AdminLog.php b/app/Modules/Admin/Http/Middleware/AdminLog.php new file mode 100644 index 0000000000000000000000000000000000000000..c07e6a39374f2679029621ef8af33da17cd52416 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/AdminLog.php @@ -0,0 +1,43 @@ +getMethod()); + + if ($method != 'GET'){ + $ip_agent = get_client_info(); + \App\Modules\Admin\Entities\Log\AdminLog::getInstance()->create([ + 'request_data' => json_encode($request->all()), + 'admin_id' => !empty(auth($guard)->user()) ? auth($guard)->user()->admin_id : 0, + 'created_ip' => $ip_agent['ip'] ?? get_ip(), + 'browser_type' => $ip_agent['agent'] ?? $_SERVER['HTTP_USER_AGENT'], + 'created_time' => time(), + 'log_action' => request()->route()->getActionName(), + 'log_method' => $method, + 'log_duration' => microtime(true) - LARAVEL_START, + 'request_url' => URL::full() ?? get_this_url(), + ]); + } + + return $resource; + } +} diff --git a/app/Modules/Admin/Http/Middleware/CheckAuth.php b/app/Modules/Admin/Http/Middleware/CheckAuth.php new file mode 100644 index 0000000000000000000000000000000000000000..5e297bdf72e87fefedf2b09be0fce79bd94d0a80 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckAuth.php @@ -0,0 +1,44 @@ +guard = 'admin'; +// // Auth认证 +// $auth = Auth()->guard($this->guard); +// try { +// if ( !$auth->check() ) { //未登录踢回,给予错误返回提示 +// return $this->errorJson('认证失败,请重新登录!'); +// } +// } catch (TokenExpiredException $e) { +// return $this->errorJson($e->getMessage()); +// } catch (TokenInvalidException $e) { +// return $this->errorJson($e->getMessage()); +// } catch (JWTException $e) { +// return $this->errorJson($e->getMessage()); +// } + + return $next($request); + } +} diff --git a/app/Modules/Admin/Http/Middleware/CheckRabc.php b/app/Modules/Admin/Http/Middleware/CheckRabc.php new file mode 100644 index 0000000000000000000000000000000000000000..9940d4e27231768c342603b3f79c4eaac746def5 --- /dev/null +++ b/app/Modules/Admin/Http/Middleware/CheckRabc.php @@ -0,0 +1,64 @@ +guard = 'admin'; +// // 开始验证路由权限 +// if (!$this->checkRabc($request, Auth()->guard($this->guard)->user()->getAuthIdentifier(), $load_error)){ +// return $this->errorJson('无权限' . (empty($load_error) ? '!' : ',' . $load_error), -2); +// } + + return $next($request); + } + + private function checkRabc($request, int $admin_id, &$load_error = ''):bool + { + // 超级管理员账户无需验证 + if ($admin_id == 1) return true; + + $roles = Admin::getInstance()->detail($admin_id)->roles->toArray(); + if (empty($roles)) return false; + $role_ids = array_column($roles, 'role_id'); + if (empty($role_ids)) return false; + $menu_ids = AdminRoleWithMenu::getInstance()->getMenuIdsByRoles($role_ids); + if (empty($menu_ids)) return false; + $menus = AdminMenu::getInstance()->getMenusByIdsForRabc($menu_ids)->toArray(); + if (empty($menus)) return false; + + // 获取当前路由 + $route_path = $request->route()->uri(); + // 检测是否存在当前API + if (isset($menus[$route_path])){ + // 验证请求方式 + if ($menus[$route_path] == $request->getMethod()){ + return true; + } + $load_error = '请求方式有误!'; + } + return false; + } +} diff --git a/app/Modules/Admin/Http/Requests/.gitkeep b/app/Modules/Admin/Http/Requests/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..c66d42132bab6e8e448f6c8a2b47772454a345f3 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleCategoryRequest.php @@ -0,0 +1,42 @@ +instance = ArticleCategory::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'category_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',category_name' . $this->validate_id + ], + 'category_sort' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'category_name.required' => '请输入分类名称!', + 'category_name.max' => '分类名称字数不可超过 256!', + 'category_name.unique' => '分类名称已存在,请更换!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..cc7dd143fe68ae64de3b717658d045c0480ea250 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleLabelRequest.php @@ -0,0 +1,39 @@ +instance = ArticleLabel::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'label_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',label_name' . $this->validate_id + ], + ]; + } + + public function messages() + { + return [ + 'label_name.required' => '请输入标签名称!', + 'label_name.max' => '标签名称字数不可超过 256!', + 'label_name.unique' => '标签名称已存在,请更换!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..8336bf2cb7fd6966c0c69789bc98a6c6f5d0ef8e --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Article/ArticleRequest.php @@ -0,0 +1,47 @@ +instance = Article::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'article_title' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',article_title' . $this->validate_id, + ], + 'category_id' => [ + 'required', + ], + 'article_cover' => [ + 'required', + ], + ]; + } + + public function messages() + { + return [ + 'article_title.required' => '请输入文章标题!', + 'article_title.max' => '标题字数不可超过 256!', + 'article_title.unique' => '文章标题已存在,请更换!', + 'category_id.required' => '请选择文章分类!', + 'article_cover.required' => '请上传封面!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/BaseRequest.php b/app/Modules/Admin/Http/Requests/BaseRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..00711c4917e48c3a137ef9992ea7c724f53394fc --- /dev/null +++ b/app/Modules/Admin/Http/Requests/BaseRequest.php @@ -0,0 +1,52 @@ +setInstance(); + } + + $this->setValidateId(); + } + + protected function setValidateId() + { + if ($this->instance){ + $primarykey = $this->instance->getKeyName(); + $this->validate_id = ',' . request()->input($primarykey, 0) . ',' . $primarykey . ($this->instance->getIsDelete() == 0 ? ',is_delete,0' : ''); + } + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + // + ]; + } + + /** + * Determine if the user is authorized to make this request. + * + * @return bool + */ + public function authorize() + { + return true; + } +} diff --git a/app/Modules/Admin/Http/Requests/LoginRequest.php b/app/Modules/Admin/Http/Requests/LoginRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..b2b022d80b8f3e892bddecca248449c7075d54bd --- /dev/null +++ b/app/Modules/Admin/Http/Requests/LoginRequest.php @@ -0,0 +1,27 @@ + 'required', + 'password' => 'required', + ]; + } + + public function messages() + { + return [ + 'admin_name.required' => '管理员账户为必填项!', + 'password.required' => '管理员密码为必填项!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..be8ffb659eef03e72fbf7d6ea8324fe46fc2c904 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminMenuRequest.php @@ -0,0 +1,37 @@ +instance = AdminMenu::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'menu_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',menu_name' . $this->validate_id + ], + ]; + } + + public function messages() + { + return [ + 'menu_name.required' => '请输入菜单名称!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..5b597501fd6c0babf76231f0a7cc79bf57accac0 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRequest.php @@ -0,0 +1,52 @@ +instance = Admin::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'admin_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',admin_name' . $this->validate_id + ], + 'admin_email' => [ + 'required', + 'max:256', + 'email', + ], + 'password' => [ +// 'confirmed', + ], + 'password_confirmation' => [ + + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'admin_name.required' => '请输入管理员账户!', + 'password.confirmed' => '密码确认不匹配!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..c52ba766290b8f4f07b32d5a6a4fe0c610ac4abc --- /dev/null +++ b/app/Modules/Admin/Http/Requests/Rabc/AdminRoleRequest.php @@ -0,0 +1,40 @@ +instance = AdminRole::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'role_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',role_name' . $this->validate_id + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'role_name.required' => '请输入角色名称!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/BannerRequest.php b/app/Modules/Admin/Http/Requests/System/BannerRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..7671babe0a77db44e6e2420cfcd2d734cd321101 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/BannerRequest.php @@ -0,0 +1,41 @@ +instance = Banner::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'banner_title' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',banner_title' . $this->validate_id + ], + 'banner_cover' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'banner_title.required' => '请输入Banner标题!', + 'banner_cover.required' => '请上传Banner封面!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/ConfigRequest.php b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..ba37ccb02d780dba704e8699bbd346a81f346b23 --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/ConfigRequest.php @@ -0,0 +1,42 @@ +instance = Config::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'config_title' => [ + 'required', + 'max:256', + ], + 'config_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',config_name' . $this->validate_id + ] + ]; + } + + public function messages() + { + return [ + 'config_title.required' => '请输入配置标题!', + 'config_name.required' => '请输入配置标识!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..bf1248a769e297e09bcfb60473dd75ec5f0d069f --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/FriendlinkRequest.php @@ -0,0 +1,50 @@ +instance = Friendlink::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'link_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',link_name' . $this->validate_id + ], + 'link_url' => [ + 'url', + ], + 'link_cover' => [ + 'required', + ], + 'link_sort' => [ + 'required', + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'link_name.required' => '请输入友链名称!', + 'link_cover.required' => '请上传友链图标!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..d339d534cac23cf2c6564aa5f65741833ea53f4d --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/ProtocolRequest.php @@ -0,0 +1,47 @@ +instance = Protocol::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'protocol_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',protocol_name' . $this->validate_id + ], + 'protocol_type' => [ + 'required', + ], + 'protocol_content' => [ + 'required', + ], + 'is_check' => [ + 'required', + ] + ]; + } + + public function messages() + { + return [ + 'protocol_name.required' => '请输入版本名称!', + 'protocol_type.required' => '请输入版本号!', + ]; + } +} diff --git a/app/Modules/Admin/Http/Requests/System/VersionRequest.php b/app/Modules/Admin/Http/Requests/System/VersionRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..33e84159ba4cb13f50ac7029608e5e7c92965fba --- /dev/null +++ b/app/Modules/Admin/Http/Requests/System/VersionRequest.php @@ -0,0 +1,55 @@ +instance = Version::getInstance(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules() + { + return [ + 'version_name' => [ + 'required', + 'max:256', + 'unique:' . $this->instance->getTable() . ',version_name' . $this->validate_id, + ], + 'version_number' => [ + 'required', + 'unique:' . $this->instance->getTable() . ',version_number' . $this->validate_id, + ], + 'publish_date' => [ + 'date_format:Y-m-d H:i:s' + ], + 'version_content' => [ + 'required', + ], + 'version_sort' => [ + 'min:0', + ], + ]; + } + + public function messages() + { + return [ + 'version_name.required' => '请输入版本名称!', + 'version_name.unique' => '版本名称已存在,请更换!', + 'version_number.required' => '请输入版本号!', + 'version_number.unique' => '版本号已存在,请更换!', + 'publish_date.date_format' => '请选择有效的发布时间!', + 'version_content.required' => '请输入版本内容!', + ]; + } +} diff --git a/app/Modules/Admin/Providers/.gitkeep b/app/Modules/Admin/Providers/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Providers/AdminServiceProvider.php b/app/Modules/Admin/Providers/AdminServiceProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..9c6c1031999a7994d38464d401d1d451650df7cc --- /dev/null +++ b/app/Modules/Admin/Providers/AdminServiceProvider.php @@ -0,0 +1,112 @@ +registerTranslations(); + $this->registerConfig(); + $this->registerViews(); + $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations')); + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + $this->app->register(RouteServiceProvider::class); + } + + /** + * Register config. + * + * @return void + */ + protected function registerConfig() + { + $this->publishes([ + module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'), + ], 'config'); + $this->mergeConfigFrom( + module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower + ); + } + + /** + * Register views. + * + * @return void + */ + public function registerViews() + { + $viewPath = resource_path('views/modules/' . $this->moduleNameLower); + + $sourcePath = module_path($this->moduleName, 'Resources/views'); + + $this->publishes([ + $sourcePath => $viewPath + ], ['views', $this->moduleNameLower . '-module-views']); + + $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower); + } + + /** + * Register translations. + * + * @return void + */ + public function registerTranslations() + { + $langPath = resource_path('lang/modules/' . $this->moduleNameLower); + + if (is_dir($langPath)) { + $this->loadTranslationsFrom($langPath, $this->moduleNameLower); + } else { + $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + private function getPublishableViewPaths(): array + { + $paths = []; + foreach (\Config::get('view.paths') as $path) { + if (is_dir($path . '/modules/' . $this->moduleNameLower)) { + $paths[] = $path . '/modules/' . $this->moduleNameLower; + } + } + return $paths; + } +} diff --git a/app/Modules/Admin/Providers/RouteServiceProvider.php b/app/Modules/Admin/Providers/RouteServiceProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..4d654862f345a3f2fdd8c45452e1ffa518f95b3b --- /dev/null +++ b/app/Modules/Admin/Providers/RouteServiceProvider.php @@ -0,0 +1,69 @@ +mapApiRoutes(); + + $this->mapWebRoutes(); + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->moduleNamespace) + ->group(module_path('Admin', '/Routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->moduleNamespace) + ->group(module_path('Admin', '/Routes/api.php')); + } +} diff --git a/app/Modules/Admin/Resources/assets/.gitkeep b/app/Modules/Admin/Resources/assets/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Resources/assets/js/app.js b/app/Modules/Admin/Resources/assets/js/app.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Resources/assets/sass/app.scss b/app/Modules/Admin/Resources/assets/sass/app.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Resources/lang/.gitkeep b/app/Modules/Admin/Resources/lang/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Resources/views/.gitkeep b/app/Modules/Admin/Resources/views/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/Modules/Admin/Resources/views/admin.blade.php b/app/Modules/Admin/Resources/views/admin.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..1ff0628a33ee6ce2bcfd9a333e22bffeaa73923d --- /dev/null +++ b/app/Modules/Admin/Resources/views/admin.blade.php @@ -0,0 +1,17 @@ + + + + + + + + Title + + + +
+ + + + + diff --git a/app/Modules/Admin/Resources/views/index.blade.php b/app/Modules/Admin/Resources/views/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..4ae9069cd0d33d0f87bdc59ffe18624e040e920c --- /dev/null +++ b/app/Modules/Admin/Resources/views/index.blade.php @@ -0,0 +1,9 @@ +@extends('admin::layouts.master') + +@section('content') +

Hello World

+ +

+ This view is loaded from module: {!! config('admin.name') !!} +

+@endsection diff --git a/app/Modules/Admin/Resources/views/layouts/master.blade.php b/app/Modules/Admin/Resources/views/layouts/master.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..b09a67f07881aefda4e58287f186933685b65537 --- /dev/null +++ b/app/Modules/Admin/Resources/views/layouts/master.blade.php @@ -0,0 +1,19 @@ + + + + + + + Module Admin + + {{-- Laravel Mix - CSS File --}} + {{-- --}} + + + + @yield('content') + + {{-- Laravel Mix - JS File --}} + {{-- --}} + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/App.vue b/app/Modules/Admin/Resources/vue-element-admin/App.vue new file mode 100644 index 0000000000000000000000000000000000000000..ec9032c1c638e918ec97e413aa081993a95048f4 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml new file mode 100644 index 0000000000000000000000000000000000000000..d6ebd4805981b8400db3e3291c74a743fef9a824 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/api.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..7e5bdf89fec4690a0218e8d99983b379c8218059 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..d50cf45fff2a9543c62b951c0f04316cf6df042a --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..821e530ddc3b630be065c610c6d0f2f9dfba9472 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b8a53ee641cc2abdd751d3ebf4564f11c2c9ddf --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/.idea/workspace.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1610455420023 + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js new file mode 100644 index 0000000000000000000000000000000000000000..05c2fd5946f643e006273ab9e80851c10f2e6f82 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_menus.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getMenusSelect() { + return request({ + url: '/admin_menus/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'admin_menus', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/admin_menus/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admin_menus/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admin_menus/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admin_menus/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js new file mode 100644 index 0000000000000000000000000000000000000000..150c68079d4193d4af9e84e953ee45de16c08cad --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admin_roles.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getRolesSelect() { + return request({ + url: '/admin_roles/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'admin_roles', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/admin_roles/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admin_roles/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admin_roles/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admin_roles/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js new file mode 100644 index 0000000000000000000000000000000000000000..2e3fea3b57442fcc4c596752398af06a4085092d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminloginlogs.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: 'adminloginlogs', + method: 'get', + params + }) +} + +export function setDel(data) { + return request({ + url: `/adminloginlogs/delete`, + method: 'delete', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js new file mode 100644 index 0000000000000000000000000000000000000000..c303f103dcea0b4a0575fabd1f430d1351738db5 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/adminlogs.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: 'adminlogs', + method: 'get', + params + }) +} + +export function setDel(data) { + return request({ + url: `/adminlogs/delete`, + method: 'delete', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/admins.js b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js new file mode 100644 index 0000000000000000000000000000000000000000..201bbe3451f0e5874739e9ad5abe3f08b2de6f47 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/admins.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +export function getAdminsSelect(params) { + return request({ + url: '/admins/getSelectLists', + method: 'get', + params + }); +} + +export function getList(params) { + return request({ + url: 'admins', + method: 'get', + params + }) +} + +// export function detail(data) { +// return request({ +// url: '/admins/detail', +// method: 'post', +// data +// }) +// } + +export function create(data) { + return request({ + url: '/admins/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/admins/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/admins/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/admins/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js new file mode 100644 index 0000000000000000000000000000000000000000..99b3a5d6ba213a7112f16b63587021537d195e30 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_categories.js @@ -0,0 +1,48 @@ +import request from '@/utils/request' + +export function getCategorySelect() { + return request({ + url: '/article_categories/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'article_categories', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/article_categories/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/article_categories/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/article_categories/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: `/article_categories/changeFiledStatus`, + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js new file mode 100644 index 0000000000000000000000000000000000000000..ebc012661ce2950d43e8bbc45000299467ee964d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/article_labels.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getArticleLabelSelect(params) { + return request({ + url: '/article_labels/getSelectLists', + method: 'get', + params + }); +} + +export function getList(params) { + return request({ + url: '/article_labels', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/article_labels/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/article_labels/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/article_labels/delete', + method: 'delete', + data + }); +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/articles.js b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js new file mode 100644 index 0000000000000000000000000000000000000000..74cc0609b1164390c044ec44598088f84f03352d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/articles.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +export function getCategoriesSelect() { + return request({ + url: '/article_categories/getSelectLists', + method: 'get' + }) +} + +export function getList(params) { + return request({ + url: 'articles', + method: 'get', + params + }) +} + +export function detail(id) { + return request({ + url: '/articles/detail', + method: 'get', + params: { article_id:id } + }) +} + +export function create(data) { + return request({ + url: '/articles/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: `/articles/update`, + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: `/articles/delete`, + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/articles/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/banners.js b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js new file mode 100644 index 0000000000000000000000000000000000000000..188f87d583b16875db4d23b0a4764bf3e22c3495 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/banners.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/banners', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/banners/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/banners/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/banners/delete', + method: 'delete', + data + }); +} + +export function changeFiledStatus(data) { + return request({ + url: '/banners/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/common.js b/app/Modules/Admin/Resources/vue-element-admin/api/common.js new file mode 100644 index 0000000000000000000000000000000000000000..7f287edce0f7eff0f3a14c7a4a4486b256e459d9 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/common.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +export function getUploadUrl() { + return process.env.VUE_APP_BASE_API + '/upload_file' +} + +export function getBatchUploadUrl() { + return process.env.VUE_APP_BASE_API + '/upload_files' +} + +export function getMonthLists() { + return request({ + url: '/get_month_lists', + method: 'get' + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/configs.js b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js new file mode 100644 index 0000000000000000000000000000000000000000..4a9b2fa72b387da34999ff24cbcffc0fe0221629 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/configs.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +export function getList(query) { + return request({ + url: '/configs', + method: 'get', + params: query + }) +} + +// 获取配置分组与配置类型 +export function getConfigGroupType() { + return request({ + url: '/configs/getConfigGroupType', + method: 'get', + }) +} + +export function detail(id) { + return request({ + url: '/configs/detail', + method: 'get', + params: { config_id:id } + }) +} + +export function create(data) { + return request({ + url: '/configs/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: '/configs/update', + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: '/configs/delete', + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/configs/changeFiledStatus', + method: 'put', + data + }) +} + +// 同步配置文件 +export function pushRefreshConfig() { + return request({ + url: '/configs/pushRefreshConfig', + method: 'put', + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js new file mode 100644 index 0000000000000000000000000000000000000000..7635f0979f31f71060e0b9c3ec9cba04de9cf014 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/friendlinks.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/friendlinks', + method: 'get', + params + }) +} + +export function create(data) { + return request({ + url: '/friendlinks/create', + method: 'post', + data + }) +} + +export function update(data) { + return request({ + url: '/friendlinks/update', + method: 'put', + data + }) +} + +export function setDel(data) { + return request({ + url: '/friendlinks/delete', + method: 'delete', + data + }) +} + +export function changeFiledStatus(data) { + return request({ + url: '/friendlinks/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js new file mode 100644 index 0000000000000000000000000000000000000000..44a4d46ab5d6a13a9d6dadca224fa21689021a77 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/indexs.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +// 首页 - 基础统计数据 +export function statistics() { + return request({ + url: '/indexs', + method: 'get' + }) +} + +// 首页 - 请求日志统计表数据 +export function logsStatistics() { + return request({ + url: '/logsStatistics', + method: 'get' + }) +} + +// 编辑登录管理员信息 +export function updateAdmin(data) { + return request({ + url: '/updateAdmin', + method: 'put', + data, + }) +} + +// 版本历史记录 +export function versionLogs() { + return request({ + url: '/versionLogs', + method: 'get', + }) +} + +// 服务器状态 +export function getServerStatus() { + return request({ + url: '/getServerStatus', + method: 'get', + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/login.js b/app/Modules/Admin/Resources/vue-element-admin/api/login.js new file mode 100644 index 0000000000000000000000000000000000000000..13124efabd22c77bc0907f7ff6a5688a3bf54315 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/login.js @@ -0,0 +1,30 @@ +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/auth/login', + method: 'post', + data + }) +} + +export function getInfo() { + return request({ + url: '/auth/me', + method: 'post' + }) +} + +export function getMenus() { + return request({ + url: '/auth/getRabcList', + method: 'post' + }) +} + +export function logout() { + return request({ + url: '/auth/logout', + method: 'post' + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/api/versions.js b/app/Modules/Admin/Resources/vue-element-admin/api/versions.js new file mode 100644 index 0000000000000000000000000000000000000000..0abb5508998118cee6aac38370b3e6f06f1990d5 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/api/versions.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/versions', + method: 'get', + params + }); +} + +export function create(data) { + return request({ + url: '/versions/create', + method: 'post', + data + }); +} + +export function update(data) { + return request({ + url: '/versions/update', + method: 'put', + data + }); +} + +export function setDel(data) { + return request({ + url: '/versions/delete', + method: 'delete', + data + }); +} + +export function changeFiledStatus(data) { + return request({ + url: '/versions/changeFiledStatus', + method: 'put', + data + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif b/app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 Binary files /dev/null and b/app/Modules/Admin/Resources/vue-element-admin/assets/401_images/401.gif differ diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 Binary files /dev/null and b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404.png differ diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 Binary files /dev/null and b/app/Modules/Admin/Resources/vue-element-admin/assets/404_images/404_cloud.png differ diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..570a3e11b2f002c146d7fdc20528951442f6fd93 Binary files /dev/null and b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.ttf differ diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.woff b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..c2bcc00509acd81fe152f08f39eef93984a0453a Binary files /dev/null and b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/fonts/element-icons.woff differ diff --git a/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/index.css b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/index.css new file mode 100644 index 0000000000000000000000000000000000000000..dcdb9c1cdc3cc7df1de1d352c9fa1df9845f7421 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/assets/custom-theme/index.css @@ -0,0 +1,22420 @@ +@charset "UTF-8"; +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +@font-face { + font-family: element-icons; + src: url(fonts/element-icons.woff?t=1508751886602) format("woff"), url(fonts/element-icons.ttf?t=1508751886602) format("truetype"); + font-weight: 400; + font-style: normal +} + +.custom-theme [class*=" el-icon-"], .custom-theme [class^=el-icon-] { + font-family: element-icons !important; + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: baseline; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.custom-theme .el-icon-upload:before { + content: "\e60d" +} + +.custom-theme .el-icon-error:before { + content: "\e62c" +} + +.custom-theme .el-icon-success:before { + content: "\e62d" +} + +.custom-theme .el-icon-warning:before { + content: "\e62e" +} + +.custom-theme .el-icon-sort-down:before { + content: "\e630" +} + +.custom-theme .el-icon-sort-up:before { + content: "\e631" +} + +.custom-theme .el-icon-arrow-left:before { + content: "\e600" +} + +.custom-theme .el-icon-circle-plus:before { + content: "\e601" +} + +.custom-theme .el-icon-circle-plus-outline:before { + content: "\e602" +} + +.custom-theme .el-icon-arrow-down:before { + content: "\e603" +} + +.custom-theme .el-icon-arrow-right:before { + content: "\e604" +} + +.custom-theme .el-icon-arrow-up:before { + content: "\e605" +} + +.custom-theme .el-icon-back:before { + content: "\e606" +} + +.custom-theme .el-icon-circle-close:before { + content: "\e607" +} + +.custom-theme .el-icon-date:before { + content: "\e608" +} + +.custom-theme .el-icon-circle-close-outline:before { + content: "\e609" +} + +.custom-theme .el-icon-caret-left:before { + content: "\e60a" +} + +.custom-theme .el-icon-caret-bottom:before { + content: "\e60b" +} + +.custom-theme .el-icon-caret-top:before { + content: "\e60c" +} + +.custom-theme .el-icon-caret-right:before { + content: "\e60e" +} + +.custom-theme .el-icon-close:before { + content: "\e60f" +} + +.custom-theme .el-icon-d-arrow-left:before { + content: "\e610" +} + +.custom-theme .el-icon-check:before { + content: "\e611" +} + +.custom-theme .el-icon-delete:before { + content: "\e612" +} + +.custom-theme .el-icon-d-arrow-right:before { + content: "\e613" +} + +.custom-theme .el-icon-document:before { + content: "\e614" +} + +.custom-theme .el-icon-d-caret:before { + content: "\e615" +} + +.custom-theme .el-icon-edit-outline:before { + content: "\e616" +} + +.custom-theme .el-icon-download:before { + content: "\e617" +} + +.custom-theme .el-icon-goods:before { + content: "\e618" +} + +.custom-theme .el-icon-search:before { + content: "\e619" +} + +.custom-theme .el-icon-info:before { + content: "\e61a" +} + +.custom-theme .el-icon-message:before { + content: "\e61b" +} + +.custom-theme .el-icon-edit:before { + content: "\e61c" +} + +.custom-theme .el-icon-location:before { + content: "\e61d" +} + +.custom-theme .el-icon-loading:before { + content: "\e61e" +} + +.custom-theme .el-icon-location-outline:before { + content: "\e61f" +} + +.custom-theme .el-icon-menu:before { + content: "\e620" +} + +.custom-theme .el-icon-minus:before { + content: "\e621" +} + +.custom-theme .el-icon-bell:before { + content: "\e622" +} + +.custom-theme .el-icon-mobile-phone:before { + content: "\e624" +} + +.custom-theme .el-icon-news:before { + content: "\e625" +} + +.custom-theme .el-icon-more:before { + content: "\e646" +} + +.custom-theme .el-icon-more-outline:before { + content: "\e626" +} + +.custom-theme .el-icon-phone:before { + content: "\e627" +} + +.custom-theme .el-icon-phone-outline:before { + content: "\e628" +} + +.custom-theme .el-icon-picture:before { + content: "\e629" +} + +.custom-theme .el-icon-picture-outline:before { + content: "\e62a" +} + +.custom-theme .el-icon-plus:before { + content: "\e62b" +} + +.custom-theme .el-icon-printer:before { + content: "\e62f" +} + +.custom-theme .el-icon-rank:before { + content: "\e632" +} + +.custom-theme .el-icon-refresh:before { + content: "\e633" +} + +.custom-theme .el-icon-question:before { + content: "\e634" +} + +.custom-theme .el-icon-remove:before { + content: "\e635" +} + +.custom-theme .el-icon-share:before { + content: "\e636" +} + +.custom-theme .el-icon-star-on:before { + content: "\e637" +} + +.custom-theme .el-icon-setting:before { + content: "\e638" +} + +.custom-theme .el-icon-circle-check:before { + content: "\e639" +} + +.custom-theme .el-icon-service:before { + content: "\e63a" +} + +.custom-theme .el-icon-sold-out:before { + content: "\e63b" +} + +.custom-theme .el-icon-remove-outline:before { + content: "\e63c" +} + +.custom-theme .el-icon-star-off:before { + content: "\e63d" +} + +.custom-theme .el-icon-circle-check-outline:before { + content: "\e63e" +} + +.custom-theme .el-icon-tickets:before { + content: "\e63f" +} + +.custom-theme .el-icon-sort:before { + content: "\e640" +} + +.custom-theme .el-icon-zoom-in:before { + content: "\e641" +} + +.custom-theme .el-icon-time:before { + content: "\e642" +} + +.custom-theme .el-icon-view:before { + content: "\e643" +} + +.custom-theme .el-icon-upload2:before { + content: "\e644" +} + +.custom-theme .el-icon-zoom-out:before { + content: "\e645" +} + +.custom-theme .el-icon-loading { + -webkit-animation: rotating 2s linear infinite; + animation: rotating 2s linear infinite +} + +.custom-theme .el-icon--right { + margin-left: 5px +} + +.custom-theme .el-icon--left { + margin-right: 5px +} + +@-webkit-keyframes rotating { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg) + } +} + +@keyframes rotating { + 0% { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) + } + 100% { + -webkit-transform: rotateZ(360deg); + transform: rotateZ(360deg) + } +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-select-dropdown { + position: absolute; + z-index: 1001; + border: solid 1px #dfe4ed; + border-radius: 4px; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 5px 0 +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #262729; + background-color: #fff +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 20px; + font-family: element-icons; + content: "\E611"; + font-size: 12px; + font-weight: 700; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0 +} + +.custom-theme .el-select-dropdown .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-select-dropdown.is-arrow-fixed .popper__arrow { + -webkit-transform: translateX(-200%); + transform: translateX(-200%) +} + +.custom-theme .el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px +} + +.custom-theme .el-select-dropdown__wrap { + max-height: 274px +} + +.custom-theme .el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 0 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 34px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-select-dropdown__item.hover, .custom-theme .el-select-dropdown__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown__item.selected { + color: #262729; + font-weight: 700 +} + +.custom-theme .el-select-dropdown__item span { + line-height: 34px !important +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap { + position: relative; + list-style: none; + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap:not(:last-of-type) { + padding-bottom: 24px +} + +.custom-theme .el-select-group__wrap:not(:last-of-type)::after { + content: ''; + position: absolute; + display: block; + left: 20px; + right: 20px; + bottom: 12px; + height: 1px; + background: #dfe4ed +} + +.custom-theme .el-select-group__title { + padding-left: 20px; + font-size: 12px; + color: #0a76a4; + line-height: 30px +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-select { + display: inline-block; + position: relative +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: #b4bccc +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; + padding-right: 35px +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #262729 +} + +.custom-theme .el-select .el-input .el-select__caret { + color: #b4bccc; + font-size: 14px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + line-height: 16px; + cursor: pointer +} + +.custom-theme .el-select .el-input .el-select__caret.is-reverse { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close { + font-size: 14px; + text-align: center; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + border-radius: 100%; + color: #b4bccc; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover { + color: #878d99 +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: #dfe4ed +} + +.custom-theme .el-select > .el-input { + display: block +} + +.custom-theme .el-select__input { + border: none; + outline: 0; + padding: 0; + margin-left: 15px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent +} + +.custom-theme .el-select__input.is-mini { + height: 14px +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: #b4bccc; + line-height: 18px; + font-size: 14px +} + +.custom-theme .el-select__close:hover { + color: #878d99 +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px +} + +.custom-theme .el-select .el-tag { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-color: transparent; + margin: 3px 0 3px 6px; + background-color: #f0f2f5 +} + +.custom-theme .el-select .el-tag__close.el-icon-close { + background-color: #b4bccc; + right: -7px; + color: #fff +} + +.custom-theme .el-select .el-tag__close.el-icon-close:hover { + background-color: #878d99 +} + +.custom-theme .el-select .el-tag__close.el-icon-close::before { + display: block; + -webkit-transform: translate(0, .5px); + transform: translate(0, .5px) +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #262729 +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 14px +} + +.custom-theme .el-pagination { + white-space: nowrap; + padding: 2px 5px; + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-pagination::after, .custom-theme .el-pagination::before { + display: table; + content: "" +} + +.custom-theme .el-pagination::after { + clear: both +} + +.custom-theme .el-pagination button, .custom-theme .el-pagination span:not([class*=suffix]) { + display: inline-block; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + vertical-align: top; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-pagination .el-input__inner { + text-align: center +} + +.custom-theme .el-pagination .el-input__suffix { + right: 0; + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-pagination .el-select .el-input { + width: 100px; + margin: 0 5px +} + +.custom-theme .el-pagination .el-select .el-input .el-input__inner { + padding-right: 25px; + border-radius: 3px; + height: 28px +} + +.custom-theme .el-pagination button { + border: none; + padding: 0 6px; + background: 0 0 +} + +.custom-theme .el-pagination button:focus { + outline: 0 +} + +.custom-theme .el-pagination button:hover { + color: #262729 +} + +.custom-theme .el-pagination button.disabled { + color: #b4bccc; + background-color: #fff; + cursor: not-allowed +} + +.custom-theme .el-pagination .btn-next, .custom-theme .el-pagination .btn-prev { + background: center center no-repeat; + background-size: 16px; + background-color: #fff; + cursor: pointer; + margin: 0; + color: #2d2f33 +} + +.custom-theme .el-pagination .btn-next .el-icon, .custom-theme .el-pagination .btn-prev .el-icon { + display: block; + font-size: 12px +} + +.custom-theme .el-pagination .btn-prev { + padding-right: 12px +} + +.custom-theme .el-pagination .btn-next { + padding-left: 12px +} + +.custom-theme .el-pagination--small .btn-next, .custom-theme .el-pagination--small .btn-prev, .custom-theme .el-pagination--small .el-pager li, .custom-theme .el-pagination--small .el-pager li:last-child { + border-color: transparent; + font-size: 12px; + line-height: 22px; + height: 22px; + min-width: 22px +} + +.custom-theme .el-pagination--small .arrow.disabled { + visibility: hidden +} + +.custom-theme .el-pagination__sizes { + margin: 0 10px 0 0; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner { + font-size: 13px; + padding-left: 8px +} + +.custom-theme .el-pagination__sizes .el-input .el-input__inner:hover { + border-color: #262729 +} + +.custom-theme .el-pagination__total { + margin-right: 10px; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__jump { + margin-left: 24px; + font-weight: 400; + color: #5a5e66 +} + +.custom-theme .el-pagination__jump .el-input__inner { + padding: 0 3px +} + +.custom-theme .el-pagination__rightwrapper { + float: right +} + +.custom-theme .el-pagination__editor { + line-height: 18px; + padding: 0 2px; + height: 28px; + text-align: center; + margin: 0 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 3px; + -moz-appearance: textfield +} + +.custom-theme .el-pagination__editor.el-input { + width: 50px +} + +.custom-theme .el-pagination__editor.el-input .el-input__inner { + height: 28px +} + +.custom-theme .el-pagination__editor .el-input__inner::-webkit-inner-spin-button, .custom-theme .el-pagination__editor .el-input__inner::-webkit-outer-spin-button { + -webkit-appearance: none; + margin: 0 +} + +.custom-theme .el-pager { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + list-style: none; + display: inline-block; + vertical-align: top; + font-size: 0; + padding: 0; + margin: 0 +} + +.custom-theme .el-pager .el-icon-more::before { + vertical-align: -4px +} + +.custom-theme .el-pager li { + padding: 0 4px; + background: #fff; + vertical-align: top; + display: inline-block; + font-size: 13px; + min-width: 35.5px; + height: 28px; + line-height: 28px; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + margin: 0 +} + +.custom-theme .el-pager li.btn-quicknext, .custom-theme .el-pager li.btn-quickprev { + line-height: 28px; + color: #2d2f33 +} + +.custom-theme .el-pager li.btn-quickprev:hover { + cursor: pointer +} + +.custom-theme .el-pager li.btn-quicknext:hover { + cursor: pointer +} + +.custom-theme .el-pager li.active + li { + border-left: 0 +} + +.custom-theme .el-pager li:hover { + color: #262729 +} + +.custom-theme .el-pager li.active { + color: #262729; + cursor: default +} + +.custom-theme .v-modal-enter { + -webkit-animation: v-modal-in .2s ease; + animation: v-modal-in .2s ease +} + +.custom-theme .v-modal-leave { + -webkit-animation: v-modal-out .2s ease forwards; + animation: v-modal-out .2s ease forwards +} + +@-webkit-keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@-webkit-keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +@keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .5; + background: #000 +} + +.custom-theme .el-dialog { + position: relative; + margin: 0 auto 50px; + background: #fff; + border-radius: 2px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + box-shadow: 0 1px 3px rgba(0, 0, 0, .3); + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 50% +} + +.custom-theme .el-dialog.is-fullscreen { + width: 100%; + margin-top: 0; + margin-bottom: 0; + height: 100%; + overflow: auto +} + +.custom-theme .el-dialog__wrapper { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; + margin: 0 +} + +.custom-theme .el-dialog__header { + padding: 15px; + padding-bottom: 10px +} + +.custom-theme .el-dialog__headerbtn { + position: absolute; + top: 15px; + right: 15px; + padding: 0; + background: 0 0; + border: none; + outline: 0; + cursor: pointer; + font-size: 16px +} + +.custom-theme .el-dialog__headerbtn .el-dialog__close { + color: #0a76a4 +} + +.custom-theme .el-dialog__headerbtn:focus .el-dialog__close, .custom-theme .el-dialog__headerbtn:hover .el-dialog__close { + color: #262729 +} + +.custom-theme .el-dialog__title { + line-height: 24px; + font-size: 18px; + color: #2d2f33 +} + +.custom-theme .el-dialog__body { + padding: 30px 20px; + color: #5a5e66; + line-height: 24px; + font-size: 14px +} + +.custom-theme .el-dialog__footer { + padding: 15px; + padding-top: 10px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-dialog--center { + text-align: center +} + +.custom-theme .el-dialog--center .el-dialog__header { + padding-top: 30px +} + +.custom-theme .el-dialog--center .el-dialog__body { + text-align: initial; + padding: 25px 27px 30px +} + +.custom-theme .el-dialog--center .el-dialog__footer { + text-align: inherit; + padding-bottom: 30px +} + +.custom-theme .dialog-fade-enter-active { + -webkit-animation: dialog-fade-in .3s; + animation: dialog-fade-in .3s +} + +.custom-theme .dialog-fade-leave-active { + -webkit-animation: dialog-fade-out .3s; + animation: dialog-fade-out .3s +} + +@-webkit-keyframes dialog-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes dialog-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@-webkit-keyframes dialog-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +@keyframes dialog-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-autocomplete { + position: relative; + display: inline-block +} + +.custom-theme .el-autocomplete-suggestion { + margin: 5px 0; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 4px +} + +.custom-theme .el-autocomplete-suggestion.el-popper .popper__arrow { + left: 24px !important +} + +.custom-theme .el-autocomplete-suggestion__wrap { + max-height: 280px; + padding: 10px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: auto; + background-color: #fff; + border: 1px solid #dfe4ed; + border-radius: 4px +} + +.custom-theme .el-autocomplete-suggestion__list { + margin: 0; + padding: 0 +} + +.custom-theme .el-autocomplete-suggestion li { + padding: 0 20px; + margin: 0; + line-height: 34px; + cursor: pointer; + color: #5a5e66; + font-size: 14px; + list-style: none; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.custom-theme .el-autocomplete-suggestion li:hover { + background-color: #f5f7fa +} + +.custom-theme .el-autocomplete-suggestion li.highlighted { + background-color: #f5f7fa +} + +.custom-theme .el-autocomplete-suggestion li.divider { + margin-top: 6px; + border-top: 1px solid #000 +} + +.custom-theme .el-autocomplete-suggestion li.divider:last-child { + margin-bottom: -6px +} + +.custom-theme .el-autocomplete-suggestion.is-loading li { + text-align: center; + height: 100px; + line-height: 100px; + font-size: 20px; + color: #999 +} + +.custom-theme .el-autocomplete-suggestion.is-loading li::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-autocomplete-suggestion.is-loading li:hover { + background-color: #fff +} + +.custom-theme .el-autocomplete-suggestion.is-loading .el-icon-loading { + vertical-align: middle +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-dropdown { + display: inline-block; + position: relative; + color: #5a5e66; + font-size: 14px +} + +.custom-theme .el-dropdown .el-button-group { + display: block +} + +.custom-theme .el-dropdown .el-button-group .el-button { + float: none +} + +.custom-theme .el-dropdown .el-dropdown__caret-button { + padding-left: 5px; + padding-right: 5px; + position: relative; + border-left: none +} + +.custom-theme .el-dropdown .el-dropdown__caret-button::before { + content: ''; + position: absolute; + display: block; + width: 1px; + top: 5px; + bottom: 5px; + left: 0; + background: rgba(255, 255, 255, .5) +} + +.custom-theme .el-dropdown .el-dropdown__caret-button:hover::before { + top: 0; + bottom: 0 +} + +.custom-theme .el-dropdown .el-dropdown__caret-button .el-dropdown__icon { + padding-left: 0 +} + +.custom-theme .el-dropdown__icon { + font-size: 12px; + margin: 0 3px +} + +.custom-theme .el-dropdown-menu { + position: absolute; + top: 0; + left: 0; + z-index: 10; + padding: 10px 0; + margin: 5px 0; + background-color: #fff; + border: 1px solid #e6ebf5; + border-radius: 4px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-dropdown-menu__item { + list-style: none; + line-height: 36px; + padding: 0 20px; + margin: 0; + font-size: 14px; + color: #5a5e66; + cursor: pointer +} + +.custom-theme .el-dropdown-menu__item:not(.is-disabled):hover { + background-color: #e9e9ea; + color: #515254 +} + +.custom-theme .el-dropdown-menu__item--divided { + position: relative; + margin-top: 6px; + border-top: 1px solid #e6ebf5 +} + +.custom-theme .el-dropdown-menu__item--divided:before { + content: ''; + height: 6px; + display: block; + margin: 0 -20px; + background-color: #fff +} + +.custom-theme .el-dropdown-menu__item.is-disabled { + cursor: default; + color: #bbb; + pointer-events: none +} + +.custom-theme .el-dropdown-menu--medium { + padding: 6px 0 +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item { + line-height: 30px; + padding: 0 17px; + font-size: 14px +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 6px +} + +.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 6px; + margin: 0 -17px +} + +.custom-theme .el-dropdown-menu--small { + padding: 6px 0 +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item { + line-height: 27px; + padding: 0 15px; + font-size: 13px +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 4px +} + +.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 4px; + margin: 0 -15px +} + +.custom-theme .el-dropdown-menu--mini { + padding: 3px 0 +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item { + line-height: 24px; + padding: 0 10px; + font-size: 12px +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided { + margin-top: 3px +} + +.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before { + height: 3px; + margin: 0 -10px +} + +.custom-theme .el-menu { + border-right: solid 1px #e6e6e6; + list-style: none; + position: relative; + margin: 0; + padding-left: 0; + background-color: #fff +} + +.custom-theme .el-menu::after, .custom-theme .el-menu::before { + display: table; + content: "" +} + +.custom-theme .el-menu::after { + clear: both +} + +.custom-theme .el-menu li { + list-style: none +} + +.custom-theme .el-menu--horizontal { + border-right: none; + border-bottom: solid 1px #e6e6e6 +} + +.custom-theme .el-menu--horizontal .el-menu-item { + float: left; + height: 60px; + line-height: 60px; + margin: 0; + cursor: pointer; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-bottom: 2px solid transparent; + color: #878d99 +} + +.custom-theme .el-menu--horizontal .el-menu-item a, .custom-theme .el-menu--horizontal .el-menu-item a:hover { + color: inherit +} + +.custom-theme .el-menu--horizontal .el-menu-item:focus, .custom-theme .el-menu--horizontal .el-menu-item:hover { + background-color: #fff +} + +.custom-theme .el-menu--horizontal .el-submenu { + float: left; + position: relative +} + +.custom-theme .el-menu--horizontal .el-submenu:focus { + outline: 0 +} + +.custom-theme .el-menu--horizontal .el-submenu:focus > .el-submenu__title { + color: #2d2f33 +} + +.custom-theme .el-menu--horizontal .el-submenu > .el-menu { + position: absolute; + top: 65px; + left: 0; + border: none; + padding: 5px 0; + background-color: #fff; + z-index: 100; + min-width: 100%; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 2px +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title { + height: 60px; + line-height: 60px; + border-bottom: 2px solid transparent; + color: #878d99 +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title:hover { + background-color: #fff +} + +.custom-theme .el-menu--horizontal .el-submenu .el-menu-item { + background-color: #fff; + float: none; + height: 36px; + line-height: 36px; + padding: 0 10px +} + +.custom-theme .el-menu--horizontal .el-submenu .el-submenu__icon-arrow { + position: static; + vertical-align: middle; + margin-left: 8px; + margin-top: -3px +} + +.custom-theme .el-menu--horizontal .el-menu-item:focus, .custom-theme .el-menu--horizontal .el-menu-item:hover, .custom-theme .el-menu--horizontal .el-submenu__title:hover { + outline: 0; + color: #2d2f33 +} + +.custom-theme .el-menu--horizontal > .el-menu-item.is-active, .custom-theme .el-menu--horizontal > .el-submenu.is-active .el-submenu__title { + border-bottom: 2px solid #262729; + color: #2d2f33 +} + +.custom-theme .el-menu--collapse { + width: 64px +} + +.custom-theme .el-menu--collapse > .el-menu-item [class^=el-icon-], .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title [class^=el-icon-] { + margin: 0; + vertical-align: middle; + width: 24px; + text-align: center +} + +.custom-theme .el-menu--collapse > .el-menu-item .el-submenu__icon-arrow, .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title .el-submenu__icon-arrow { + display: none +} + +.custom-theme .el-menu--collapse > .el-menu-item span, .custom-theme .el-menu--collapse > .el-submenu > .el-submenu__title span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block +} + +.custom-theme .el-menu--collapse > .el-menu-item.is-active i { + color: inherit +} + +.custom-theme .el-menu--collapse .el-menu .el-submenu { + min-width: 200px +} + +.custom-theme .el-menu--collapse .el-submenu { + position: relative +} + +.custom-theme .el-menu--collapse .el-submenu .el-menu { + position: absolute; + margin-left: 5px; + top: 0; + left: 100%; + z-index: 10; + border: 1px solid #dfe4ed; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-menu--collapse .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: none; + transform: none +} + +.custom-theme .el-menu-item { + height: 56px; + line-height: 56px; + font-size: 14px; + color: #2d2f33; + padding: 0 20px; + cursor: pointer; + position: relative; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap +} + +.custom-theme .el-menu-item [class^=el-icon-] { + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px +} + +.custom-theme .el-menu-item * { + vertical-align: middle +} + +.custom-theme .el-menu-item:first-child { + margin-left: 0 +} + +.custom-theme .el-menu-item:last-child { + margin-right: 0 +} + +.custom-theme .el-menu-item:focus, .custom-theme .el-menu-item:hover { + outline: 0; + background-color: #e9e9ea +} + +.custom-theme .el-menu-item i { + color: #878d99 +} + +.custom-theme .el-menu-item.is-active { + color: #262729 +} + +.custom-theme .el-menu-item.is-active i { + color: inherit +} + +.custom-theme .el-submenu__title { + position: relative; + height: 56px; + line-height: 56px; + font-size: 14px; + color: #2d2f33; + padding: 0 20px; + cursor: pointer; + position: relative; + -webkit-transition: border-color .3s, background-color .3s, color .3s; + transition: border-color .3s, background-color .3s, color .3s; + -webkit-box-sizing: border-box; + box-sizing: border-box; + white-space: nowrap +} + +.custom-theme .el-submenu__title * { + vertical-align: middle +} + +.custom-theme .el-submenu__title i { + color: #878d99 +} + +.custom-theme .el-submenu__title:hover { + background-color: #e9e9ea +} + +.custom-theme .el-submenu .el-menu { + border: none +} + +.custom-theme .el-submenu .el-menu-item { + height: 50px; + line-height: 50px; + padding: 0 45px; + min-width: 200px +} + +.custom-theme .el-submenu__icon-arrow { + position: absolute; + top: 50%; + right: 20px; + margin-top: -7px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 12px +} + +.custom-theme .el-submenu.is-active .el-submenu__title { + border-bottom-color: #262729 +} + +.custom-theme .el-submenu.is-opened > .el-submenu__title .el-submenu__icon-arrow { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.custom-theme .el-submenu [class^=el-icon-] { + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; + font-size: 18px +} + +.custom-theme .el-menu-item-group > ul { + padding: 0 +} + +.custom-theme .el-menu-item-group__title { + padding: 7px 0 7px 20px; + line-height: normal; + font-size: 12px; + color: #878d99 +} + +.custom-theme .horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow { + -webkit-transition: .2s; + transition: .2s; + opacity: 0 +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input-number { + position: relative; + display: inline-block; + width: 180px; + line-height: 38px +} + +.custom-theme .el-input-number .el-input { + display: block +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + padding-left: 50px; + padding-right: 50px; + text-align: center +} + +.custom-theme .el-input-number__decrease, .custom-theme .el-input-number__increase { + position: absolute; + z-index: 1; + top: 1px; + width: 40px; + height: auto; + text-align: center; + background: #f5f7fa; + color: #5a5e66; + cursor: pointer; + font-size: 13px +} + +.custom-theme .el-input-number__decrease:hover, .custom-theme .el-input-number__increase:hover { + color: #262729 +} + +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #262729 +} + +.custom-theme .el-input-number__decrease.is-disabled, .custom-theme .el-input-number__increase.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input-number__increase { + right: 1px; + border-radius: 0 4px 4px 0; + border-left: 1px solid #d8dce5 +} + +.custom-theme .el-input-number__decrease { + left: 1px; + border-radius: 4px 0 0 4px; + border-right: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease, .custom-theme .el-input-number.is-disabled .el-input-number__increase { + border-color: #dfe4ed; + color: #dfe4ed +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover, .custom-theme .el-input-number.is-disabled .el-input-number__increase:hover { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-input-number--medium { + width: 200px; + line-height: 34px +} + +.custom-theme .el-input-number--medium .el-input-number__decrease, .custom-theme .el-input-number--medium .el-input-number__increase { + width: 36px; + font-size: 14px +} + +.custom-theme .el-input-number--medium .el-input__inner { + padding-left: 43px; + padding-right: 43px +} + +.custom-theme .el-input-number--small { + width: 130px; + line-height: 30px +} + +.custom-theme .el-input-number--small .el-input-number__decrease, .custom-theme .el-input-number--small .el-input-number__increase { + width: 32px; + font-size: 13px +} + +.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.9); + transform: scale(.9) +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-left: 39px; + padding-right: 39px +} + +.custom-theme .el-input-number--mini { + width: 130px; + line-height: 26px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease, .custom-theme .el-input-number--mini .el-input-number__increase { + width: 28px; + font-size: 12px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number--mini .el-input__inner { + padding-left: 35px; + padding-right: 35px +} + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-left: 15px; + padding-right: 15px +} + +.custom-theme .el-input-number.is-controls-right .el-input__inner { + padding-left: 15px; + padding-right: 50px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease, .custom-theme .el-input-number.is-controls-right .el-input-number__increase { + height: auto; + line-height: 19px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__increase { + border-radius: 0 4px 0 0; + border-bottom: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease { + right: 1px; + bottom: 1px; + top: auto; + left: auto; + border-right: none; + border-left: 1px solid #d8dce5; + border-radius: 0 0 4px 0 +} + +.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase] { + line-height: 17px +} + +.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase] { + line-height: 15px +} + +.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase] { + line-height: 13px +} + +.custom-theme .el-radio { + color: #5a5e66; + font-weight: 500; + line-height: 1; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + outline: 0; + font-size: 14px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none +} + +.custom-theme .el-radio.is-bordered { + padding: 10px 20px 10px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-radio.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-radio.is-bordered.is-disabled { + cursor: not-allowed; + border-color: #e6ebf5 +} + +.custom-theme .el-radio.is-bordered + .el-radio.is-bordered { + margin-left: 10px +} + +.custom-theme .el-radio--medium.is-bordered { + padding: 8px 20px 8px 10px; + border-radius: 4px +} + +.custom-theme .el-radio--medium.is-bordered .el-radio__label { + font-size: 14px +} + +.custom-theme .el-radio--medium.is-bordered .el-radio__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-radio--small.is-bordered { + padding: 6px 15px 6px 10px; + border-radius: 3px +} + +.custom-theme .el-radio--small.is-bordered .el-radio__label { + font-size: 12px +} + +.custom-theme .el-radio--small.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-radio--mini.is-bordered { + padding: 4px 15px 4px 10px; + border-radius: 3px +} + +.custom-theme .el-radio--mini.is-bordered .el-radio__label { + font-size: 12px +} + +.custom-theme .el-radio--mini.is-bordered .el-radio__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-radio + .el-radio { + margin-left: 30px +} + +.custom-theme .el-radio__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner::after { + cursor: not-allowed; + background-color: #f5f7fa +} + +.custom-theme .el-radio__input.is-disabled .el-radio__inner + .el-radio__label { + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner { + background-color: #f5f7fa; + border-color: #dfe4ed +} + +.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner::after { + background-color: #b4bccc +} + +.custom-theme .el-radio__input.is-disabled + span.el-radio__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner { + border-color: #262729; + background: #262729 +} + +.custom-theme .el-radio__input.is-checked .el-radio__inner::after { + -webkit-transform: translate(-50%, -50%) scale(1); + transform: translate(-50%, -50%) scale(1) +} + +.custom-theme .el-radio__input.is-checked + .el-radio__label { + color: #262729 +} + +.custom-theme .el-radio__input.is-focus .el-radio__inner { + border-color: #262729 +} + +.custom-theme .el-radio__inner { + border: 1px solid #d8dce5; + border-radius: 100%; + width: 14px; + height: 14px; + background-color: #fff; + position: relative; + cursor: pointer; + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-radio__inner:hover { + border-color: #262729 +} + +.custom-theme .el-radio__inner::after { + width: 4px; + height: 4px; + border-radius: 100%; + background-color: #fff; + content: ""; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%) scale(0); + transform: translate(-50%, -50%) scale(0); + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: transform .15s cubic-bezier(.71, -.46, .88, .6); + transition: transform .15s cubic-bezier(.71, -.46, .88, .6), -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) +} + +.custom-theme .el-radio__original { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: 0 +} + +.custom-theme .el-radio:focus:not(.is-focus):not(:active) .el-radio__inner { + -webkit-box-shadow: 0 0 2px 2px #262729; + box-shadow: 0 0 2px 2px #262729 +} + +.custom-theme .el-radio__label { + font-size: 14px; + padding-left: 10px +} + +.custom-theme .el-radio-group { + display: inline-block; + line-height: 1; + vertical-align: middle; + font-size: 0 +} + +.custom-theme .el-radio-button { + position: relative; + display: inline-block; + outline: 0 +} + +.custom-theme .el-radio-button__inner { + display: inline-block; + line-height: 1; + white-space: nowrap; + vertical-align: middle; + background: #fff; + border: 1px solid #d8dce5; + font-weight: 500; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + cursor: pointer; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-radio-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-radio-button__inner:hover { + color: #262729 +} + +.custom-theme .el-radio-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-radio-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-radio-button__orig-radio { + opacity: 0; + outline: 0; + position: absolute; + z-index: -1; + left: -999px +} + +.custom-theme .el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #262729; + box-shadow: -1px 0 0 0 #262729 +} + +.custom-theme .el-radio-button__orig-radio:disabled + .el-radio-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-radio-button__orig-radio:disabled:checked + .el-radio-button__inner { + background-color: #edf2fc +} + +.custom-theme .el-radio-button:first-child .el-radio-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-radio-button:last-child .el-radio-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-radio-button:first-child:last-child .el-radio-button__inner { + border-radius: 4px +} + +.custom-theme .el-radio-button--medium .el-radio-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-radio-button--medium .el-radio-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-radio-button--small .el-radio-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-radio-button--small .el-radio-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-radio-button--mini .el-radio-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-radio-button--mini .el-radio-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-radio-button:focus:not(.is-focus):not(:active) { + -webkit-box-shadow: 0 0 2px 2px #262729; + box-shadow: 0 0 2px 2px #262729 +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-switch { + display: inline-block; + position: relative; + font-size: 14px; + line-height: 20px; + height: 20px; + vertical-align: middle +} + +.custom-theme .el-switch.is-disabled .el-switch__core, .custom-theme .el-switch.is-disabled .el-switch__label { + cursor: not-allowed +} + +.custom-theme .el-switch__label { + -webkit-transition: .2s; + transition: .2s; + height: 20px; + display: inline-block; + font-size: 14px; + font-weight: 500; + cursor: pointer; + vertical-align: middle; + color: #2d2f33 +} + +.custom-theme .el-switch__label.is-active { + color: #262729 +} + +.custom-theme .el-switch__label--left { + margin-right: 10px +} + +.custom-theme .el-switch__label--right { + margin-left: 10px +} + +.custom-theme .el-switch__label * { + line-height: 1; + font-size: 14px; + display: inline-block +} + +.custom-theme .el-switch__input { + position: absolute; + width: 0; + height: 0; + opacity: 0; + margin: 0 +} + +.custom-theme .el-switch__input:focus ~ .el-switch__core { + outline: 1px solid #262729 +} + +.custom-theme .el-switch__core { + margin: 0; + display: inline-block; + position: relative; + width: 40px; + height: 20px; + border: 1px solid #d8dce5; + outline: 0; + border-radius: 10px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #d8dce5; + cursor: pointer; + -webkit-transition: border-color .3s, background-color .3s; + transition: border-color .3s, background-color .3s; + vertical-align: middle +} + +.custom-theme .el-switch__core .el-switch__button { + position: absolute; + top: 1px; + left: 1px; + border-radius: 100%; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + width: 16px; + height: 16px; + background-color: #fff +} + +.custom-theme .el-switch.is-checked .el-switch__core { + border-color: #262729; + background-color: #262729 +} + +.custom-theme .el-switch.is-disabled { + opacity: .6 +} + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--left span { + left: 10px +} + +.custom-theme .el-switch--wide .el-switch__label.el-switch__label--right span { + right: 10px +} + +.custom-theme .el-switch .label-fade-enter, .custom-theme .el-switch .label-fade-leave-active { + opacity: 0 +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-select-dropdown { + position: absolute; + z-index: 1001; + border: solid 1px #dfe4ed; + border-radius: 4px; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 5px 0 +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: #262729; + background-color: #fff +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after { + position: absolute; + right: 20px; + font-family: element-icons; + content: "\E611"; + font-size: 12px; + font-weight: 700; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list { + padding: 0 +} + +.custom-theme .el-select-dropdown .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-select-dropdown.is-arrow-fixed .popper__arrow { + -webkit-transform: translateX(-200%); + transform: translateX(-200%) +} + +.custom-theme .el-select-dropdown__empty { + padding: 10px 0; + margin: 0; + text-align: center; + color: #999; + font-size: 14px +} + +.custom-theme .el-select-dropdown__wrap { + max-height: 274px +} + +.custom-theme .el-select-dropdown__list { + list-style: none; + padding: 6px 0; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-select-dropdown__item { + font-size: 14px; + padding: 0 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 34px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-select-dropdown__item.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-select-dropdown__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-select-dropdown__item.hover, .custom-theme .el-select-dropdown__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-select-dropdown__item.selected { + color: #262729; + font-weight: 700 +} + +.custom-theme .el-select-dropdown__item span { + line-height: 34px !important +} + +.custom-theme .el-select-group { + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap { + position: relative; + list-style: none; + margin: 0; + padding: 0 +} + +.custom-theme .el-select-group__wrap:not(:last-of-type) { + padding-bottom: 24px +} + +.custom-theme .el-select-group__wrap:not(:last-of-type)::after { + content: ''; + position: absolute; + display: block; + left: 20px; + right: 20px; + bottom: 12px; + height: 1px; + background: #dfe4ed +} + +.custom-theme .el-select-group__title { + padding-left: 20px; + font-size: 12px; + color: #0a76a4; + line-height: 30px +} + +.custom-theme .el-select-group .el-select-dropdown__item { + padding-left: 20px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-select { + display: inline-block; + position: relative +} + +.custom-theme .el-select:hover .el-input__inner { + border-color: #b4bccc +} + +.custom-theme .el-select .el-input__inner { + cursor: pointer; + padding-right: 35px +} + +.custom-theme .el-select .el-input__inner:focus { + border-color: #262729 +} + +.custom-theme .el-select .el-input .el-select__caret { + color: #b4bccc; + font-size: 14px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + line-height: 16px; + cursor: pointer +} + +.custom-theme .el-select .el-input .el-select__caret.is-reverse { + -webkit-transform: rotateZ(0); + transform: rotateZ(0) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close { + font-size: 14px; + text-align: center; + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg); + border-radius: 100%; + color: #b4bccc; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover { + color: #878d99 +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner { + cursor: not-allowed +} + +.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover { + border-color: #dfe4ed +} + +.custom-theme .el-select > .el-input { + display: block +} + +.custom-theme .el-select__input { + border: none; + outline: 0; + padding: 0; + margin-left: 15px; + color: #666; + font-size: 14px; + vertical-align: baseline; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + height: 28px; + background-color: transparent +} + +.custom-theme .el-select__input.is-mini { + height: 14px +} + +.custom-theme .el-select__close { + cursor: pointer; + position: absolute; + top: 8px; + z-index: 1000; + right: 25px; + color: #b4bccc; + line-height: 18px; + font-size: 14px +} + +.custom-theme .el-select__close:hover { + color: #878d99 +} + +.custom-theme .el-select__tags { + position: absolute; + line-height: normal; + white-space: normal; + z-index: 1; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.custom-theme .el-select .el-tag__close { + margin-top: -2px +} + +.custom-theme .el-select .el-tag { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-color: transparent; + margin: 3px 0 3px 6px; + background-color: #f0f2f5 +} + +.custom-theme .el-select .el-tag__close.el-icon-close { + background-color: #b4bccc; + right: -7px; + color: #fff +} + +.custom-theme .el-select .el-tag__close.el-icon-close:hover { + background-color: #878d99 +} + +.custom-theme .el-select .el-tag__close.el-icon-close::before { + display: block; + -webkit-transform: translate(0, .5px); + transform: translate(0, .5px) +} + +.custom-theme .el-select__tag { + display: inline-block; + height: 24px; + line-height: 24px; + font-size: 14px; + border-radius: 4px; + color: #fff; + background-color: #262729 +} + +.custom-theme .el-select__tag .el-icon-close { + font-size: 14px +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-table { + position: relative; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; + max-width: 100%; + background-color: #fff; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-table__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100% +} + +.custom-theme .el-table__empty-text { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: color(#262729 s(16%) l(44%)) +} + +.custom-theme .el-table__expand-column .cell { + padding: 0; + text-align: center +} + +.custom-theme .el-table__expand-icon { + position: relative; + cursor: pointer; + color: #666; + font-size: 12px; + -webkit-transition: -webkit-transform .2s ease-in-out; + transition: -webkit-transform .2s ease-in-out; + transition: transform .2s ease-in-out; + transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out; + height: 20px +} + +.custom-theme .el-table__expand-icon--expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-table__expand-icon > .el-icon { + position: absolute; + left: 50%; + top: 50%; + margin-left: -5px; + margin-top: -5px +} + +.custom-theme .el-table__expanded-cell { + background-color: #fff +} + +.custom-theme .el-table__expanded-cell[class*=cell] { + padding: 20px 50px +} + +.custom-theme .el-table__expanded-cell:hover { + background-color: #f5f7fa !important +} + +.custom-theme .el-table--fit { + border-right: 0; + border-bottom: 0 +} + +.custom-theme .el-table--fit td.gutter, .custom-theme .el-table--fit th.gutter { + border-right-width: 1px +} + +.custom-theme .el-table thead { + color: #878d99; + font-weight: 500 +} + +.custom-theme .el-table thead.is-group th { + background: #f5f7fa +} + +.custom-theme .el-table td, .custom-theme .el-table th { + padding: 12px 0; + min-width: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-overflow: ellipsis; + vertical-align: middle; + position: relative +} + +.custom-theme .el-table td.is-center, .custom-theme .el-table th.is-center { + text-align: center +} + +.custom-theme .el-table td.is-left, .custom-theme .el-table th.is-left { + text-align: left +} + +.custom-theme .el-table td.is-right, .custom-theme .el-table th.is-right { + text-align: right +} + +.custom-theme .el-table td.gutter, .custom-theme .el-table th.gutter { + width: 15px; + border-right-width: 0; + border-bottom-width: 0; + padding: 0 +} + +.custom-theme .el-table td.is-hidden > *, .custom-theme .el-table th.is-hidden > * { + visibility: hidden +} + +.custom-theme .el-table--medium td, .custom-theme .el-table--medium th { + padding: 10px 0 +} + +.custom-theme .el-table--small { + font-size: 12px +} + +.custom-theme .el-table--small td, .custom-theme .el-table--small th { + padding: 8px 0 +} + +.custom-theme .el-table--mini { + font-size: 12px +} + +.custom-theme .el-table--mini td, .custom-theme .el-table--mini th { + padding: 6px 0 +} + +.custom-theme .el-table tr { + background-color: #fff +} + +.custom-theme .el-table tr input[type=checkbox] { + margin: 0 +} + +.custom-theme .el-table td, .custom-theme .el-table th.is-leaf { + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table th.is-sortable { + cursor: pointer +} + +.custom-theme .el-table th { + white-space: nowrap; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-align: left +} + +.custom-theme .el-table th div { + display: inline-block; + padding-left: 10px; + padding-right: 10px; + line-height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.custom-theme .el-table th > .cell { + position: relative; + word-wrap: normal; + text-overflow: ellipsis; + display: inline-block; + vertical-align: middle; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-table th > .cell.highlight { + color: #262729 +} + +.custom-theme .el-table th.required > div::before { + display: inline-block; + content: ""; + width: 8px; + height: 8px; + border-radius: 50%; + background: #ff4d51; + margin-right: 5px; + vertical-align: middle +} + +.custom-theme .el-table td div { + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-table td.gutter { + width: 0 +} + +.custom-theme .el-table .cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + text-overflow: ellipsis; + white-space: normal; + word-break: break-all; + line-height: 23px; + padding-left: 10px; + padding-right: 10px +} + +.custom-theme .el-table .cell.el-tooltip { + white-space: nowrap; + min-width: 50px +} + +.custom-theme .el-table td:first-child .cell, .custom-theme .el-table th:first-child .cell { + padding-left: 0 +} + +.custom-theme .el-table--border, .custom-theme .el-table--group { + border: 1px solid #e6ebf5 +} + +.custom-theme .el-table--border::after, .custom-theme .el-table--group::after, .custom-theme .el-table::before { + content: ''; + position: absolute; + background-color: #e6ebf5; + z-index: 1 +} + +.custom-theme .el-table--border::after, .custom-theme .el-table--group::after { + top: 0; + right: 0; + width: 1px; + height: 100% +} + +.custom-theme .el-table::before { + left: 0; + bottom: 0; + width: 100%; + height: 1px +} + +.custom-theme .el-table--border { + border-right: none; + border-bottom: none +} + +.custom-theme .el-table--border td, .custom-theme .el-table--border th { + border-right: 1px solid #e6ebf5 +} + +.custom-theme .el-table--border td:first-child .cell, .custom-theme .el-table--border th:first-child .cell { + padding-left: 10px +} + +.custom-theme .el-table--border .has-gutter td:nth-last-of-type(2), .custom-theme .el-table--border .has-gutter th:nth-last-of-type(2) { + border-right: none +} + +.custom-theme .el-table--border th.gutter:last-of-type { + border-bottom: 1px solid #e6ebf5; + border-bottom-width: 1px +} + +.custom-theme .el-table--border th { + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table--hidden { + visibility: hidden +} + +.custom-theme .el-table__fixed, .custom-theme .el-table__fixed-right { + position: absolute; + top: 0; + left: 0; + overflow-x: hidden; + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, .12); + box-shadow: 0 0 10px rgba(0, 0, 0, .12) +} + +.custom-theme .el-table__fixed-right::before, .custom-theme .el-table__fixed::before { + content: ''; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 1px; + background-color: #e6ebf5; + z-index: 4 +} + +.custom-theme .el-table__fixed-right-patch { + position: absolute; + top: -1px; + right: 0; + background-color: #fff; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-table__fixed-right { + top: 0; + left: auto; + right: 0 +} + +.custom-theme .el-table__fixed-right .el-table__fixed-body-wrapper, .custom-theme .el-table__fixed-right .el-table__fixed-footer-wrapper, .custom-theme .el-table__fixed-right .el-table__fixed-header-wrapper { + left: auto; + right: 0 +} + +.custom-theme .el-table__fixed-header-wrapper { + position: absolute; + left: 0; + top: 0; + z-index: 3 +} + +.custom-theme .el-table__fixed-footer-wrapper { + position: absolute; + left: 0; + bottom: 0; + z-index: 3 +} + +.custom-theme .el-table__fixed-footer-wrapper tbody td { + border-top: 1px solid #e6ebf5; + background-color: #f5f7fa; + color: #5a5e66 +} + +.custom-theme .el-table__fixed-body-wrapper { + position: absolute; + left: 0; + top: 37px; + overflow: hidden; + z-index: 3 +} + +.custom-theme .el-table__body-wrapper, .custom-theme .el-table__footer-wrapper, .custom-theme .el-table__header-wrapper { + width: 100% +} + +.custom-theme .el-table__footer-wrapper { + margin-top: -1px +} + +.custom-theme .el-table__footer-wrapper td { + border-top: 1px solid #e6ebf5 +} + +.custom-theme .el-table__body, .custom-theme .el-table__footer, .custom-theme .el-table__header { + table-layout: fixed +} + +.custom-theme .el-table__footer-wrapper, .custom-theme .el-table__header-wrapper { + overflow: hidden +} + +.custom-theme .el-table__footer-wrapper tbody td, .custom-theme .el-table__header-wrapper tbody td { + background-color: #f5f7fa; + color: #5a5e66 +} + +.custom-theme .el-table__body-wrapper { + overflow: auto; + position: relative +} + +.custom-theme .el-table__body-wrapper.is-scroll-none ~ .el-table__fixed, .custom-theme .el-table__body-wrapper.is-scroll-none ~ .el-table__fixed-right { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper.is-scroll-left ~ .el-table__fixed { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper.is-scroll-right ~ .el-table__fixed-right { + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-right ~ .el-table__fixed-right { + border-left: 1px solid #e6ebf5 +} + +.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-left ~ .el-table__fixed { + border-right: 1px solid #e6ebf5 +} + +.custom-theme .el-table .caret-wrapper { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 13px; + width: 24px; + cursor: pointer; + overflow: initial +} + +.custom-theme .el-table .sort-caret { + color: #0a76a4; + width: 14px; + overflow: hidden; + font-size: 13px +} + +.custom-theme .el-table .ascending .sort-caret.ascending { + color: #262729 +} + +.custom-theme .el-table .descending .sort-caret.descending { + color: #262729 +} + +.custom-theme .el-table .hidden-columns { + visibility: hidden; + position: absolute; + z-index: -1 +} + +.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped td { + background: #fafafa +} + +.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped.current-row td { + background-color: #e9e9ea +} + +.custom-theme .el-table__body tr.hover-row.current-row > td, .custom-theme .el-table__body tr.hover-row.el-table__row--striped.current-row > td, .custom-theme .el-table__body tr.hover-row.el-table__row--striped > td, .custom-theme .el-table__body tr.hover-row > td { + background-color: #e9e9ea +} + +.custom-theme .el-table__body tr.current-row > td { + background-color: #e9e9ea +} + +.custom-theme .el-table__column-resize-proxy { + position: absolute; + left: 200px; + top: 0; + bottom: 0; + width: 0; + border-left: 1px solid #e6ebf5; + z-index: 10 +} + +.custom-theme .el-table__column-filter-trigger { + display: inline-block; + line-height: 34px; + cursor: pointer +} + +.custom-theme .el-table__column-filter-trigger i { + color: #0a76a4; + font-size: 12px; + -webkit-transform: scale(.75); + transform: scale(.75) +} + +.custom-theme .el-table--enable-row-transition .el-table__body td { + -webkit-transition: background-color .25s ease; + transition: background-color .25s ease +} + +.custom-theme .el-table--enable-row-hover .el-table__body tr:hover > td { + background-color: #f5f7fa +} + +.custom-theme .el-table--fluid-height .el-table__fixed, .custom-theme .el-table--fluid-height .el-table__fixed-right { + bottom: 0; + overflow: hidden +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-table-column--selection .cell { + padding-left: 14px; + padding-right: 14px +} + +.custom-theme .el-table-filter { + border: solid 1px #e6ebf5; + border-radius: 2px; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 2px 0 +} + +.custom-theme .el-table-filter__list { + padding: 5px 0; + margin: 0; + list-style: none; + min-width: 100px +} + +.custom-theme .el-table-filter__list-item { + line-height: 36px; + padding: 0 10px; + cursor: pointer; + font-size: 14px +} + +.custom-theme .el-table-filter__list-item:hover { + background-color: #e9e9ea; + color: #515254 +} + +.custom-theme .el-table-filter__list-item.is-active { + background-color: #262729; + color: #fff +} + +.custom-theme .el-table-filter__content { + min-width: 100px +} + +.custom-theme .el-table-filter__bottom { + border-top: 1px solid #e6ebf5; + padding: 8px +} + +.custom-theme .el-table-filter__bottom button { + background: 0 0; + border: none; + color: #5a5e66; + cursor: pointer; + font-size: 13px; + padding: 0 3px +} + +.custom-theme .el-table-filter__bottom button:hover { + color: #262729 +} + +.custom-theme .el-table-filter__bottom button:focus { + outline: 0 +} + +.custom-theme .el-table-filter__bottom button.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-table-filter__checkbox-group { + padding: 10px +} + +.custom-theme .el-table-filter__checkbox-group label.el-checkbox { + display: block; + margin-bottom: 8px; + margin-left: 5px +} + +.custom-theme .el-table-filter__checkbox-group .el-checkbox:last-child { + margin-bottom: 0 +} + +.custom-theme .el-date-table { + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover div { + background-color: #edf2fc +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td.available:hover { + color: #5a5e66 +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:first-child div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:last-child div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.custom-theme .el-date-table.is-week-mode .el-date-table__row.current div { + background-color: #edf2fc +} + +.custom-theme .el-date-table td { + width: 32px; + height: 30px; + padding: 4px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + cursor: pointer; + position: relative +} + +.custom-theme .el-date-table td div { + height: 30px; + padding: 3px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-table td span { + width: 24px; + height: 24px; + display: block; + margin: 0 auto; + line-height: 24px; + position: absolute; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + border-radius: 50% +} + +.custom-theme .el-date-table td.next-month, .custom-theme .el-date-table td.prev-month { + color: #b4bccc +} + +.custom-theme .el-date-table td.today { + position: relative +} + +.custom-theme .el-date-table td.today span { + color: #262729 +} + +.custom-theme .el-date-table td.today.end-date span, .custom-theme .el-date-table td.today.start-date span { + color: #fff +} + +.custom-theme .el-date-table td.available:hover { + color: #262729 +} + +.custom-theme .el-date-table td.in-range div { + background-color: #edf2fc +} + +.custom-theme .el-date-table td.in-range div:hover { + background-color: #edf2fc +} + +.custom-theme .el-date-table td.current:not(.disabled) span { + color: #fff; + background-color: #262729 +} + +.custom-theme .el-date-table td.end-date div, .custom-theme .el-date-table td.start-date div { + color: #fff +} + +.custom-theme .el-date-table td.end-date span, .custom-theme .el-date-table td.start-date span { + background-color: #262729 +} + +.custom-theme .el-date-table td.start-date div { + margin-left: 5px; + border-top-left-radius: 15px; + border-bottom-left-radius: 15px +} + +.custom-theme .el-date-table td.end-date div { + margin-right: 5px; + border-top-right-radius: 15px; + border-bottom-right-radius: 15px +} + +.custom-theme .el-date-table td.disabled div { + background-color: #f5f7fa; + opacity: 1; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-date-table td.week { + font-size: 80%; + color: #5a5e66 +} + +.custom-theme .el-date-table th { + padding: 5px; + color: #5a5e66; + font-weight: 400; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-month-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse +} + +.custom-theme .el-month-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer +} + +.custom-theme .el-month-table td.disabled .cell { + background-color: #f5f7fa; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-month-table td.disabled .cell:hover { + color: #b4bccc +} + +.custom-theme .el-month-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: #5a5e66; + margin: 0 auto +} + +.custom-theme .el-month-table td .cell:hover { + color: #262729 +} + +.custom-theme .el-month-table td.current:not(.disabled) .cell { + color: #262729 +} + +.custom-theme .el-year-table { + font-size: 12px; + margin: -1px; + border-collapse: collapse +} + +.custom-theme .el-year-table .el-icon { + color: #2d2f33 +} + +.custom-theme .el-year-table td { + text-align: center; + padding: 20px 3px; + cursor: pointer +} + +.custom-theme .el-year-table td.disabled .cell { + background-color: #f5f7fa; + cursor: not-allowed; + color: #b4bccc +} + +.custom-theme .el-year-table td.disabled .cell:hover { + color: #b4bccc +} + +.custom-theme .el-year-table td .cell { + width: 48px; + height: 32px; + display: block; + line-height: 32px; + color: #5a5e66; + margin: 0 auto +} + +.custom-theme .el-year-table td .cell:hover { + color: #262729 +} + +.custom-theme .el-year-table td.current:not(.disabled) .cell { + color: #262729 +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33.3% +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1% +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative +} + +.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px +} + +.custom-theme .el-time-spinner__wrapper.is-arrow { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list { + -webkit-transform: translateY(-32px); + transform: translateY(-32px) +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #fff; + cursor: default +} + +.custom-theme .el-time-spinner__arrow { + font-size: 12px; + color: #878d99; + position: absolute; + left: 0; + width: 100%; + z-index: 1; + text-align: center; + height: 30px; + line-height: 30px; + cursor: pointer +} + +.custom-theme .el-time-spinner__arrow:hover { + color: #262729 +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-up { + top: 10px +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-down { + bottom: 10px +} + +.custom-theme .el-time-spinner__input.el-input { + width: 70% +} + +.custom-theme .el-time-spinner__input.el-input .el-input__inner { + padding: 0; + text-align: center +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center +} + +.custom-theme .el-time-spinner__list::after, .custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; + color: #5a5e66 +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #f5f7fa; + cursor: pointer +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-time-spinner__item.disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-picker-panel { + color: #5a5e66; + border: 1px solid #dfe4ed; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + background: #fff; + border-radius: 4px; + line-height: 30px; + margin: 5px 0 +} + +.custom-theme .el-picker-panel__body-wrapper::after, .custom-theme .el-picker-panel__body::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; + font-size: 0 +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: #5a5e66; + padding-left: 12px; + text-align: left; + outline: 0; + cursor: pointer +} + +.custom-theme .el-picker-panel__shortcut:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #262729 +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: #2d2f33; + border: 0; + background: 0 0; + cursor: pointer; + outline: 0; + margin-top: 8px +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled { + color: #bbb +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled:hover { + cursor: not-allowed +} + +.custom-theme .el-picker-panel__link-btn { + vertical-align: middle +} + +.custom-theme .el-picker-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-picker-panel [slot=sidebar], .custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + background-color: #fff; + overflow: auto +} + +.custom-theme .el-picker-panel [slot=sidebar] + .el-picker-panel__body, .custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px +} + +.custom-theme .el-date-picker { + width: 322px +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + width: 434px +} + +.custom-theme .el-date-picker.has-sidebar { + width: 438px +} + +.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper { + position: relative +} + +.custom-theme .el-date-picker .el-picker-panel__content { + width: 292px +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center +} + +.custom-theme .el-date-picker__header--bordered { + margin-bottom: 0; + padding-bottom: 12px; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-date-picker__header--bordered + .el-picker-panel__content { + margin-top: 0 +} + +.custom-theme .el-date-picker__header-label { + font-size: 16px; + font-weight: 500; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; + color: #5a5e66 +} + +.custom-theme .el-date-picker__header-label:hover { + color: #262729 +} + +.custom-theme .el-date-picker__header-label.active { + color: #262729 +} + +.custom-theme .el-date-picker__prev-btn { + float: left +} + +.custom-theme .el-date-picker__next-btn { + float: right +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px +} + +.custom-theme .el-date-range-picker { + width: 646px +} + +.custom-theme .el-date-range-picker.has-sidebar { + width: 756px +} + +.custom-theme .el-date-range-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-range-picker .el-picker-panel__body { + min-width: 513px +} + +.custom-theme .el-date-range-picker .el-picker-panel__content { + margin: 0 +} + +.custom-theme .el-date-range-picker__header { + position: relative; + text-align: center; + height: 28px +} + +.custom-theme .el-date-range-picker__header [class*=arrow-left] { + float: left +} + +.custom-theme .el-date-range-picker__header [class*=arrow-right] { + float: right +} + +.custom-theme .el-date-range-picker__header div { + font-size: 16px; + font-weight: 500; + margin-right: 50px +} + +.custom-theme .el-date-range-picker__content { + float: left; + width: 50%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 16px +} + +.custom-theme .el-date-range-picker__content.is-left { + border-right: 1px solid #e4e4e4 +} + +.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header div { + margin-left: 50px; + margin-right: 50px +} + +.custom-theme .el-date-range-picker__editors-wrap { + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: table-cell +} + +.custom-theme .el-date-range-picker__editors-wrap.is-right { + text-align: right +} + +.custom-theme .el-date-range-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-range-picker__time-header > .el-icon-arrow-right { + font-size: 20px; + vertical-align: middle; + display: table-cell; + color: #2d2f33 +} + +.custom-theme .el-date-range-picker__time-picker-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-range-picker__time-picker-wrap .el-picker-panel { + position: absolute; + top: 13px; + right: 0; + z-index: 1; + background: #fff +} + +.custom-theme .el-time-range-picker { + width: 354px; + overflow: visible +} + +.custom-theme .el-time-range-picker__content { + position: relative; + text-align: center; + padding: 10px +} + +.custom-theme .el-time-range-picker__cell { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 4px 7px 7px; + width: 50%; + display: inline-block +} + +.custom-theme .el-time-range-picker__header { + margin-bottom: 5px; + text-align: center; + font-size: 14px +} + +.custom-theme .el-time-range-picker__body { + border-radius: 2px; + border: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px #dfe4ed; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden +} + +.custom-theme .el-time-panel__content::after, .custom-theme .el-time-panel__content::before { + content: ""; + top: 50%; + position: absolute; + margin-top: -15px; + height: 32px; + z-index: -1; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + text-align: left; + border-top: 1px solid #dfe4ed; + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: 12%; + margin-right: 12% +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: 12%; + margin-left: 12% +} + +.custom-theme .el-time-panel__content.has-seconds::after { + left: calc(100% / 3 * 2) +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: calc(100% / 3) +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px; + color: #2d2f33 +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #262729 +} + +.custom-theme .el-time-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-picker-panel { + color: #5a5e66; + border: 1px solid #dfe4ed; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + background: #fff; + border-radius: 4px; + line-height: 30px; + margin: 5px 0 +} + +.custom-theme .el-picker-panel__body-wrapper::after, .custom-theme .el-picker-panel__body::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-picker-panel__content { + position: relative; + margin: 15px +} + +.custom-theme .el-picker-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + text-align: right; + background-color: #fff; + position: relative; + font-size: 0 +} + +.custom-theme .el-picker-panel__shortcut { + display: block; + width: 100%; + border: 0; + background-color: transparent; + line-height: 28px; + font-size: 14px; + color: #5a5e66; + padding-left: 12px; + text-align: left; + outline: 0; + cursor: pointer +} + +.custom-theme .el-picker-panel__shortcut:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__shortcut.active { + background-color: #e6f1fe; + color: #262729 +} + +.custom-theme .el-picker-panel__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-picker-panel__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-picker-panel__icon-btn { + font-size: 12px; + color: #2d2f33; + border: 0; + background: 0 0; + cursor: pointer; + outline: 0; + margin-top: 8px +} + +.custom-theme .el-picker-panel__icon-btn:hover { + color: #262729 +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled { + color: #bbb +} + +.custom-theme .el-picker-panel__icon-btn.is-disabled:hover { + cursor: not-allowed +} + +.custom-theme .el-picker-panel__link-btn { + vertical-align: middle +} + +.custom-theme .el-picker-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-picker-panel [slot=sidebar], .custom-theme .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid #e4e4e4; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + background-color: #fff; + overflow: auto +} + +.custom-theme .el-picker-panel [slot=sidebar] + .el-picker-panel__body, .custom-theme .el-picker-panel__sidebar + .el-picker-panel__body { + margin-left: 110px +} + +.custom-theme .el-date-picker { + width: 322px +} + +.custom-theme .el-date-picker.has-sidebar.has-time { + width: 434px +} + +.custom-theme .el-date-picker.has-sidebar { + width: 438px +} + +.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper { + position: relative +} + +.custom-theme .el-date-picker .el-picker-panel__content { + width: 292px +} + +.custom-theme .el-date-picker table { + table-layout: fixed; + width: 100% +} + +.custom-theme .el-date-picker__editor-wrap { + position: relative; + display: table-cell; + padding: 0 5px +} + +.custom-theme .el-date-picker__time-header { + position: relative; + border-bottom: 1px solid #e4e4e4; + font-size: 12px; + padding: 8px 5px 5px 5px; + display: table; + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-date-picker__header { + margin: 12px; + text-align: center +} + +.custom-theme .el-date-picker__header--bordered { + margin-bottom: 0; + padding-bottom: 12px; + border-bottom: solid 1px #e6ebf5 +} + +.custom-theme .el-date-picker__header--bordered + .el-picker-panel__content { + margin-top: 0 +} + +.custom-theme .el-date-picker__header-label { + font-size: 16px; + font-weight: 500; + padding: 0 5px; + line-height: 22px; + text-align: center; + cursor: pointer; + color: #5a5e66 +} + +.custom-theme .el-date-picker__header-label:hover { + color: #262729 +} + +.custom-theme .el-date-picker__header-label.active { + color: #262729 +} + +.custom-theme .el-date-picker__prev-btn { + float: left +} + +.custom-theme .el-date-picker__next-btn { + float: right +} + +.custom-theme .el-date-picker__time-wrap { + padding: 10px; + text-align: center +} + +.custom-theme .el-date-picker__time-label { + float: left; + cursor: pointer; + line-height: 30px; + margin-left: 10px +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .time-select { + margin: 5px 0; + min-width: 0 +} + +.custom-theme .time-select .el-picker-panel__content { + max-height: 200px; + margin: 0 +} + +.custom-theme .time-select-item { + padding: 8px 10px; + font-size: 14px; + line-height: 20px +} + +.custom-theme .time-select-item.selected:not(.disabled) { + color: #262729; + font-weight: 700 +} + +.custom-theme .time-select-item.disabled { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .time-select-item:hover { + background-color: #f5f7fa; + font-weight: 700; + cursor: pointer +} + +.custom-theme .fade-in-linear-enter-active, .custom-theme .fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .fade-in-linear-enter, .custom-theme .fade-in-linear-leave, .custom-theme .fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-linear-enter-active, .custom-theme .el-fade-in-linear-leave-active { + -webkit-transition: opacity .2s linear; + transition: opacity .2s linear +} + +.custom-theme .el-fade-in-linear-enter, .custom-theme .el-fade-in-linear-leave, .custom-theme .el-fade-in-linear-leave-active { + opacity: 0 +} + +.custom-theme .el-fade-in-enter-active, .custom-theme .el-fade-in-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-fade-in-enter, .custom-theme .el-fade-in-leave-active { + opacity: 0 +} + +.custom-theme .el-zoom-in-center-enter-active, .custom-theme .el-zoom-in-center-leave-active { + -webkit-transition: all .3s cubic-bezier(.55, 0, .1, 1); + transition: all .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-zoom-in-center-enter, .custom-theme .el-zoom-in-center-leave-active { + opacity: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0) +} + +.custom-theme .el-zoom-in-top-enter-active, .custom-theme .el-zoom-in-top-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center top; + transform-origin: center top +} + +.custom-theme .el-zoom-in-top-enter, .custom-theme .el-zoom-in-top-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-bottom-enter-active, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 1; + -webkit-transform: scaleY(1); + transform: scaleY(1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: center bottom; + transform-origin: center bottom +} + +.custom-theme .el-zoom-in-bottom-enter, .custom-theme .el-zoom-in-bottom-leave-active { + opacity: 0; + -webkit-transform: scaleY(0); + transform: scaleY(0) +} + +.custom-theme .el-zoom-in-left-enter-active, .custom-theme .el-zoom-in-left-leave-active { + opacity: 1; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + -webkit-transform-origin: top left; + transform-origin: top left +} + +.custom-theme .el-zoom-in-left-enter, .custom-theme .el-zoom-in-left-leave-active { + opacity: 0; + -webkit-transform: scale(.45, .45); + transform: scale(.45, .45) +} + +.custom-theme .collapse-transition { + -webkit-transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out; + transition: .3s height ease-in-out, .3s padding-top ease-in-out, .3s padding-bottom ease-in-out +} + +.custom-theme .horizontal-collapse-transition { + -webkit-transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out; + transition: .3s width ease-in-out, .3s padding-left ease-in-out, .3s padding-right ease-in-out +} + +.custom-theme .el-list-enter-active, .custom-theme .el-list-leave-active { + -webkit-transition: all 1s; + transition: all 1s +} + +.custom-theme .el-list-enter, .custom-theme .el-list-leave-active { + opacity: 0; + -webkit-transform: translateY(-30px); + transform: translateY(-30px) +} + +.custom-theme .el-opacity-transition { + -webkit-transition: opacity .3s cubic-bezier(.55, 0, .1, 1); + transition: opacity .3s cubic-bezier(.55, 0, .1, 1) +} + +.custom-theme .el-date-editor { + position: relative; + display: inline-block; + text-align: left +} + +.custom-theme .el-date-editor.el-input, .custom-theme .el-date-editor.el-input__inner { + width: 220px +} + +.custom-theme .el-date-editor--daterange.el-input, .custom-theme .el-date-editor--daterange.el-input__inner, .custom-theme .el-date-editor--timerange.el-input, .custom-theme .el-date-editor--timerange.el-input__inner { + width: 350px +} + +.custom-theme .el-date-editor--datetimerange.el-input, .custom-theme .el-date-editor--datetimerange.el-input__inner { + width: 400px +} + +.custom-theme .el-date-editor .el-range__icon { + font-size: 14px; + margin-left: -5px; + color: #b4bccc; + float: left; + line-height: 32px +} + +.custom-theme .el-date-editor .el-range-input { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + outline: 0; + display: inline-block; + height: 100%; + margin: 0; + padding: 0; + width: 39%; + text-align: center; + font-size: 14px; + color: #5a5e66 +} + +.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-input::placeholder { + color: #b4bccc +} + +.custom-theme .el-date-editor .el-range-separator { + display: inline-block; + height: 100%; + padding: 0 5px; + margin: 0; + text-align: center; + line-height: 32px; + font-size: 14px; + width: 5%; + color: #2d2f33 +} + +.custom-theme .el-date-editor .el-range__close-icon { + font-size: 14px; + color: #b4bccc; + width: 25px; + display: inline-block; + float: right; + line-height: 32px +} + +.custom-theme .el-range-editor.el-input__inner { + padding: 3px 10px +} + +.custom-theme .el-range-editor.is-active { + border-color: #262729 +} + +.custom-theme .el-range-editor.is-active:hover { + border-color: #262729 +} + +.custom-theme .el-range-editor--medium.el-input__inner { + height: 36px +} + +.custom-theme .el-range-editor--medium .el-range-separator { + line-height: 28px; + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range-input { + font-size: 14px +} + +.custom-theme .el-range-editor--medium .el-range__close-icon, .custom-theme .el-range-editor--medium .el-range__icon { + line-height: 28px +} + +.custom-theme .el-range-editor--small.el-input__inner { + height: 32px +} + +.custom-theme .el-range-editor--small .el-range-separator { + line-height: 24px; + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range-input { + font-size: 13px +} + +.custom-theme .el-range-editor--small .el-range__close-icon, .custom-theme .el-range-editor--small .el-range__icon { + line-height: 24px +} + +.custom-theme .el-range-editor--mini.el-input__inner { + height: 28px +} + +.custom-theme .el-range-editor--mini .el-range-separator { + line-height: 20px; + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range-input { + font-size: 12px +} + +.custom-theme .el-range-editor--mini .el-range__close-icon, .custom-theme .el-range-editor--mini .el-range__icon { + line-height: 20px +} + +.custom-theme .el-range-editor.is-disabled { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled:focus, .custom-theme .el-range-editor.is-disabled:hover { + border-color: #dfe4ed +} + +.custom-theme .el-range-editor.is-disabled input { + background-color: #f5f7fa; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled input::placeholder { + color: #b4bccc +} + +.custom-theme .el-range-editor.is-disabled .el-range-separator { + color: #b4bccc +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper { + width: 33.3% +} + +.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2) { + margin-left: 1% +} + +.custom-theme .el-time-spinner__wrapper { + max-height: 190px; + overflow: auto; + display: inline-block; + width: 50%; + vertical-align: top; + position: relative +} + +.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default) { + padding-bottom: 15px +} + +.custom-theme .el-time-spinner__wrapper.is-arrow { + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + overflow: hidden +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list { + -webkit-transform: translateY(-32px); + transform: translateY(-32px) +} + +.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #fff; + cursor: default +} + +.custom-theme .el-time-spinner__arrow { + font-size: 12px; + color: #878d99; + position: absolute; + left: 0; + width: 100%; + z-index: 1; + text-align: center; + height: 30px; + line-height: 30px; + cursor: pointer +} + +.custom-theme .el-time-spinner__arrow:hover { + color: #262729 +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-up { + top: 10px +} + +.custom-theme .el-time-spinner__arrow.el-icon-arrow-down { + bottom: 10px +} + +.custom-theme .el-time-spinner__input.el-input { + width: 70% +} + +.custom-theme .el-time-spinner__input.el-input .el-input__inner { + padding: 0; + text-align: center +} + +.custom-theme .el-time-spinner__list { + padding: 0; + margin: 0; + list-style: none; + text-align: center +} + +.custom-theme .el-time-spinner__list::after, .custom-theme .el-time-spinner__list::before { + content: ''; + display: block; + width: 100%; + height: 80px +} + +.custom-theme .el-time-spinner__item { + height: 32px; + line-height: 32px; + font-size: 12px; + color: #5a5e66 +} + +.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active) { + background: #f5f7fa; + cursor: pointer +} + +.custom-theme .el-time-spinner__item.active:not(.disabled) { + color: #2d2f33; + font-weight: 700 +} + +.custom-theme .el-time-spinner__item.disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-time-panel { + margin: 5px 0; + border: solid 1px #dfe4ed; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + border-radius: 2px; + position: absolute; + width: 180px; + left: 0; + z-index: 1000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-time-panel__content { + font-size: 0; + position: relative; + overflow: hidden +} + +.custom-theme .el-time-panel__content::after, .custom-theme .el-time-panel__content::before { + content: ""; + top: 50%; + position: absolute; + margin-top: -15px; + height: 32px; + z-index: -1; + left: 0; + right: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-top: 6px; + text-align: left; + border-top: 1px solid #dfe4ed; + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-time-panel__content::after { + left: 50%; + margin-left: 12%; + margin-right: 12% +} + +.custom-theme .el-time-panel__content::before { + padding-left: 50%; + margin-right: 12%; + margin-left: 12% +} + +.custom-theme .el-time-panel__content.has-seconds::after { + left: calc(100% / 3 * 2) +} + +.custom-theme .el-time-panel__content.has-seconds::before { + padding-left: calc(100% / 3) +} + +.custom-theme .el-time-panel__footer { + border-top: 1px solid #e4e4e4; + padding: 4px; + height: 36px; + line-height: 25px; + text-align: right; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-time-panel__btn { + border: none; + line-height: 28px; + padding: 0 5px; + margin: 0 5px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px; + color: #2d2f33 +} + +.custom-theme .el-time-panel__btn.confirm { + font-weight: 800; + color: #262729 +} + +.custom-theme .el-time-panel .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-popover { + position: absolute; + background: #fff; + min-width: 150px; + border-radius: 4px; + border: 1px solid #e6ebf5; + padding: 12px; + z-index: 2000; + color: #5a5e66; + line-height: 1.4; + text-align: justify; + word-break: break-all; + font-size: 14px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-popover--plain { + padding: 18px 20px +} + +.custom-theme .el-popover__title { + color: #2d2f33; + font-size: 16px; + line-height: 1; + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2 +} + +.custom-theme .el-tooltip__popper .popper__arrow, .custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow { + bottom: -6px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow { + left: -6px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-dark { + background: #2d2f33; + color: #fff +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { + border-top-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after { + border-top-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow { + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after { + border-bottom-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow { + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after { + border-left-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow { + border-right-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after { + border-right-color: #fff +} + +.custom-theme .v-modal-enter { + -webkit-animation: v-modal-in .2s ease; + animation: v-modal-in .2s ease +} + +.custom-theme .v-modal-leave { + -webkit-animation: v-modal-out .2s ease forwards; + animation: v-modal-out .2s ease forwards +} + +@keyframes v-modal-in { + 0% { + opacity: 0 + } +} + +@keyframes v-modal-out { + 100% { + opacity: 0 + } +} + +.custom-theme .v-modal { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .5; + background: #000 +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-message-box { + display: inline-block; + width: 420px; + padding-bottom: 10px; + vertical-align: middle; + background-color: #fff; + border-radius: 4px; + border: 1px solid #e6ebf5; + font-size: 18px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + text-align: left; + overflow: hidden; + -webkit-backface-visibility: hidden; + backface-visibility: hidden +} + +.custom-theme .el-message-box__wrapper { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center +} + +.custom-theme .el-message-box__wrapper::after { + content: ""; + display: inline-block; + height: 100%; + width: 0; + vertical-align: middle +} + +.custom-theme .el-message-box__header { + position: relative; + padding: 15px; + padding-bottom: 10px +} + +.custom-theme .el-message-box__title { + padding-left: 0; + margin-bottom: 0; + font-size: 18px; + line-height: 1; + color: #2d2f33 +} + +.custom-theme .el-message-box__headerbtn { + position: absolute; + top: 15px; + right: 15px; + padding: 0; + border: none; + outline: 0; + background: 0 0; + font-size: 16px; + cursor: pointer +} + +.custom-theme .el-message-box__headerbtn .el-message-box__close { + color: #0a76a4 +} + +.custom-theme .el-message-box__headerbtn:focus .el-message-box__close, .custom-theme .el-message-box__headerbtn:hover .el-message-box__close { + color: #262729 +} + +.custom-theme .el-message-box__content { + position: relative; + padding: 10px 15px; + color: #5a5e66; + font-size: 14px +} + +.custom-theme .el-message-box__input { + padding-top: 15px +} + +.custom-theme .el-message-box__input input.invalid { + border-color: #b3450e +} + +.custom-theme .el-message-box__input input.invalid:focus { + border-color: #b3450e +} + +.custom-theme .el-message-box__status { + position: absolute; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + font-size: 24px !important +} + +.custom-theme .el-message-box__status::before { + padding-left: 1px +} + +.custom-theme .el-message-box__status + .el-message-box__message { + padding-left: 36px; + padding-right: 12px +} + +.custom-theme .el-message-box__status.el-icon-success { + color: #409167 +} + +.custom-theme .el-message-box__status.el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-message-box__status.el-icon-warning { + color: #9da408 +} + +.custom-theme .el-message-box__status.el-icon-error { + color: #b3450e +} + +.custom-theme .el-message-box__message { + margin: 0 +} + +.custom-theme .el-message-box__message p { + margin: 0; + line-height: 24px +} + +.custom-theme .el-message-box__errormsg { + color: #b3450e; + font-size: 12px; + min-height: 18px; + margin-top: 2px +} + +.custom-theme .el-message-box__btns { + padding: 5px 15px 0; + text-align: right +} + +.custom-theme .el-message-box__btns button:nth-child(2) { + margin-left: 10px +} + +.custom-theme .el-message-box__btns-reverse { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse +} + +.custom-theme .el-message-box--center { + padding-bottom: 30px +} + +.custom-theme .el-message-box--center .el-message-box__header { + padding-top: 30px +} + +.custom-theme .el-message-box--center .el-message-box__title { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-message-box--center .el-message-box__status { + position: relative; + top: auto; + padding-right: 5px; + text-align: center; + -webkit-transform: translateY(-1px); + transform: translateY(-1px) +} + +.custom-theme .el-message-box--center .el-message-box__message { + margin-left: 0 +} + +.custom-theme .el-message-box--center .el-message-box__btns, .custom-theme .el-message-box--center .el-message-box__content { + text-align: center +} + +.custom-theme .el-message-box--center .el-message-box__content { + padding-left: 27px; + padding-right: 27px +} + +.custom-theme .msgbox-fade-enter-active { + -webkit-animation: msgbox-fade-in .3s; + animation: msgbox-fade-in .3s +} + +.custom-theme .msgbox-fade-leave-active { + -webkit-animation: msgbox-fade-out .3s; + animation: msgbox-fade-out .3s +} + +@-webkit-keyframes msgbox-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes msgbox-fade-in { + 0% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } + 100% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@-webkit-keyframes msgbox-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +@keyframes msgbox-fade-out { + 0% { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + 100% { + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + opacity: 0 + } +} + +.custom-theme .el-breadcrumb { + font-size: 14px; + line-height: 1 +} + +.custom-theme .el-breadcrumb::after, .custom-theme .el-breadcrumb::before { + display: table; + content: "" +} + +.custom-theme .el-breadcrumb::after { + clear: both +} + +.custom-theme .el-breadcrumb__separator { + margin: 0 9px; + font-weight: 700; + color: #b4bccc +} + +.custom-theme .el-breadcrumb__separator[class*=icon] { + margin: 0 6px; + font-weight: 400 +} + +.custom-theme .el-breadcrumb__item { + float: left +} + +.custom-theme .el-breadcrumb__inner, .custom-theme .el-breadcrumb__inner a { + font-weight: 700; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1); + color: #2d2f33 +} + +.custom-theme .el-breadcrumb__inner a:hover, .custom-theme .el-breadcrumb__inner:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover, .custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover { + font-weight: 400; + color: #5a5e66; + cursor: text +} + +.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__separator { + display: none +} + +.custom-theme .el-form--label-left .el-form-item__label { + text-align: left +} + +.custom-theme .el-form--label-top .el-form-item__label { + float: none; + display: inline-block; + text-align: left; + padding: 0 0 10px 0 +} + +.custom-theme .el-form--inline .el-form-item { + display: inline-block; + margin-right: 10px; + vertical-align: top +} + +.custom-theme .el-form--inline .el-form-item__label { + float: none; + display: inline-block +} + +.custom-theme .el-form--inline .el-form-item__content { + display: inline-block; + vertical-align: top +} + +.custom-theme .el-form--inline.el-form--label-top .el-form-item__content { + display: block +} + +.custom-theme .el-form-item { + margin-bottom: 22px +} + +.custom-theme .el-form-item::after, .custom-theme .el-form-item::before { + display: table; + content: "" +} + +.custom-theme .el-form-item::after { + clear: both +} + +.custom-theme .el-form-item .el-form-item { + margin-bottom: 0 +} + +.custom-theme .el-form-item .el-input__validateIcon { + display: none +} + +.custom-theme .el-form-item--medium .el-form-item__label { + line-height: 36px +} + +.custom-theme .el-form-item--medium .el-form-item__content { + line-height: 36px +} + +.custom-theme .el-form-item--small .el-form-item__label { + line-height: 32px +} + +.custom-theme .el-form-item--small .el-form-item__content { + line-height: 32px +} + +.custom-theme .el-form-item--small.el-form-item { + margin-bottom: 18px +} + +.custom-theme .el-form-item--small .el-form-item__error { + padding-top: 2px +} + +.custom-theme .el-form-item--mini .el-form-item__label { + line-height: 28px +} + +.custom-theme .el-form-item--mini .el-form-item__content { + line-height: 28px +} + +.custom-theme .el-form-item--mini.el-form-item { + margin-bottom: 18px +} + +.custom-theme .el-form-item--mini .el-form-item__error { + padding-top: 1px +} + +.custom-theme .el-form-item__label { + text-align: right; + vertical-align: middle; + float: left; + font-size: 14px; + color: #5a5e66; + line-height: 40px; + padding: 0 12px 0 0; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-form-item__content { + line-height: 40px; + position: relative; + font-size: 14px +} + +.custom-theme .el-form-item__content::after, .custom-theme .el-form-item__content::before { + display: table; + content: "" +} + +.custom-theme .el-form-item__content::after { + clear: both +} + +.custom-theme .el-form-item__error { + color: #b3450e; + font-size: 12px; + line-height: 1; + padding-top: 4px; + position: absolute; + top: 100%; + left: 0 +} + +.custom-theme .el-form-item__error--inline { + position: relative; + top: auto; + left: auto; + display: inline-block; + margin-left: 10px +} + +.custom-theme .el-form-item.is-required .el-form-item__label:before { + content: '*'; + color: #b3450e; + margin-right: 4px +} + +.custom-theme .el-form-item.is-error .el-input__inner, .custom-theme .el-form-item.is-error .el-input__inner:focus, .custom-theme .el-form-item.is-error .el-textarea__inner, .custom-theme .el-form-item.is-error .el-textarea__inner:focus { + border-color: #b3450e +} + +.custom-theme .el-form-item.is-error .el-input-group__append .el-input__inner, .custom-theme .el-form-item.is-error .el-input-group__prepend .el-input__inner { + border-color: transparent +} + +.custom-theme .el-form-item.is-error .el-input__validateIcon { + color: #b3450e +} + +.custom-theme .el-form-item.is-success .el-input__inner, .custom-theme .el-form-item.is-success .el-input__inner:focus, .custom-theme .el-form-item.is-success .el-textarea__inner, .custom-theme .el-form-item.is-success .el-textarea__inner:focus { + border-color: #409167 +} + +.custom-theme .el-form-item.is-success .el-input-group__append .el-input__inner, .custom-theme .el-form-item.is-success .el-input-group__prepend .el-input__inner { + border-color: transparent +} + +.custom-theme .el-form-item.is-success .el-input__validateIcon { + color: #409167 +} + +.custom-theme .el-form-item--feedback .el-input__validateIcon { + display: inline-block +} + +.custom-theme .el-tabs__header { + padding: 0; + position: relative; + margin: 0 0 15px +} + +.custom-theme .el-tabs__active-bar { + position: absolute; + bottom: 0; + left: 0; + height: 2px; + background-color: #262729; + z-index: 1; + -webkit-transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1); + transition: transform .3s cubic-bezier(.645, .045, .355, 1), -webkit-transform .3s cubic-bezier(.645, .045, .355, 1); + list-style: none +} + +.custom-theme .el-tabs__new-tab { + float: right; + border: 1px solid #d3dce6; + height: 18px; + width: 18px; + line-height: 18px; + margin: 12px 0 9px 10px; + border-radius: 3px; + text-align: center; + font-size: 12px; + color: #d3dce6; + cursor: pointer; + -webkit-transition: all .15s; + transition: all .15s +} + +.custom-theme .el-tabs__new-tab .el-icon-plus { + -webkit-transform: scale(.8, .8); + transform: scale(.8, .8) +} + +.custom-theme .el-tabs__new-tab:hover { + color: #262729 +} + +.custom-theme .el-tabs__nav-wrap { + overflow: hidden; + margin-bottom: -1px; + position: relative +} + +.custom-theme .el-tabs__nav-wrap::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #dfe4ed; + z-index: 1 +} + +.custom-theme .el-tabs__nav-wrap.is-scrollable { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-tabs__nav-scroll { + overflow: hidden +} + +.custom-theme .el-tabs__nav-next, .custom-theme .el-tabs__nav-prev { + position: absolute; + cursor: pointer; + line-height: 44px; + font-size: 12px; + color: #878d99 +} + +.custom-theme .el-tabs__nav-next { + right: 0 +} + +.custom-theme .el-tabs__nav-prev { + left: 0 +} + +.custom-theme .el-tabs__nav { + white-space: nowrap; + position: relative; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + float: left; + z-index: 2 +} + +.custom-theme .el-tabs__item { + padding: 0 20px; + height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 500; + color: #2d2f33; + position: relative +} + +.custom-theme .el-tabs__item:focus, .custom-theme .el-tabs__item:focus:active { + outline: 0 +} + +.custom-theme .el-tabs__item .el-icon-close { + border-radius: 50%; + text-align: center; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + margin-left: 5px +} + +.custom-theme .el-tabs__item .el-icon-close:before { + -webkit-transform: scale(.9); + transform: scale(.9); + display: inline-block +} + +.custom-theme .el-tabs__item .el-icon-close:hover { + background-color: #b4bccc; + color: #fff +} + +.custom-theme .el-tabs__item.is-active { + color: #262729 +} + +.custom-theme .el-tabs__item:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-tabs__item.is-disabled { + color: #b4bccc; + cursor: default +} + +.custom-theme .el-tabs__content { + overflow: hidden; + position: relative +} + +.custom-theme .el-tabs--card > .el-tabs__header { + border-bottom: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__nav { + border: 1px solid #dfe4ed; + border-bottom: none; + border-radius: 4px 4px 0 0 +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item .el-icon-close { + position: relative; + font-size: 12px; + width: 0; + height: 14px; + vertical-align: middle; + line-height: 15px; + overflow: hidden; + top: -1px; + right: -2px; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50% +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item { + border-bottom: 1px solid transparent; + border-left: 1px solid #dfe4ed; + -webkit-transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1); + transition: color .3s cubic-bezier(.645, .045, .355, 1), padding .3s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item:first-child { + border-left: none +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover { + padding-left: 13px; + padding-right: 13px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close { + width: 14px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active { + border-bottom-color: #fff +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable { + padding-left: 20px; + padding-right: 20px +} + +.custom-theme .el-tabs--card > .el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close { + width: 14px +} + +.custom-theme .el-tabs--border-card { + background: #fff; + border: 1px solid #d8dce5; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .12), 0 0 6px 0 rgba(0, 0, 0, .04) +} + +.custom-theme .el-tabs--border-card > .el-tabs__content { + padding: 15px +} + +.custom-theme .el-tabs--border-card > .el-tabs__header { + background-color: #f5f7fa; + border-bottom: 1px solid #dfe4ed; + margin: 0 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__nav-wrap::after { + content: none +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item { + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + border: 1px solid transparent; + margin: -1px -1px 0; + color: #878d99 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active { + color: #262729; + background-color: #fff; + border-right-color: #d8dce5; + border-left-color: #d8dce5 +} + +.custom-theme .el-tabs--border-card > .el-tabs__header .el-tabs__item:hover { + color: #262729 +} + +.custom-theme .el-tabs--bottom:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2), .custom-theme .el-tabs--top:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2) { + padding-left: 0 +} + +.custom-theme .el-tabs--bottom .el-tabs__header { + margin-bottom: 0; + margin-top: 10px +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__header { + border-bottom: 0; + border-top: 1px solid #d8dce5 +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap { + margin-top: -1px; + margin-bottom: 0 +} + +.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: 0 -1px -1px -1px +} + +.custom-theme .el-tabs--left, .custom-theme .el-tabs--right { + overflow: hidden +} + +.custom-theme .el-tabs--left .el-tabs__header, .custom-theme .el-tabs--left .el-tabs__nav-scroll, .custom-theme .el-tabs--left .el-tabs__nav-wrap, .custom-theme .el-tabs--right .el-tabs__header, .custom-theme .el-tabs--right .el-tabs__nav-scroll, .custom-theme .el-tabs--right .el-tabs__nav-wrap { + height: 100% +} + +.custom-theme .el-tabs--left .el-tabs__active-bar, .custom-theme .el-tabs--right .el-tabs__active-bar { + top: 0; + bottom: auto; + width: 2px; + height: auto +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap, .custom-theme .el-tabs--right .el-tabs__nav-wrap { + margin-bottom: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap.is-scrollable, .custom-theme .el-tabs--right .el-tabs__nav-wrap.is-scrollable { + padding: 30px 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap::after, .custom-theme .el-tabs--right .el-tabs__nav-wrap::after { + height: 100%; + width: 2px; + bottom: auto; + top: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav, .custom-theme .el-tabs--right .el-tabs__nav { + float: none +} + +.custom-theme .el-tabs--left .el-tabs__item, .custom-theme .el-tabs--right .el-tabs__item { + display: block +} + +.custom-theme .el-tabs--left .el-tabs__nav-next, .custom-theme .el-tabs--left .el-tabs__nav-prev, .custom-theme .el-tabs--right .el-tabs__nav-next, .custom-theme .el-tabs--right .el-tabs__nav-prev { + height: 30px; + line-height: 30px; + width: 100%; + text-align: center; + cursor: pointer +} + +.custom-theme .el-tabs--left .el-tabs__nav-next i, .custom-theme .el-tabs--left .el-tabs__nav-prev i, .custom-theme .el-tabs--right .el-tabs__nav-next i, .custom-theme .el-tabs--right .el-tabs__nav-prev i { + -webkit-transform: rotateZ(90deg); + transform: rotateZ(90deg) +} + +.custom-theme .el-tabs--left .el-tabs__nav-prev, .custom-theme .el-tabs--right .el-tabs__nav-prev { + left: auto; + top: 0 +} + +.custom-theme .el-tabs--left .el-tabs__nav-next, .custom-theme .el-tabs--right .el-tabs__nav-next { + right: auto; + bottom: 0 +} + +.custom-theme .el-tabs--left .el-tabs__header { + float: left; + margin-bottom: 0; + margin-right: 10px +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap { + margin-right: -1px +} + +.custom-theme .el-tabs--left .el-tabs__nav-wrap::after { + left: auto; + right: 0 +} + +.custom-theme .el-tabs--left .el-tabs__active-bar { + right: 0; + left: auto +} + +.custom-theme .el-tabs--left .el-tabs__item { + text-align: right +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item { + border-left: none; + border-right: 1px solid #dfe4ed; + border-bottom: none; + border-top: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item:first-child { + border-right: 1px solid #dfe4ed; + border-top: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active { + border: 1px solid #dfe4ed; + border-right-color: #fff; + border-left: none; + border-bottom: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:first-child { + border-top: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:last-child { + border-bottom: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__nav { + border-radius: 4px 0 0 4px; + border-bottom: 1px solid #dfe4ed; + border-right: none +} + +.custom-theme .el-tabs--left.el-tabs--card .el-tabs__new-tab { + float: none +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__header { + border-right: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: -1px 0 -1px -1px +} + +.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item.is-active { + border-color: transparent; + border-top-color: #d1dbe5; + border-bottom-color: #d1dbe5 +} + +.custom-theme .el-tabs--right .el-tabs__header { + float: right; + margin-bottom: 0; + margin-left: 10px +} + +.custom-theme .el-tabs--right .el-tabs__nav-wrap { + margin-left: -1px +} + +.custom-theme .el-tabs--right .el-tabs__nav-wrap::after { + left: 0; + right: auto +} + +.custom-theme .el-tabs--right .el-tabs__active-bar { + left: 0 +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__active-bar { + display: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item { + border-bottom: none; + border-top: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item:first-child { + border-left: 1px solid #dfe4ed; + border-top: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active { + border: 1px solid #dfe4ed; + border-left-color: #fff; + border-right: none; + border-bottom: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:first-child { + border-top: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:last-child { + border-bottom: none +} + +.custom-theme .el-tabs--right.el-tabs--card .el-tabs__nav { + border-radius: 0 4px 4px 0; + border-bottom: 1px solid #dfe4ed; + border-left: none +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__header { + border-left: 1px solid #dfe4ed +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item { + border: 1px solid transparent; + margin: -1px -1px -1px 0 +} + +.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item.is-active { + border-color: transparent; + border-top-color: #d1dbe5; + border-bottom-color: #d1dbe5 +} + +.custom-theme .slideInLeft-transition, .custom-theme .slideInRight-transition { + display: inline-block +} + +.custom-theme .slideInRight-enter { + -webkit-animation: slideInRight-enter .3s; + animation: slideInRight-enter .3s +} + +.custom-theme .slideInRight-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInRight-leave .3s; + animation: slideInRight-leave .3s +} + +.custom-theme .slideInLeft-enter { + -webkit-animation: slideInLeft-enter .3s; + animation: slideInLeft-enter .3s +} + +.custom-theme .slideInLeft-leave { + position: absolute; + left: 0; + right: 0; + -webkit-animation: slideInLeft-leave .3s; + animation: slideInLeft-leave .3s +} + +@-webkit-keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInRight-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@keyframes slideInRight-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0 + } +} + +@-webkit-keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@keyframes slideInLeft-enter { + 0% { + opacity: 0; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) + } + to { + opacity: 1; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0) + } +} + +@-webkit-keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +@keyframes slideInLeft-leave { + 0% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(0); + transform: translateX(0); + opacity: 1 + } + 100% { + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + opacity: 0 + } +} + +.custom-theme .el-tag { + background-color: rgba(38, 39, 41, .1); + display: inline-block; + padding: 0 10px; + height: 32px; + line-height: 30px; + font-size: 12px; + color: #262729; + border-radius: 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid rgba(38, 39, 41, .2); + white-space: nowrap +} + +.custom-theme .el-tag .el-icon-close { + border-radius: 50%; + text-align: center; + position: relative; + cursor: pointer; + font-size: 12px; + height: 18px; + width: 18px; + line-height: 18px; + vertical-align: middle; + top: -1px; + right: -5px; + color: #262729 +} + +.custom-theme .el-tag .el-icon-close::before { + display: block +} + +.custom-theme .el-tag .el-icon-close:hover { + background-color: #262729; + color: #fff +} + +.custom-theme .el-tag--info { + background-color: rgba(10, 118, 164, .1); + border-color: rgba(10, 118, 164, .2); + color: #0a76a4 +} + +.custom-theme .el-tag--info.is-hit { + border-color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close { + color: #0a76a4 +} + +.custom-theme .el-tag--info .el-tag__close:hover { + background-color: #0a76a4; + color: #fff +} + +.custom-theme .el-tag--success { + background-color: rgba(64, 145, 103, .1); + border-color: rgba(64, 145, 103, .2); + color: #409167 +} + +.custom-theme .el-tag--success.is-hit { + border-color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close { + color: #409167 +} + +.custom-theme .el-tag--success .el-tag__close:hover { + background-color: #409167; + color: #fff +} + +.custom-theme .el-tag--warning { + background-color: rgba(157, 164, 8, .1); + border-color: rgba(157, 164, 8, .2); + color: #9da408 +} + +.custom-theme .el-tag--warning.is-hit { + border-color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close { + color: #9da408 +} + +.custom-theme .el-tag--warning .el-tag__close:hover { + background-color: #9da408; + color: #fff +} + +.custom-theme .el-tag--danger { + background-color: rgba(179, 69, 14, .1); + border-color: rgba(179, 69, 14, .2); + color: #b3450e +} + +.custom-theme .el-tag--danger.is-hit { + border-color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close { + color: #b3450e +} + +.custom-theme .el-tag--danger .el-tag__close:hover { + background-color: #b3450e; + color: #fff +} + +.custom-theme .el-tag--medium { + height: 28px; + line-height: 26px +} + +.custom-theme .el-tag--medium .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--small { + height: 24px; + padding: 0 8px; + line-height: 22px +} + +.custom-theme .el-tag--small .el-icon-close { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-tag--mini { + height: 20px; + padding: 0 5px; + line-height: 19px +} + +.custom-theme .el-tag--mini .el-icon-close { + margin-left: -3px; + -webkit-transform: scale(.7); + transform: scale(.7) +} + +.custom-theme .el-tree { + cursor: default; + background: #fff; + color: #5a5e66 +} + +.custom-theme .el-tree__empty-block { + position: relative; + min-height: 60px; + text-align: center; + width: 100%; + height: 100% +} + +.custom-theme .el-tree__empty-text { + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + color: #623615 +} + +.custom-theme .el-tree-node { + white-space: nowrap +} + +.custom-theme .el-tree-node__content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 26px; + cursor: pointer +} + +.custom-theme .el-tree-node__content > .el-tree-node__expand-icon { + padding: 6px +} + +.custom-theme .el-tree-node__content > .el-checkbox { + margin-right: 8px +} + +.custom-theme .el-tree-node__content:hover { + background-color: #f5f7fa +} + +.custom-theme .el-tree-node__expand-icon { + cursor: pointer; + color: #b4bccc; + font-size: 12px; + -webkit-transform: rotate(0); + transform: rotate(0); + -webkit-transition: -webkit-transform .3s ease-in-out; + transition: -webkit-transform .3s ease-in-out; + transition: transform .3s ease-in-out; + transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out +} + +.custom-theme .el-tree-node__expand-icon.expanded { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-tree-node__expand-icon.is-leaf { + color: transparent; + cursor: default +} + +.custom-theme .el-tree-node__label { + font-size: 14px +} + +.custom-theme .el-tree-node__loading-icon { + margin-right: 8px; + font-size: 14px; + color: #b4bccc +} + +.custom-theme .el-tree-node > .el-tree-node__children { + overflow: hidden; + background-color: transparent +} + +.custom-theme .el-tree-node.is-expanded > .el-tree-node__children { + display: block +} + +.custom-theme .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content { + background-color: #eee +} + +.custom-theme .el-alert { + width: 100%; + padding: 8px 16px; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + position: relative; + background-color: #fff; + overflow: hidden; + opacity: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: opacity .2s; + transition: opacity .2s +} + +.custom-theme .el-alert.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-alert--success { + background-color: #ecf4f0; + color: #409167 +} + +.custom-theme .el-alert--success .el-alert__description { + color: #409167 +} + +.custom-theme .el-alert--info { + background-color: #e7f1f6; + color: #0a76a4 +} + +.custom-theme .el-alert--info .el-alert__description { + color: #0a76a4 +} + +.custom-theme .el-alert--warning { + background-color: #f5f6e6; + color: #9da408 +} + +.custom-theme .el-alert--warning .el-alert__description { + color: #9da408 +} + +.custom-theme .el-alert--error { + background-color: #f7ece7; + color: #b3450e +} + +.custom-theme .el-alert--error .el-alert__description { + color: #b3450e +} + +.custom-theme .el-alert__content { + display: table-cell; + padding: 0 8px +} + +.custom-theme .el-alert__icon { + font-size: 16px; + width: 16px +} + +.custom-theme .el-alert__icon.is-big { + font-size: 28px; + width: 28px +} + +.custom-theme .el-alert__title { + font-size: 13px; + line-height: 18px +} + +.custom-theme .el-alert__title.is-bold { + font-weight: 700 +} + +.custom-theme .el-alert .el-alert__description { + font-size: 12px; + margin: 5px 0 0 0 +} + +.custom-theme .el-alert__closebtn { + font-size: 12px; + color: #b4bccc; + opacity: 1; + position: absolute; + top: 12px; + right: 15px; + cursor: pointer +} + +.custom-theme .el-alert__closebtn.is-customed { + font-style: normal; + font-size: 13px; + top: 9px +} + +.custom-theme .el-alert-fade-enter, .custom-theme .el-alert-fade-leave-active { + opacity: 0 +} + +.custom-theme .el-notification { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 330px; + padding: 14px 26px 14px 13px; + border-radius: 8px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #e6ebf5; + position: fixed; + background-color: #fff; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + -webkit-transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + transition: opacity .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s; + transition: opacity .3s, transform .3s, left .3s, right .3s, top .4s, bottom .3s, -webkit-transform .3s; + overflow: hidden +} + +.custom-theme .el-notification.right { + right: 16px +} + +.custom-theme .el-notification.left { + left: 16px +} + +.custom-theme .el-notification__group { + margin-left: 13px +} + +.custom-theme .el-notification__title { + font-weight: 700; + font-size: 16px; + color: #2d2f33; + margin: 0 +} + +.custom-theme .el-notification__content { + font-size: 14px; + line-height: 21px; + margin: 6px 0 0 0; + color: #5a5e66; + text-align: justify +} + +.custom-theme .el-notification__content p { + margin: 0 +} + +.custom-theme .el-notification__icon { + height: 24px; + width: 24px; + font-size: 24px; + -webkit-transform: translateY(4px); + transform: translateY(4px) +} + +.custom-theme .el-notification__closeBtn { + position: absolute; + top: 15px; + right: 15px; + cursor: pointer; + color: #878d99; + font-size: 16px +} + +.custom-theme .el-notification__closeBtn:hover { + color: #5a5e66 +} + +.custom-theme .el-notification .el-icon-success { + color: #409167 +} + +.custom-theme .el-notification .el-icon-error { + color: #b3450e +} + +.custom-theme .el-notification .el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-notification .el-icon-warning { + color: #9da408 +} + +.custom-theme .el-notification-fade-enter.right { + right: 0; + -webkit-transform: translateX(100%); + transform: translateX(100%) +} + +.custom-theme .el-notification-fade-enter.left { + left: 0; + -webkit-transform: translateX(-100%); + transform: translateX(-100%) +} + +.custom-theme .el-notification-fade-leave-active { + opacity: 0 +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input-number { + position: relative; + display: inline-block; + width: 180px; + line-height: 38px +} + +.custom-theme .el-input-number .el-input { + display: block +} + +.custom-theme .el-input-number .el-input__inner { + -webkit-appearance: none; + padding-left: 50px; + padding-right: 50px; + text-align: center +} + +.custom-theme .el-input-number__decrease, .custom-theme .el-input-number__increase { + position: absolute; + z-index: 1; + top: 1px; + width: 40px; + height: auto; + text-align: center; + background: #f5f7fa; + color: #5a5e66; + cursor: pointer; + font-size: 13px +} + +.custom-theme .el-input-number__decrease:hover, .custom-theme .el-input-number__increase:hover { + color: #262729 +} + +.custom-theme .el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), .custom-theme .el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled) { + border-color: #262729 +} + +.custom-theme .el-input-number__decrease.is-disabled, .custom-theme .el-input-number__increase.is-disabled { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input-number__increase { + right: 1px; + border-radius: 0 4px 4px 0; + border-left: 1px solid #d8dce5 +} + +.custom-theme .el-input-number__decrease { + left: 1px; + border-radius: 4px 0 0 4px; + border-right: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease, .custom-theme .el-input-number.is-disabled .el-input-number__increase { + border-color: #dfe4ed; + color: #dfe4ed +} + +.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover, .custom-theme .el-input-number.is-disabled .el-input-number__increase:hover { + color: #dfe4ed; + cursor: not-allowed +} + +.custom-theme .el-input-number--medium { + width: 200px; + line-height: 34px +} + +.custom-theme .el-input-number--medium .el-input-number__decrease, .custom-theme .el-input-number--medium .el-input-number__increase { + width: 36px; + font-size: 14px +} + +.custom-theme .el-input-number--medium .el-input__inner { + padding-left: 43px; + padding-right: 43px +} + +.custom-theme .el-input-number--small { + width: 130px; + line-height: 30px +} + +.custom-theme .el-input-number--small .el-input-number__decrease, .custom-theme .el-input-number--small .el-input-number__increase { + width: 32px; + font-size: 13px +} + +.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.9); + transform: scale(.9) +} + +.custom-theme .el-input-number--small .el-input__inner { + padding-left: 39px; + padding-right: 39px +} + +.custom-theme .el-input-number--mini { + width: 130px; + line-height: 26px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease, .custom-theme .el-input-number--mini .el-input-number__increase { + width: 28px; + font-size: 12px +} + +.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number--mini .el-input__inner { + padding-left: 35px; + padding-right: 35px +} + +.custom-theme .el-input-number.is-without-controls .el-input__inner { + padding-left: 15px; + padding-right: 15px +} + +.custom-theme .el-input-number.is-controls-right .el-input__inner { + padding-left: 15px; + padding-right: 50px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease, .custom-theme .el-input-number.is-controls-right .el-input-number__increase { + height: auto; + line-height: 19px +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon], .custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon] { + -webkit-transform: scale(.8); + transform: scale(.8) +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__increase { + border-radius: 0 4px 0 0; + border-bottom: 1px solid #d8dce5 +} + +.custom-theme .el-input-number.is-controls-right .el-input-number__decrease { + right: 1px; + bottom: 1px; + top: auto; + left: auto; + border-right: none; + border-left: 1px solid #d8dce5; + border-radius: 0 0 4px 0 +} + +.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase] { + line-height: 17px +} + +.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase] { + line-height: 15px +} + +.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease], .custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase] { + line-height: 13px +} + +.custom-theme .el-tooltip__popper { + position: absolute; + border-radius: 4px; + padding: 10px; + z-index: 2000; + font-size: 12px; + line-height: 1.2 +} + +.custom-theme .el-tooltip__popper .popper__arrow, .custom-theme .el-tooltip__popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-tooltip__popper .popper__arrow { + border-width: 6px +} + +.custom-theme .el-tooltip__popper .popper__arrow::after { + content: " "; + border-width: 5px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow { + bottom: -6px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -5px; + border-top-color: #2d2f33; + border-bottom-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow { + top: -6px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -5px; + border-top-width: 0; + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow { + left: -6px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after { + bottom: -5px; + left: 1px; + border-right-color: #2d2f33; + border-left-width: 0 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow { + right: -6px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -5px; + margin-left: -5px; + border-right-width: 0; + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-dark { + background: #2d2f33; + color: #fff +} + +.custom-theme .el-tooltip__popper.is-light { + background: #fff; + border: 1px solid #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow { + border-top-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after { + border-top-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow { + border-bottom-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after { + border-bottom-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow { + border-left-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after { + border-left-color: #fff +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow { + border-right-color: #2d2f33 +} + +.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after { + border-right-color: #fff +} + +.custom-theme .el-slider::after, .custom-theme .el-slider::before { + display: table; + content: "" +} + +.custom-theme .el-slider::after { + clear: both +} + +.custom-theme .el-slider__runway { + width: 100%; + height: 6px; + margin: 16px 0; + background-color: #dfe4ed; + border-radius: 3px; + position: relative; + cursor: pointer; + vertical-align: middle +} + +.custom-theme .el-slider__runway.show-input { + margin-right: 160px; + width: auto +} + +.custom-theme .el-slider__runway.disabled { + cursor: default +} + +.custom-theme .el-slider__runway.disabled .el-slider__bar { + background-color: #b4bccc +} + +.custom-theme .el-slider__runway.disabled .el-slider__button { + border-color: #b4bccc +} + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.hover, .custom-theme .el-slider__runway.disabled .el-slider__button-wrapper:hover { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.dragging { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging, .custom-theme .el-slider__runway.disabled .el-slider__button.hover, .custom-theme .el-slider__runway.disabled .el-slider__button:hover { + -webkit-transform: scale(1); + transform: scale(1) +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.hover, .custom-theme .el-slider__runway.disabled .el-slider__button:hover { + cursor: not-allowed +} + +.custom-theme .el-slider__runway.disabled .el-slider__button.dragging { + cursor: not-allowed +} + +.custom-theme .el-slider__input { + float: right; + margin-top: 3px +} + +.custom-theme .el-slider__bar { + height: 6px; + background-color: #262729; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + position: absolute +} + +.custom-theme .el-slider__button-wrapper { + height: 36px; + width: 36px; + position: absolute; + z-index: 1001; + top: -15px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + background-color: transparent; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-slider__button-wrapper::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-slider__button-wrapper .el-tooltip { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-slider__button-wrapper.hover, .custom-theme .el-slider__button-wrapper:hover { + cursor: -webkit-grab; + cursor: grab +} + +.custom-theme .el-slider__button-wrapper.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.custom-theme .el-slider__button { + width: 16px; + height: 16px; + border: solid 2px #262729; + background-color: #fff; + border-radius: 50%; + -webkit-transition: .2s; + transition: .2s; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-slider__button.dragging, .custom-theme .el-slider__button.hover, .custom-theme .el-slider__button:hover { + -webkit-transform: scale(1.2); + transform: scale(1.2) +} + +.custom-theme .el-slider__button.hover, .custom-theme .el-slider__button:hover { + cursor: -webkit-grab; + cursor: grab +} + +.custom-theme .el-slider__button.dragging { + cursor: -webkit-grabbing; + cursor: grabbing +} + +.custom-theme .el-slider__stop { + position: absolute; + height: 6px; + width: 6px; + border-radius: 100%; + background-color: #fff; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.custom-theme .el-slider.is-vertical { + position: relative +} + +.custom-theme .el-slider.is-vertical .el-slider__runway { + width: 4px; + height: 100%; + margin: 0 16px +} + +.custom-theme .el-slider.is-vertical .el-slider__bar { + width: 4px; + height: auto; + border-radius: 0 0 3px 3px +} + +.custom-theme .el-slider.is-vertical .el-slider__button-wrapper { + top: auto; + left: -15px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.custom-theme .el-slider.is-vertical .el-slider__stop { + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input { + padding-bottom: 58px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input { + overflow: visible; + float: none; + position: absolute; + bottom: 22px; + width: 36px; + margin-top: 15px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner { + text-align: center; + padding-left: 5px; + padding-right: 5px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + top: 32px; + margin-top: -1px; + border: 1px solid #d8dce5; + line-height: 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease { + width: 18px; + right: 18px; + border-bottom-left-radius: 4px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase { + width: 19px; + border-bottom-right-radius: 4px +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase ~ .el-input .el-input__inner { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase { + border-color: #b4bccc +} + +.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease, .custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase { + border-color: #262729 +} + +.custom-theme .el-loading-parent--relative { + position: relative !important +} + +.custom-theme .el-loading-parent--hidden { + overflow: hidden !important +} + +.custom-theme .el-loading-mask { + position: absolute; + z-index: 10000; + background-color: rgba(255, 255, 255, .9); + margin: 0; + top: 0; + right: 0; + bottom: 0; + left: 0; + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.custom-theme .el-loading-mask.is-fullscreen { + position: fixed +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner { + margin-top: -25px +} + +.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner .circular { + height: 50px; + width: 50px +} + +.custom-theme .el-loading-spinner { + top: 50%; + margin-top: -21px; + width: 100%; + text-align: center; + position: absolute +} + +.custom-theme .el-loading-spinner .el-loading-text { + color: #262729; + margin: 3px 0; + font-size: 14px +} + +.custom-theme .el-loading-spinner .circular { + height: 42px; + width: 42px; + -webkit-animation: loading-rotate 2s linear infinite; + animation: loading-rotate 2s linear infinite +} + +.custom-theme .el-loading-spinner .path { + -webkit-animation: loading-dash 1.5s ease-in-out infinite; + animation: loading-dash 1.5s ease-in-out infinite; + stroke-dasharray: 90, 150; + stroke-dashoffset: 0; + stroke-width: 2; + stroke: #262729; + stroke-linecap: round +} + +.custom-theme .el-loading-spinner i { + color: #262729 +} + +.custom-theme .el-loading-fade-enter, .custom-theme .el-loading-fade-leave-active { + opacity: 0 +} + +@-webkit-keyframes loading-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes loading-rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@-webkit-keyframes loading-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -40px + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -120px + } +} + +@keyframes loading-dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -40px + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -120px + } +} + +.custom-theme .el-row { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-row::after, .custom-theme .el-row::before { + display: table; + content: "" +} + +.custom-theme .el-row::after { + clear: both +} + +.custom-theme .el-row--flex { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-row--flex:after, .custom-theme .el-row--flex:before { + display: none +} + +.custom-theme .el-row--flex.is-justify-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-row--flex.is-justify-end { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end +} + +.custom-theme .el-row--flex.is-justify-space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between +} + +.custom-theme .el-row--flex.is-justify-space-around { + -ms-flex-pack: distribute; + justify-content: space-around +} + +.custom-theme .el-row--flex.is-align-middle { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.custom-theme .el-row--flex.is-align-bottom { + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end +} + +.custom-theme [class*=el-col-] { + float: left; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-col-0 { + display: none +} + +.custom-theme .el-col-1 { + width: 4.16667% +} + +.custom-theme .el-col-offset-1 { + margin-left: 4.16667% +} + +.custom-theme .el-col-pull-1 { + position: relative; + right: 4.16667% +} + +.custom-theme .el-col-push-1 { + position: relative; + left: 4.16667% +} + +.custom-theme .el-col-2 { + width: 8.33333% +} + +.custom-theme .el-col-offset-2 { + margin-left: 8.33333% +} + +.custom-theme .el-col-pull-2 { + position: relative; + right: 8.33333% +} + +.custom-theme .el-col-push-2 { + position: relative; + left: 8.33333% +} + +.custom-theme .el-col-3 { + width: 12.5% +} + +.custom-theme .el-col-offset-3 { + margin-left: 12.5% +} + +.custom-theme .el-col-pull-3 { + position: relative; + right: 12.5% +} + +.custom-theme .el-col-push-3 { + position: relative; + left: 12.5% +} + +.custom-theme .el-col-4 { + width: 16.66667% +} + +.custom-theme .el-col-offset-4 { + margin-left: 16.66667% +} + +.custom-theme .el-col-pull-4 { + position: relative; + right: 16.66667% +} + +.custom-theme .el-col-push-4 { + position: relative; + left: 16.66667% +} + +.custom-theme .el-col-5 { + width: 20.83333% +} + +.custom-theme .el-col-offset-5 { + margin-left: 20.83333% +} + +.custom-theme .el-col-pull-5 { + position: relative; + right: 20.83333% +} + +.custom-theme .el-col-push-5 { + position: relative; + left: 20.83333% +} + +.custom-theme .el-col-6 { + width: 25% +} + +.custom-theme .el-col-offset-6 { + margin-left: 25% +} + +.custom-theme .el-col-pull-6 { + position: relative; + right: 25% +} + +.custom-theme .el-col-push-6 { + position: relative; + left: 25% +} + +.custom-theme .el-col-7 { + width: 29.16667% +} + +.custom-theme .el-col-offset-7 { + margin-left: 29.16667% +} + +.custom-theme .el-col-pull-7 { + position: relative; + right: 29.16667% +} + +.custom-theme .el-col-push-7 { + position: relative; + left: 29.16667% +} + +.custom-theme .el-col-8 { + width: 33.33333% +} + +.custom-theme .el-col-offset-8 { + margin-left: 33.33333% +} + +.custom-theme .el-col-pull-8 { + position: relative; + right: 33.33333% +} + +.custom-theme .el-col-push-8 { + position: relative; + left: 33.33333% +} + +.custom-theme .el-col-9 { + width: 37.5% +} + +.custom-theme .el-col-offset-9 { + margin-left: 37.5% +} + +.custom-theme .el-col-pull-9 { + position: relative; + right: 37.5% +} + +.custom-theme .el-col-push-9 { + position: relative; + left: 37.5% +} + +.custom-theme .el-col-10 { + width: 41.66667% +} + +.custom-theme .el-col-offset-10 { + margin-left: 41.66667% +} + +.custom-theme .el-col-pull-10 { + position: relative; + right: 41.66667% +} + +.custom-theme .el-col-push-10 { + position: relative; + left: 41.66667% +} + +.custom-theme .el-col-11 { + width: 45.83333% +} + +.custom-theme .el-col-offset-11 { + margin-left: 45.83333% +} + +.custom-theme .el-col-pull-11 { + position: relative; + right: 45.83333% +} + +.custom-theme .el-col-push-11 { + position: relative; + left: 45.83333% +} + +.custom-theme .el-col-12 { + width: 50% +} + +.custom-theme .el-col-offset-12 { + margin-left: 50% +} + +.custom-theme .el-col-pull-12 { + position: relative; + right: 50% +} + +.custom-theme .el-col-push-12 { + position: relative; + left: 50% +} + +.custom-theme .el-col-13 { + width: 54.16667% +} + +.custom-theme .el-col-offset-13 { + margin-left: 54.16667% +} + +.custom-theme .el-col-pull-13 { + position: relative; + right: 54.16667% +} + +.custom-theme .el-col-push-13 { + position: relative; + left: 54.16667% +} + +.custom-theme .el-col-14 { + width: 58.33333% +} + +.custom-theme .el-col-offset-14 { + margin-left: 58.33333% +} + +.custom-theme .el-col-pull-14 { + position: relative; + right: 58.33333% +} + +.custom-theme .el-col-push-14 { + position: relative; + left: 58.33333% +} + +.custom-theme .el-col-15 { + width: 62.5% +} + +.custom-theme .el-col-offset-15 { + margin-left: 62.5% +} + +.custom-theme .el-col-pull-15 { + position: relative; + right: 62.5% +} + +.custom-theme .el-col-push-15 { + position: relative; + left: 62.5% +} + +.custom-theme .el-col-16 { + width: 66.66667% +} + +.custom-theme .el-col-offset-16 { + margin-left: 66.66667% +} + +.custom-theme .el-col-pull-16 { + position: relative; + right: 66.66667% +} + +.custom-theme .el-col-push-16 { + position: relative; + left: 66.66667% +} + +.custom-theme .el-col-17 { + width: 70.83333% +} + +.custom-theme .el-col-offset-17 { + margin-left: 70.83333% +} + +.custom-theme .el-col-pull-17 { + position: relative; + right: 70.83333% +} + +.custom-theme .el-col-push-17 { + position: relative; + left: 70.83333% +} + +.custom-theme .el-col-18 { + width: 75% +} + +.custom-theme .el-col-offset-18 { + margin-left: 75% +} + +.custom-theme .el-col-pull-18 { + position: relative; + right: 75% +} + +.custom-theme .el-col-push-18 { + position: relative; + left: 75% +} + +.custom-theme .el-col-19 { + width: 79.16667% +} + +.custom-theme .el-col-offset-19 { + margin-left: 79.16667% +} + +.custom-theme .el-col-pull-19 { + position: relative; + right: 79.16667% +} + +.custom-theme .el-col-push-19 { + position: relative; + left: 79.16667% +} + +.custom-theme .el-col-20 { + width: 83.33333% +} + +.custom-theme .el-col-offset-20 { + margin-left: 83.33333% +} + +.custom-theme .el-col-pull-20 { + position: relative; + right: 83.33333% +} + +.custom-theme .el-col-push-20 { + position: relative; + left: 83.33333% +} + +.custom-theme .el-col-21 { + width: 87.5% +} + +.custom-theme .el-col-offset-21 { + margin-left: 87.5% +} + +.custom-theme .el-col-pull-21 { + position: relative; + right: 87.5% +} + +.custom-theme .el-col-push-21 { + position: relative; + left: 87.5% +} + +.custom-theme .el-col-22 { + width: 91.66667% +} + +.custom-theme .el-col-offset-22 { + margin-left: 91.66667% +} + +.custom-theme .el-col-pull-22 { + position: relative; + right: 91.66667% +} + +.custom-theme .el-col-push-22 { + position: relative; + left: 91.66667% +} + +.custom-theme .el-col-23 { + width: 95.83333% +} + +.custom-theme .el-col-offset-23 { + margin-left: 95.83333% +} + +.custom-theme .el-col-pull-23 { + position: relative; + right: 95.83333% +} + +.custom-theme .el-col-push-23 { + position: relative; + left: 95.83333% +} + +.custom-theme .el-col-24 { + width: 100% +} + +.custom-theme .el-col-offset-24 { + margin-left: 100% +} + +.custom-theme .el-col-pull-24 { + position: relative; + right: 100% +} + +.custom-theme .el-col-push-24 { + position: relative; + left: 100% +} + +@media only screen and (max-width: 768px) { + .custom-theme .el-col-xs-0 { + display: none + } + + .custom-theme .el-col-xs-1 { + width: 4.16667% + } + + .custom-theme .el-col-xs-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-xs-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-xs-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-xs-2 { + width: 8.33333% + } + + .custom-theme .el-col-xs-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-xs-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-xs-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-xs-3 { + width: 12.5% + } + + .custom-theme .el-col-xs-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-xs-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-xs-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-xs-4 { + width: 16.66667% + } + + .custom-theme .el-col-xs-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-xs-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-xs-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-xs-5 { + width: 20.83333% + } + + .custom-theme .el-col-xs-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-xs-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-xs-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-xs-6 { + width: 25% + } + + .custom-theme .el-col-xs-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-xs-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-xs-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-xs-7 { + width: 29.16667% + } + + .custom-theme .el-col-xs-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-xs-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-xs-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-xs-8 { + width: 33.33333% + } + + .custom-theme .el-col-xs-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-xs-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-xs-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-xs-9 { + width: 37.5% + } + + .custom-theme .el-col-xs-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-xs-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-xs-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-xs-10 { + width: 41.66667% + } + + .custom-theme .el-col-xs-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-xs-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-xs-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-xs-11 { + width: 45.83333% + } + + .custom-theme .el-col-xs-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-xs-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-xs-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-xs-12 { + width: 50% + } + + .custom-theme .el-col-xs-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-xs-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-xs-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-xs-13 { + width: 54.16667% + } + + .custom-theme .el-col-xs-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-xs-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-xs-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-xs-14 { + width: 58.33333% + } + + .custom-theme .el-col-xs-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-xs-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-xs-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-xs-15 { + width: 62.5% + } + + .custom-theme .el-col-xs-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-xs-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-xs-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-xs-16 { + width: 66.66667% + } + + .custom-theme .el-col-xs-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-xs-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-xs-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-xs-17 { + width: 70.83333% + } + + .custom-theme .el-col-xs-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-xs-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-xs-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-xs-18 { + width: 75% + } + + .custom-theme .el-col-xs-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-xs-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-xs-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-xs-19 { + width: 79.16667% + } + + .custom-theme .el-col-xs-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-xs-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-xs-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-xs-20 { + width: 83.33333% + } + + .custom-theme .el-col-xs-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-xs-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-xs-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-xs-21 { + width: 87.5% + } + + .custom-theme .el-col-xs-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-xs-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-xs-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-xs-22 { + width: 91.66667% + } + + .custom-theme .el-col-xs-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-xs-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-xs-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-xs-23 { + width: 95.83333% + } + + .custom-theme .el-col-xs-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-xs-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-xs-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-xs-24 { + width: 100% + } + + .custom-theme .el-col-xs-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-xs-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-xs-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 768px) { + .custom-theme .el-col-sm-0 { + display: none + } + + .custom-theme .el-col-sm-1 { + width: 4.16667% + } + + .custom-theme .el-col-sm-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-sm-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-sm-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-sm-2 { + width: 8.33333% + } + + .custom-theme .el-col-sm-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-sm-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-sm-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-sm-3 { + width: 12.5% + } + + .custom-theme .el-col-sm-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-sm-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-sm-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-sm-4 { + width: 16.66667% + } + + .custom-theme .el-col-sm-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-sm-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-sm-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-sm-5 { + width: 20.83333% + } + + .custom-theme .el-col-sm-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-sm-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-sm-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-sm-6 { + width: 25% + } + + .custom-theme .el-col-sm-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-sm-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-sm-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-sm-7 { + width: 29.16667% + } + + .custom-theme .el-col-sm-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-sm-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-sm-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-sm-8 { + width: 33.33333% + } + + .custom-theme .el-col-sm-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-sm-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-sm-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-sm-9 { + width: 37.5% + } + + .custom-theme .el-col-sm-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-sm-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-sm-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-sm-10 { + width: 41.66667% + } + + .custom-theme .el-col-sm-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-sm-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-sm-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-sm-11 { + width: 45.83333% + } + + .custom-theme .el-col-sm-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-sm-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-sm-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-sm-12 { + width: 50% + } + + .custom-theme .el-col-sm-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-sm-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-sm-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-sm-13 { + width: 54.16667% + } + + .custom-theme .el-col-sm-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-sm-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-sm-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-sm-14 { + width: 58.33333% + } + + .custom-theme .el-col-sm-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-sm-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-sm-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-sm-15 { + width: 62.5% + } + + .custom-theme .el-col-sm-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-sm-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-sm-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-sm-16 { + width: 66.66667% + } + + .custom-theme .el-col-sm-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-sm-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-sm-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-sm-17 { + width: 70.83333% + } + + .custom-theme .el-col-sm-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-sm-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-sm-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-sm-18 { + width: 75% + } + + .custom-theme .el-col-sm-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-sm-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-sm-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-sm-19 { + width: 79.16667% + } + + .custom-theme .el-col-sm-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-sm-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-sm-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-sm-20 { + width: 83.33333% + } + + .custom-theme .el-col-sm-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-sm-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-sm-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-sm-21 { + width: 87.5% + } + + .custom-theme .el-col-sm-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-sm-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-sm-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-sm-22 { + width: 91.66667% + } + + .custom-theme .el-col-sm-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-sm-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-sm-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-sm-23 { + width: 95.83333% + } + + .custom-theme .el-col-sm-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-sm-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-sm-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-sm-24 { + width: 100% + } + + .custom-theme .el-col-sm-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-sm-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-sm-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 992px) { + .custom-theme .el-col-md-0 { + display: none + } + + .custom-theme .el-col-md-1 { + width: 4.16667% + } + + .custom-theme .el-col-md-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-md-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-md-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-md-2 { + width: 8.33333% + } + + .custom-theme .el-col-md-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-md-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-md-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-md-3 { + width: 12.5% + } + + .custom-theme .el-col-md-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-md-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-md-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-md-4 { + width: 16.66667% + } + + .custom-theme .el-col-md-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-md-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-md-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-md-5 { + width: 20.83333% + } + + .custom-theme .el-col-md-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-md-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-md-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-md-6 { + width: 25% + } + + .custom-theme .el-col-md-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-md-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-md-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-md-7 { + width: 29.16667% + } + + .custom-theme .el-col-md-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-md-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-md-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-md-8 { + width: 33.33333% + } + + .custom-theme .el-col-md-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-md-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-md-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-md-9 { + width: 37.5% + } + + .custom-theme .el-col-md-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-md-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-md-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-md-10 { + width: 41.66667% + } + + .custom-theme .el-col-md-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-md-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-md-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-md-11 { + width: 45.83333% + } + + .custom-theme .el-col-md-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-md-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-md-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-md-12 { + width: 50% + } + + .custom-theme .el-col-md-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-md-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-md-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-md-13 { + width: 54.16667% + } + + .custom-theme .el-col-md-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-md-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-md-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-md-14 { + width: 58.33333% + } + + .custom-theme .el-col-md-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-md-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-md-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-md-15 { + width: 62.5% + } + + .custom-theme .el-col-md-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-md-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-md-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-md-16 { + width: 66.66667% + } + + .custom-theme .el-col-md-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-md-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-md-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-md-17 { + width: 70.83333% + } + + .custom-theme .el-col-md-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-md-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-md-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-md-18 { + width: 75% + } + + .custom-theme .el-col-md-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-md-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-md-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-md-19 { + width: 79.16667% + } + + .custom-theme .el-col-md-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-md-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-md-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-md-20 { + width: 83.33333% + } + + .custom-theme .el-col-md-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-md-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-md-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-md-21 { + width: 87.5% + } + + .custom-theme .el-col-md-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-md-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-md-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-md-22 { + width: 91.66667% + } + + .custom-theme .el-col-md-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-md-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-md-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-md-23 { + width: 95.83333% + } + + .custom-theme .el-col-md-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-md-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-md-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-md-24 { + width: 100% + } + + .custom-theme .el-col-md-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-md-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-md-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1200px) { + .custom-theme .el-col-lg-0 { + display: none + } + + .custom-theme .el-col-lg-1 { + width: 4.16667% + } + + .custom-theme .el-col-lg-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-lg-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-lg-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-lg-2 { + width: 8.33333% + } + + .custom-theme .el-col-lg-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-lg-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-lg-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-lg-3 { + width: 12.5% + } + + .custom-theme .el-col-lg-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-lg-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-lg-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-lg-4 { + width: 16.66667% + } + + .custom-theme .el-col-lg-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-lg-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-lg-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-lg-5 { + width: 20.83333% + } + + .custom-theme .el-col-lg-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-lg-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-lg-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-lg-6 { + width: 25% + } + + .custom-theme .el-col-lg-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-lg-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-lg-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-lg-7 { + width: 29.16667% + } + + .custom-theme .el-col-lg-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-lg-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-lg-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-lg-8 { + width: 33.33333% + } + + .custom-theme .el-col-lg-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-lg-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-lg-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-lg-9 { + width: 37.5% + } + + .custom-theme .el-col-lg-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-lg-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-lg-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-lg-10 { + width: 41.66667% + } + + .custom-theme .el-col-lg-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-lg-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-lg-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-lg-11 { + width: 45.83333% + } + + .custom-theme .el-col-lg-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-lg-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-lg-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-lg-12 { + width: 50% + } + + .custom-theme .el-col-lg-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-lg-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-lg-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-lg-13 { + width: 54.16667% + } + + .custom-theme .el-col-lg-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-lg-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-lg-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-lg-14 { + width: 58.33333% + } + + .custom-theme .el-col-lg-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-lg-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-lg-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-lg-15 { + width: 62.5% + } + + .custom-theme .el-col-lg-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-lg-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-lg-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-lg-16 { + width: 66.66667% + } + + .custom-theme .el-col-lg-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-lg-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-lg-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-lg-17 { + width: 70.83333% + } + + .custom-theme .el-col-lg-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-lg-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-lg-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-lg-18 { + width: 75% + } + + .custom-theme .el-col-lg-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-lg-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-lg-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-lg-19 { + width: 79.16667% + } + + .custom-theme .el-col-lg-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-lg-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-lg-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-lg-20 { + width: 83.33333% + } + + .custom-theme .el-col-lg-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-lg-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-lg-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-lg-21 { + width: 87.5% + } + + .custom-theme .el-col-lg-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-lg-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-lg-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-lg-22 { + width: 91.66667% + } + + .custom-theme .el-col-lg-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-lg-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-lg-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-lg-23 { + width: 95.83333% + } + + .custom-theme .el-col-lg-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-lg-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-lg-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-lg-24 { + width: 100% + } + + .custom-theme .el-col-lg-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-lg-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-lg-push-24 { + position: relative; + left: 100% + } +} + +@media only screen and (min-width: 1920px) { + .custom-theme .el-col-xl-0 { + display: none + } + + .custom-theme .el-col-xl-1 { + width: 4.16667% + } + + .custom-theme .el-col-xl-offset-1 { + margin-left: 4.16667% + } + + .custom-theme .el-col-xl-pull-1 { + position: relative; + right: 4.16667% + } + + .custom-theme .el-col-xl-push-1 { + position: relative; + left: 4.16667% + } + + .custom-theme .el-col-xl-2 { + width: 8.33333% + } + + .custom-theme .el-col-xl-offset-2 { + margin-left: 8.33333% + } + + .custom-theme .el-col-xl-pull-2 { + position: relative; + right: 8.33333% + } + + .custom-theme .el-col-xl-push-2 { + position: relative; + left: 8.33333% + } + + .custom-theme .el-col-xl-3 { + width: 12.5% + } + + .custom-theme .el-col-xl-offset-3 { + margin-left: 12.5% + } + + .custom-theme .el-col-xl-pull-3 { + position: relative; + right: 12.5% + } + + .custom-theme .el-col-xl-push-3 { + position: relative; + left: 12.5% + } + + .custom-theme .el-col-xl-4 { + width: 16.66667% + } + + .custom-theme .el-col-xl-offset-4 { + margin-left: 16.66667% + } + + .custom-theme .el-col-xl-pull-4 { + position: relative; + right: 16.66667% + } + + .custom-theme .el-col-xl-push-4 { + position: relative; + left: 16.66667% + } + + .custom-theme .el-col-xl-5 { + width: 20.83333% + } + + .custom-theme .el-col-xl-offset-5 { + margin-left: 20.83333% + } + + .custom-theme .el-col-xl-pull-5 { + position: relative; + right: 20.83333% + } + + .custom-theme .el-col-xl-push-5 { + position: relative; + left: 20.83333% + } + + .custom-theme .el-col-xl-6 { + width: 25% + } + + .custom-theme .el-col-xl-offset-6 { + margin-left: 25% + } + + .custom-theme .el-col-xl-pull-6 { + position: relative; + right: 25% + } + + .custom-theme .el-col-xl-push-6 { + position: relative; + left: 25% + } + + .custom-theme .el-col-xl-7 { + width: 29.16667% + } + + .custom-theme .el-col-xl-offset-7 { + margin-left: 29.16667% + } + + .custom-theme .el-col-xl-pull-7 { + position: relative; + right: 29.16667% + } + + .custom-theme .el-col-xl-push-7 { + position: relative; + left: 29.16667% + } + + .custom-theme .el-col-xl-8 { + width: 33.33333% + } + + .custom-theme .el-col-xl-offset-8 { + margin-left: 33.33333% + } + + .custom-theme .el-col-xl-pull-8 { + position: relative; + right: 33.33333% + } + + .custom-theme .el-col-xl-push-8 { + position: relative; + left: 33.33333% + } + + .custom-theme .el-col-xl-9 { + width: 37.5% + } + + .custom-theme .el-col-xl-offset-9 { + margin-left: 37.5% + } + + .custom-theme .el-col-xl-pull-9 { + position: relative; + right: 37.5% + } + + .custom-theme .el-col-xl-push-9 { + position: relative; + left: 37.5% + } + + .custom-theme .el-col-xl-10 { + width: 41.66667% + } + + .custom-theme .el-col-xl-offset-10 { + margin-left: 41.66667% + } + + .custom-theme .el-col-xl-pull-10 { + position: relative; + right: 41.66667% + } + + .custom-theme .el-col-xl-push-10 { + position: relative; + left: 41.66667% + } + + .custom-theme .el-col-xl-11 { + width: 45.83333% + } + + .custom-theme .el-col-xl-offset-11 { + margin-left: 45.83333% + } + + .custom-theme .el-col-xl-pull-11 { + position: relative; + right: 45.83333% + } + + .custom-theme .el-col-xl-push-11 { + position: relative; + left: 45.83333% + } + + .custom-theme .el-col-xl-12 { + width: 50% + } + + .custom-theme .el-col-xl-offset-12 { + margin-left: 50% + } + + .custom-theme .el-col-xl-pull-12 { + position: relative; + right: 50% + } + + .custom-theme .el-col-xl-push-12 { + position: relative; + left: 50% + } + + .custom-theme .el-col-xl-13 { + width: 54.16667% + } + + .custom-theme .el-col-xl-offset-13 { + margin-left: 54.16667% + } + + .custom-theme .el-col-xl-pull-13 { + position: relative; + right: 54.16667% + } + + .custom-theme .el-col-xl-push-13 { + position: relative; + left: 54.16667% + } + + .custom-theme .el-col-xl-14 { + width: 58.33333% + } + + .custom-theme .el-col-xl-offset-14 { + margin-left: 58.33333% + } + + .custom-theme .el-col-xl-pull-14 { + position: relative; + right: 58.33333% + } + + .custom-theme .el-col-xl-push-14 { + position: relative; + left: 58.33333% + } + + .custom-theme .el-col-xl-15 { + width: 62.5% + } + + .custom-theme .el-col-xl-offset-15 { + margin-left: 62.5% + } + + .custom-theme .el-col-xl-pull-15 { + position: relative; + right: 62.5% + } + + .custom-theme .el-col-xl-push-15 { + position: relative; + left: 62.5% + } + + .custom-theme .el-col-xl-16 { + width: 66.66667% + } + + .custom-theme .el-col-xl-offset-16 { + margin-left: 66.66667% + } + + .custom-theme .el-col-xl-pull-16 { + position: relative; + right: 66.66667% + } + + .custom-theme .el-col-xl-push-16 { + position: relative; + left: 66.66667% + } + + .custom-theme .el-col-xl-17 { + width: 70.83333% + } + + .custom-theme .el-col-xl-offset-17 { + margin-left: 70.83333% + } + + .custom-theme .el-col-xl-pull-17 { + position: relative; + right: 70.83333% + } + + .custom-theme .el-col-xl-push-17 { + position: relative; + left: 70.83333% + } + + .custom-theme .el-col-xl-18 { + width: 75% + } + + .custom-theme .el-col-xl-offset-18 { + margin-left: 75% + } + + .custom-theme .el-col-xl-pull-18 { + position: relative; + right: 75% + } + + .custom-theme .el-col-xl-push-18 { + position: relative; + left: 75% + } + + .custom-theme .el-col-xl-19 { + width: 79.16667% + } + + .custom-theme .el-col-xl-offset-19 { + margin-left: 79.16667% + } + + .custom-theme .el-col-xl-pull-19 { + position: relative; + right: 79.16667% + } + + .custom-theme .el-col-xl-push-19 { + position: relative; + left: 79.16667% + } + + .custom-theme .el-col-xl-20 { + width: 83.33333% + } + + .custom-theme .el-col-xl-offset-20 { + margin-left: 83.33333% + } + + .custom-theme .el-col-xl-pull-20 { + position: relative; + right: 83.33333% + } + + .custom-theme .el-col-xl-push-20 { + position: relative; + left: 83.33333% + } + + .custom-theme .el-col-xl-21 { + width: 87.5% + } + + .custom-theme .el-col-xl-offset-21 { + margin-left: 87.5% + } + + .custom-theme .el-col-xl-pull-21 { + position: relative; + right: 87.5% + } + + .custom-theme .el-col-xl-push-21 { + position: relative; + left: 87.5% + } + + .custom-theme .el-col-xl-22 { + width: 91.66667% + } + + .custom-theme .el-col-xl-offset-22 { + margin-left: 91.66667% + } + + .custom-theme .el-col-xl-pull-22 { + position: relative; + right: 91.66667% + } + + .custom-theme .el-col-xl-push-22 { + position: relative; + left: 91.66667% + } + + .custom-theme .el-col-xl-23 { + width: 95.83333% + } + + .custom-theme .el-col-xl-offset-23 { + margin-left: 95.83333% + } + + .custom-theme .el-col-xl-pull-23 { + position: relative; + right: 95.83333% + } + + .custom-theme .el-col-xl-push-23 { + position: relative; + left: 95.83333% + } + + .custom-theme .el-col-xl-24 { + width: 100% + } + + .custom-theme .el-col-xl-offset-24 { + margin-left: 100% + } + + .custom-theme .el-col-xl-pull-24 { + position: relative; + right: 100% + } + + .custom-theme .el-col-xl-push-24 { + position: relative; + left: 100% + } +} + +.custom-theme .el-progress { + position: relative; + line-height: 1 +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: #5a5e66; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1 +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block +} + +.custom-theme .el-progress--circle { + display: inline-block +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%) +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0 +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #409167 +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #409167 +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #b3450e +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #b3450e +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: #e6ebf5; + overflow: hidden; + position: relative; + vertical-align: middle +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #262729; + text-align: right; + border-radius: 100px; + line-height: 1; + white-space: nowrap +} + +.custom-theme .el-progress-bar__inner::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px +} + +@-webkit-keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +@keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.custom-theme .el-upload { + display: inline-block; + text-align: center; + cursor: pointer +} + +.custom-theme .el-upload__input { + display: none +} + +.custom-theme .el-upload__tip { + font-size: 12px; + color: #5a5e66; + margin-top: 7px +} + +.custom-theme .el-upload iframe { + position: absolute; + z-index: -1; + top: 0; + left: 0; + opacity: 0 +} + +.custom-theme .el-upload--picture-card { + background-color: #fbfdff; + border: 1px dashed #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + cursor: pointer; + line-height: 146px; + vertical-align: top +} + +.custom-theme .el-upload--picture-card i { + font-size: 28px; + color: #8c939d +} + +.custom-theme .el-upload--picture-card:hover { + border-color: #262729; + color: #262729 +} + +.custom-theme .el-upload-dragger { + background-color: #fff; + border: 1px dashed #d9d9d9; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 360px; + height: 180px; + text-align: center; + cursor: pointer; + position: relative; + overflow: hidden +} + +.custom-theme .el-upload-dragger .el-icon-upload { + font-size: 67px; + color: #b4bccc; + margin: 40px 0 16px; + line-height: 50px +} + +.custom-theme .el-upload-dragger + .el-upload__tip { + text-align: center +} + +.custom-theme .el-upload-dragger ~ .el-upload__files { + border-top: 1px solid #d8dce5; + margin-top: 7px; + padding-top: 5px +} + +.custom-theme .el-upload-dragger .el-upload__text { + color: #5a5e66; + font-size: 14px; + text-align: center +} + +.custom-theme .el-upload-dragger .el-upload__text em { + color: #262729; + font-style: normal +} + +.custom-theme .el-upload-dragger:hover { + border-color: #262729 +} + +.custom-theme .el-upload-dragger.is-dragover { + background-color: rgba(32, 159, 255, .06); + border: 2px dashed #262729 +} + +.custom-theme .el-upload-list { + margin: 0; + padding: 0; + list-style: none +} + +.custom-theme .el-upload-list__item { + -webkit-transition: all .5s cubic-bezier(.55, 0, .1, 1); + transition: all .5s cubic-bezier(.55, 0, .1, 1); + font-size: 14px; + color: #5a5e66; + line-height: 1.8; + margin-top: 5px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + width: 100% +} + +.custom-theme .el-upload-list__item .el-progress { + position: absolute; + top: 20px; + width: 100% +} + +.custom-theme .el-upload-list__item .el-progress__text { + position: absolute; + right: 0; + top: -13px +} + +.custom-theme .el-upload-list__item .el-progress-bar { + margin-right: 0; + padding-right: 0 +} + +.custom-theme .el-upload-list__item:first-child { + margin-top: 10px +} + +.custom-theme .el-upload-list__item .el-icon-upload-success { + color: #409167 +} + +.custom-theme .el-upload-list__item .el-icon-close { + display: none; + position: absolute; + top: 5px; + right: 5px; + cursor: pointer; + opacity: .75; + color: #5a5e66 +} + +.custom-theme .el-upload-list__item .el-icon-close:hover { + opacity: 1 +} + +.custom-theme .el-upload-list__item .el-icon-close-tip { + display: none; + position: absolute; + top: 5px; + right: 0; + cursor: pointer; + opacity: 1; + color: #262729; + -webkit-transform: translate(15%, 0); + transform: translate(15%, 0) +} + +.custom-theme .el-upload-list__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-upload-list__item:hover .el-icon-close { + display: inline-block +} + +.custom-theme .el-upload-list__item:hover .el-progress__text { + display: none +} + +.custom-theme .el-upload-list__item.is-success .el-upload-list__item-status-label { + display: block +} + +.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:focus, .custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:hover { + color: #262729; + cursor: pointer +} + +.custom-theme .el-upload-list__item.is-success:focus .el-icon-close-tip { + display: inline-block +} + +.custom-theme .el-upload-list__item.is-success:active, .custom-theme .el-upload-list__item.is-success:focus:not(.focusing) { + outline-width: 0 +} + +.custom-theme .el-upload-list__item.is-success:active .el-icon-close-tip, .custom-theme .el-upload-list__item.is-success:focus:not(.focusing) .el-icon-close-tip { + display: none +} + +.custom-theme .el-upload-list__item.is-success:focus .el-upload-list__item-status-label, .custom-theme .el-upload-list__item.is-success:hover .el-upload-list__item-status-label { + display: none +} + +.custom-theme .el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label { + display: block +} + +.custom-theme .el-upload-list__item-name { + color: #5a5e66; + display: block; + margin-right: 40px; + overflow: hidden; + padding-left: 4px; + text-overflow: ellipsis; + -webkit-transition: color .3s; + transition: color .3s; + white-space: nowrap +} + +.custom-theme .el-upload-list__item-name [class^=el-icon] { + height: 100%; + margin-right: 7px; + color: #878d99; + line-height: inherit +} + +.custom-theme .el-upload-list__item-status-label { + position: absolute; + right: 5px; + top: 0; + line-height: inherit; + display: none +} + +.custom-theme .el-upload-list__item-delete { + position: absolute; + right: 10px; + top: 0; + font-size: 12px; + color: #5a5e66; + display: none +} + +.custom-theme .el-upload-list__item-delete:hover { + color: #262729 +} + +.custom-theme .el-upload-list--picture-card { + margin: 0; + display: inline; + vertical-align: top +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 148px; + height: 148px; + margin: 0 8px 8px 0; + display: inline-block +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-check, .custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check { + color: #fff +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-close { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text { + display: block +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-name { + display: none +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-thumbnail { + width: 100%; + height: 100% +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + cursor: default; + text-align: center; + color: #fff; + opacity: 0; + font-size: 20px; + background-color: rgba(0, 0, 0, .5); + -webkit-transition: opacity .3s; + transition: opacity .3s +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span { + display: none; + cursor: pointer +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span + span { + margin-left: 15px +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete { + position: static; + font-size: inherit; + color: inherit +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover { + opacity: 1 +} + +.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover span { + display: inline-block +} + +.custom-theme .el-upload-list--picture-card .el-progress { + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + bottom: auto; + width: 126px +} + +.custom-theme .el-upload-list--picture-card .el-progress .el-progress__text { + top: 50% +} + +.custom-theme .el-upload-list--picture .el-upload-list__item { + overflow: hidden; + background-color: #fff; + border: 1px solid #c0ccda; + border-radius: 6px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin-top: 10px; + padding: 10px 10px 10px 90px; + height: 92px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-check, .custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-circle-check { + color: #fff +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label { + background: 0 0; + -webkit-box-shadow: none; + box-shadow: none; + top: -2px; + right: -12px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-progress__text { + display: block +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name { + line-height: 70px; + margin-top: 0 +} + +.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i { + display: none +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-thumbnail { + vertical-align: middle; + display: inline-block; + width: 70px; + height: 70px; + float: left; + position: relative; + z-index: 1; + margin-left: -80px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name { + display: block; + margin-top: 20px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-name i { + font-size: 70px; + line-height: 1; + position: absolute; + left: 9px; + top: 10px +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label { + position: absolute; + right: -17px; + top: -7px; + width: 46px; + height: 26px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 1px 1px #ccc; + box-shadow: 0 1px 1px #ccc +} + +.custom-theme .el-upload-list--picture .el-upload-list__item-status-label i { + font-size: 12px; + margin-top: 12px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg) +} + +.custom-theme .el-upload-list--picture .el-progress { + position: relative; + top: -7px +} + +.custom-theme .el-upload-cover { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 10; + cursor: default +} + +.custom-theme .el-upload-cover::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-upload-cover img { + display: block; + width: 100%; + height: 100% +} + +.custom-theme .el-upload-cover__label { + position: absolute; + right: -15px; + top: -6px; + width: 40px; + height: 24px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, .2) +} + +.custom-theme .el-upload-cover__label i { + font-size: 12px; + margin-top: 11px; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + color: #fff +} + +.custom-theme .el-upload-cover__progress { + display: inline-block; + vertical-align: middle; + position: static; + width: 243px +} + +.custom-theme .el-upload-cover__progress + .el-upload__inner { + opacity: 0 +} + +.custom-theme .el-upload-cover__content { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.custom-theme .el-upload-cover__interact { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, .72); + text-align: center +} + +.custom-theme .el-upload-cover__interact .btn { + display: inline-block; + color: #fff; + font-size: 14px; + cursor: pointer; + vertical-align: middle; + -webkit-transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s; + transition: transform .3s cubic-bezier(.23, 1, .32, 1) .1s, opacity .3s cubic-bezier(.23, 1, .32, 1) .1s, -webkit-transform .3s cubic-bezier(.23, 1, .32, 1) .1s; + margin-top: 60px +} + +.custom-theme .el-upload-cover__interact .btn i { + margin-top: 0 +} + +.custom-theme .el-upload-cover__interact .btn span { + opacity: 0; + -webkit-transition: opacity .15s linear; + transition: opacity .15s linear +} + +.custom-theme .el-upload-cover__interact .btn:not(:first-child) { + margin-left: 35px +} + +.custom-theme .el-upload-cover__interact .btn:hover { + -webkit-transform: translateY(-13px); + transform: translateY(-13px) +} + +.custom-theme .el-upload-cover__interact .btn:hover span { + opacity: 1 +} + +.custom-theme .el-upload-cover__interact .btn i { + color: #fff; + display: block; + font-size: 24px; + line-height: inherit; + margin: 0 auto 5px +} + +.custom-theme .el-upload-cover__title { + position: absolute; + bottom: 0; + left: 0; + background-color: #fff; + height: 36px; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 400; + text-align: left; + padding: 0 10px; + margin: 0; + line-height: 36px; + font-size: 14px; + color: #2d2f33 +} + +.custom-theme .el-upload-cover + .el-upload__inner { + opacity: 0; + position: relative; + z-index: 1 +} + +.custom-theme .el-progress { + position: relative; + line-height: 1 +} + +.custom-theme .el-progress__text { + font-size: 14px; + color: #5a5e66; + display: inline-block; + vertical-align: middle; + margin-left: 10px; + line-height: 1 +} + +.custom-theme .el-progress__text i { + vertical-align: middle; + display: block +} + +.custom-theme .el-progress--circle { + display: inline-block +} + +.custom-theme .el-progress--circle .el-progress__text { + position: absolute; + top: 50%; + left: 0; + width: 100%; + text-align: center; + margin: 0; + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%) +} + +.custom-theme .el-progress--circle .el-progress__text i { + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-progress--without-text .el-progress__text { + display: none +} + +.custom-theme .el-progress--without-text .el-progress-bar { + padding-right: 0; + margin-right: 0; + display: block +} + +.custom-theme .el-progress--text-inside .el-progress-bar { + padding-right: 0; + margin-right: 0 +} + +.custom-theme .el-progress.is-success .el-progress-bar__inner { + background-color: #409167 +} + +.custom-theme .el-progress.is-success .el-progress__text { + color: #409167 +} + +.custom-theme .el-progress.is-exception .el-progress-bar__inner { + background-color: #b3450e +} + +.custom-theme .el-progress.is-exception .el-progress__text { + color: #b3450e +} + +.custom-theme .el-progress-bar { + padding-right: 50px; + display: inline-block; + vertical-align: middle; + width: 100%; + margin-right: -55px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-progress-bar__outer { + height: 6px; + border-radius: 100px; + background-color: #e6ebf5; + overflow: hidden; + position: relative; + vertical-align: middle +} + +.custom-theme .el-progress-bar__inner { + position: absolute; + left: 0; + top: 0; + height: 100%; + background-color: #262729; + text-align: right; + border-radius: 100px; + line-height: 1; + white-space: nowrap +} + +.custom-theme .el-progress-bar__inner::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-progress-bar__innerText { + display: inline-block; + vertical-align: middle; + color: #fff; + font-size: 12px; + margin: 0 5px +} + +@keyframes progress { + 0% { + background-position: 0 0 + } + 100% { + background-position: 32px 0 + } +} + +.custom-theme .el-time-spinner { + width: 100%; + white-space: nowrap +} + +.custom-theme .el-spinner { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-spinner-inner { + -webkit-animation: rotate 2s linear infinite; + animation: rotate 2s linear infinite; + width: 50px; + height: 50px +} + +.custom-theme .el-spinner-inner .path { + stroke: #ececec; + stroke-linecap: round; + -webkit-animation: dash 1.5s ease-in-out infinite; + animation: dash 1.5s ease-in-out infinite +} + +@-webkit-keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@-webkit-keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +@keyframes dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0 + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35 + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124 + } +} + +.custom-theme .el-message { + min-width: 380px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + border-width: 1px; + border-style: solid; + border-color: #e6ebf5; + position: fixed; + left: 50%; + top: 20px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + background-color: #edf2fc; + -webkit-transition: opacity .3s, -webkit-transform .4s; + transition: opacity .3s, -webkit-transform .4s; + transition: opacity .3s, transform .4s; + transition: opacity .3s, transform .4s, -webkit-transform .4s; + overflow: hidden; + padding: 15px 15px 15px 20px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.custom-theme .el-message.is-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-message p { + margin: 0 +} + +.custom-theme .el-message--info .el-message__content { + color: #0a76a4 +} + +.custom-theme .el-message--success { + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-message--success .el-message__content { + color: #409167 +} + +.custom-theme .el-message--warning { + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-message--warning .el-message__content { + color: #9da408 +} + +.custom-theme .el-message--error { + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-message--error .el-message__content { + color: #b3450e +} + +.custom-theme .el-message__icon { + margin-right: 10px +} + +.custom-theme .el-message__content { + padding: 0; + font-size: 14px; + line-height: 1 +} + +.custom-theme .el-message__content:focus { + outline-width: 0 +} + +.custom-theme .el-message__closeBtn { + position: absolute; + top: 50%; + right: 15px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + cursor: pointer; + color: #b4bccc; + font-size: 16px +} + +.custom-theme .el-message__closeBtn:focus { + outline-width: 0 +} + +.custom-theme .el-message__closeBtn:hover { + color: #878d99 +} + +.custom-theme .el-message .el-icon-success { + color: #409167 +} + +.custom-theme .el-message .el-icon-error { + color: #b3450e +} + +.custom-theme .el-message .el-icon-info { + color: #0a76a4 +} + +.custom-theme .el-message .el-icon-warning { + color: #9da408 +} + +.custom-theme .el-message-fade-enter, .custom-theme .el-message-fade-leave-active { + opacity: 0; + -webkit-transform: translate(-50%, -100%); + transform: translate(-50%, -100%) +} + +.custom-theme .el-badge { + position: relative; + vertical-align: middle; + display: inline-block +} + +.custom-theme .el-badge__content { + background-color: #b3450e; + border-radius: 10px; + color: #fff; + display: inline-block; + font-size: 12px; + height: 18px; + line-height: 18px; + padding: 0 6px; + text-align: center; + white-space: nowrap; + border: 1px solid #fff +} + +.custom-theme .el-badge__content.is-fixed { + position: absolute; + top: 0; + right: 10px; + -webkit-transform: translateY(-50%) translateX(100%); + transform: translateY(-50%) translateX(100%) +} + +.custom-theme .el-badge__content.is-fixed.is-dot { + right: 5px +} + +.custom-theme .el-badge__content.is-dot { + height: 8px; + width: 8px; + padding: 0; + right: 0; + border-radius: 50% +} + +.custom-theme .el-card { + border-radius: 4px; + border: 1px solid #e6ebf5; + background-color: #fff; + overflow: hidden; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + color: #2d2f33 +} + +.custom-theme .el-card__header { + padding: 18px 20px; + border-bottom: 1px solid #e6ebf5; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-card__body { + padding: 20px +} + +.custom-theme .el-rate { + height: 20px; + line-height: 1 +} + +.custom-theme .el-rate:active, .custom-theme .el-rate:focus { + outline-width: 0 +} + +.custom-theme .el-rate__item { + display: inline-block; + position: relative; + font-size: 0; + vertical-align: middle +} + +.custom-theme .el-rate__icon { + position: relative; + display: inline-block; + font-size: 18px; + margin-right: 6px; + color: #b4bccc; + -webkit-transition: .3s; + transition: .3s +} + +.custom-theme .el-rate__icon.hover { + -webkit-transform: scale(1.15); + transform: scale(1.15) +} + +.custom-theme .el-rate__icon .path2 { + position: absolute; + left: 0; + top: 0 +} + +.custom-theme .el-rate__decimal { + position: absolute; + top: 0; + left: 0; + display: inline-block; + overflow: hidden +} + +.custom-theme .el-rate__text { + font-size: 14px; + vertical-align: middle +} + +.custom-theme .el-steps { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-steps--simple { + padding: 13px 8%; + border-radius: 4px; + background: #f5f7fa +} + +.custom-theme .el-steps--horizontal { + white-space: nowrap +} + +.custom-theme .el-steps--vertical { + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column +} + +.custom-theme .el-step { + position: relative; + -ms-flex-negative: 1; + flex-shrink: 1 +} + +.custom-theme .el-step:last-of-type .el-step__line { + display: none +} + +.custom-theme .el-step:last-of-type.is-flex { + -ms-flex-preferred-size: auto !important; + flex-basis: auto !important; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0 +} + +.custom-theme .el-step:last-of-type .el-step__description, .custom-theme .el-step:last-of-type .el-step__main { + padding-right: 0 +} + +.custom-theme .el-step__head { + position: relative; + width: 100% +} + +.custom-theme .el-step__head.is-process { + color: #2d2f33; + border-color: #2d2f33 +} + +.custom-theme .el-step__head.is-wait { + color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-step__head.is-success { + color: #409167; + border-color: #409167 +} + +.custom-theme .el-step__head.is-error { + color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-step__head.is-finish { + color: #262729; + border-color: #262729 +} + +.custom-theme .el-step__icon { + position: relative; + z-index: 1; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 24px; + height: 24px; + font-size: 14px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #fff; + -webkit-transition: .15s ease-out; + transition: .15s ease-out +} + +.custom-theme .el-step__icon.is-text { + border-radius: 50%; + border: 2px solid; + border-color: inherit +} + +.custom-theme .el-step__icon.is-icon { + width: 40px +} + +.custom-theme .el-step__icon-inner { + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-align: center; + font-weight: 700; + line-height: 1; + color: inherit +} + +.custom-theme .el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 25px; + font-weight: 400 +} + +.custom-theme .el-step__icon-inner.is-status { + -webkit-transform: translateY(1px); + transform: translateY(1px) +} + +.custom-theme .el-step__line { + position: absolute; + border-color: inherit; + background-color: #b4bccc +} + +.custom-theme .el-step__line-inner { + display: block; + border-width: 1px; + border-style: solid; + border-color: inherit; + -webkit-transition: .15s ease-out; + transition: .15s ease-out; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 0; + height: 0 +} + +.custom-theme .el-step__main { + white-space: normal; + text-align: left +} + +.custom-theme .el-step__title { + font-size: 16px; + line-height: 38px +} + +.custom-theme .el-step__title.is-process { + font-weight: 700; + color: #2d2f33 +} + +.custom-theme .el-step__title.is-wait { + color: #b4bccc +} + +.custom-theme .el-step__title.is-success { + color: #409167 +} + +.custom-theme .el-step__title.is-error { + color: #b3450e +} + +.custom-theme .el-step__title.is-finish { + color: #262729 +} + +.custom-theme .el-step__description { + padding-right: 10%; + margin-top: -5px; + font-size: 12px; + line-height: 20px; + font-weight: 400 +} + +.custom-theme .el-step__description.is-process { + color: #2d2f33 +} + +.custom-theme .el-step__description.is-wait { + color: #b4bccc +} + +.custom-theme .el-step__description.is-success { + color: #409167 +} + +.custom-theme .el-step__description.is-error { + color: #b3450e +} + +.custom-theme .el-step__description.is-finish { + color: #262729 +} + +.custom-theme .el-step.is-horizontal { + display: inline-block +} + +.custom-theme .el-step.is-horizontal .el-step__line { + height: 2px; + top: 11px; + left: 0; + right: 0 +} + +.custom-theme .el-step.is-vertical { + display: -webkit-box; + display: -ms-flexbox; + display: flex +} + +.custom-theme .el-step.is-vertical .el-step__head { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + width: 24px +} + +.custom-theme .el-step.is-vertical .el-step__main { + padding-left: 10px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.custom-theme .el-step.is-vertical .el-step__title { + line-height: 24px; + padding-bottom: 8px +} + +.custom-theme .el-step.is-vertical .el-step__line { + width: 2px; + top: 0; + bottom: 0; + left: 11px +} + +.custom-theme .el-step.is-vertical .el-step__icon.is-icon { + width: 24px +} + +.custom-theme .el-step.is-center .el-step__head { + text-align: center +} + +.custom-theme .el-step.is-center .el-step__main { + text-align: center +} + +.custom-theme .el-step.is-center .el-step__description { + padding-left: 20%; + padding-right: 20% +} + +.custom-theme .el-step.is-center .el-step__line { + left: 50%; + right: -50% +} + +.custom-theme .el-step.is-simple { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center +} + +.custom-theme .el-step.is-simple .el-step__head { + width: auto; + font-size: 0; + padding-right: 10px +} + +.custom-theme .el-step.is-simple .el-step__icon { + background: 0 0; + width: 16px; + height: 16px; + font-size: 12px +} + +.custom-theme .el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status) { + font-size: 18px +} + +.custom-theme .el-step.is-simple .el-step__icon-inner.is-status { + -webkit-transform: scale(.8) translateY(1px); + transform: scale(.8) translateY(1px) +} + +.custom-theme .el-step.is-simple .el-step__main { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1 +} + +.custom-theme .el-step.is-simple .el-step__title { + font-size: 16px; + line-height: 20px +} + +.custom-theme .el-step.is-simple:not(:last-of-type) .el-step__title { + max-width: 50%; + word-break: break-all +} + +.custom-theme .el-step.is-simple .el-step__arrow { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center +} + +.custom-theme .el-step.is-simple .el-step__arrow::after, .custom-theme .el-step.is-simple .el-step__arrow::before { + content: ''; + display: inline-block; + position: absolute; + height: 15px; + width: 1px; + background: #b4bccc +} + +.custom-theme .el-step.is-simple .el-step__arrow::before { + -webkit-transform: rotate(-45deg) translateY(-4px); + transform: rotate(-45deg) translateY(-4px); + -webkit-transform-origin: 0 0; + transform-origin: 0 0 +} + +.custom-theme .el-step.is-simple .el-step__arrow::after { + -webkit-transform: rotate(45deg) translateY(4px); + transform: rotate(45deg) translateY(4px); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +.custom-theme .el-step.is-simple:last-of-type .el-step__arrow { + display: none +} + +.custom-theme .el-carousel { + overflow-x: hidden; + position: relative +} + +.custom-theme .el-carousel__container { + position: relative; + height: 300px +} + +.custom-theme .el-carousel__arrow { + border: none; + outline: 0; + padding: 0; + margin: 0; + height: 36px; + width: 36px; + cursor: pointer; + -webkit-transition: .3s; + transition: .3s; + border-radius: 50%; + background-color: rgba(31, 45, 61, .11); + color: #fff; + position: absolute; + top: 50%; + z-index: 10; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + text-align: center; + font-size: 12px +} + +.custom-theme .el-carousel__arrow--left { + left: 16px +} + +.custom-theme .el-carousel__arrow--right { + right: 16px +} + +.custom-theme .el-carousel__arrow:hover { + background-color: rgba(31, 45, 61, .23) +} + +.custom-theme .el-carousel__arrow i { + cursor: pointer +} + +.custom-theme .el-carousel__indicators { + position: absolute; + list-style: none; + bottom: 0; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + margin: 0; + padding: 0; + z-index: 2 +} + +.custom-theme .el-carousel__indicators--outside { + bottom: 26px; + text-align: center; + position: static; + -webkit-transform: none; + transform: none +} + +.custom-theme .el-carousel__indicators--outside .el-carousel__indicator:hover button { + opacity: .64 +} + +.custom-theme .el-carousel__indicators--outside button { + background-color: #b4bccc; + opacity: .24 +} + +.custom-theme .el-carousel__indicators--labels { + left: 0; + right: 0; + -webkit-transform: none; + transform: none; + text-align: center +} + +.custom-theme .el-carousel__indicators--labels .el-carousel__button { + height: auto; + width: auto; + padding: 2px 18px; + font-size: 12px +} + +.custom-theme .el-carousel__indicators--labels .el-carousel__indicator { + padding: 6px 4px +} + +.custom-theme .el-carousel__indicator { + display: inline-block; + background-color: transparent; + padding: 12px 4px; + cursor: pointer +} + +.custom-theme .el-carousel__indicator:hover button { + opacity: .72 +} + +.custom-theme .el-carousel__indicator.is-active button { + opacity: 1 +} + +.custom-theme .el-carousel__button { + display: block; + opacity: .48; + width: 30px; + height: 2px; + background-color: #fff; + border: none; + outline: 0; + padding: 0; + margin: 0; + cursor: pointer; + -webkit-transition: .3s; + transition: .3s +} + +.custom-theme .carousel-arrow-left-enter, .custom-theme .carousel-arrow-left-leave-active { + -webkit-transform: translateY(-50%) translateX(-10px); + transform: translateY(-50%) translateX(-10px); + opacity: 0 +} + +.custom-theme .carousel-arrow-right-enter, .custom-theme .carousel-arrow-right-leave-active { + -webkit-transform: translateY(-50%) translateX(10px); + transform: translateY(-50%) translateX(10px); + opacity: 0 +} + +.custom-theme .el-scrollbar { + overflow: hidden; + position: relative +} + +.custom-theme .el-scrollbar:active > .el-scrollbar__bar, .custom-theme .el-scrollbar:focus > .el-scrollbar__bar, .custom-theme .el-scrollbar:hover > .el-scrollbar__bar { + opacity: 1; + -webkit-transition: opacity 340ms ease-out; + transition: opacity 340ms ease-out +} + +.custom-theme .el-scrollbar__wrap { + overflow: scroll; + height: 100% +} + +.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar { + width: 0; + height: 0 +} + +.custom-theme .el-scrollbar__thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(135, 141, 153, .3); + -webkit-transition: .3s background-color; + transition: .3s background-color +} + +.custom-theme .el-scrollbar__thumb:hover { + background-color: rgba(135, 141, 153, .5) +} + +.custom-theme .el-scrollbar__bar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 4px; + opacity: 0; + -webkit-transition: opacity 120ms ease-out; + transition: opacity 120ms ease-out +} + +.custom-theme .el-scrollbar__bar.is-vertical { + width: 6px; + top: 2px +} + +.custom-theme .el-scrollbar__bar.is-vertical > div { + width: 100% +} + +.custom-theme .el-scrollbar__bar.is-horizontal { + height: 6px; + left: 2px +} + +.custom-theme .el-scrollbar__bar.is-horizontal > div { + height: 100% +} + +.custom-theme .el-carousel__item { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: inline-block; + overflow: hidden; + z-index: 0 +} + +.custom-theme .el-carousel__item.is-active { + z-index: 2 +} + +.custom-theme .el-carousel__item.is-animating { + -webkit-transition: -webkit-transform .4s ease-in-out; + transition: -webkit-transform .4s ease-in-out; + transition: transform .4s ease-in-out; + transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out +} + +.custom-theme .el-carousel__item--card { + width: 50%; + -webkit-transition: -webkit-transform .4s ease-in-out; + transition: -webkit-transform .4s ease-in-out; + transition: transform .4s ease-in-out; + transition: transform .4s ease-in-out, -webkit-transform .4s ease-in-out +} + +.custom-theme .el-carousel__item--card.is-in-stage { + cursor: pointer; + z-index: 1 +} + +.custom-theme .el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask, .custom-theme .el-carousel__item--card.is-in-stage:hover .el-carousel__mask { + opacity: .12 +} + +.custom-theme .el-carousel__item--card.is-active { + z-index: 2 +} + +.custom-theme .el-carousel__mask { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + background-color: #fff; + opacity: .24; + -webkit-transition: .2s; + transition: .2s +} + +.custom-theme .el-collapse { + border-top: 1px solid #e6ebf5; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-collapse-item__header { + height: 48px; + line-height: 48px; + background-color: #fff; + color: #2d2f33; + cursor: pointer; + border-bottom: 1px solid #e6ebf5; + font-size: 13px; + font-weight: 500; + -webkit-transition: border-bottom-color .3s; + transition: border-bottom-color .3s +} + +.custom-theme .el-collapse-item__header:active, .custom-theme .el-collapse-item__header:focus:not(.focusing) { + outline-width: 0 +} + +.custom-theme .el-collapse-item__arrow { + margin-right: 8px; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + float: right; + line-height: 48px; + font-weight: 300 +} + +.custom-theme .el-collapse-item__wrap { + will-change: height; + background-color: #fff; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-bottom: 1px solid #e6ebf5 +} + +.custom-theme .el-collapse-item__content { + padding-bottom: 25px; + font-size: 13px; + color: #2d2f33; + line-height: 1.769230769230769 +} + +.custom-theme .el-collapse-item.is-active .el-collapse-item__header { + border-bottom-color: transparent +} + +.custom-theme .el-collapse-item.is-active .el-collapse-item__header .el-collapse-item__arrow { + -webkit-transform: rotate(90deg); + transform: rotate(90deg) +} + +.custom-theme .el-collapse-item:last-child { + margin-bottom: -1px +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-popper .popper__arrow, .custom-theme .el-popper .popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.custom-theme .el-popper .popper__arrow { + border-width: 6px; + -webkit-filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)); + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, .03)) +} + +.custom-theme .el-popper .popper__arrow::after { + content: " "; + border-width: 6px +} + +.custom-theme .el-popper[x-placement^=top] { + margin-bottom: 12px +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow { + bottom: -6px; + left: 50%; + margin-right: 3px; + border-top-color: #e6ebf5; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=top] .popper__arrow::after { + bottom: 1px; + margin-left: -6px; + border-top-color: #fff; + border-bottom-width: 0 +} + +.custom-theme .el-popper[x-placement^=bottom] { + margin-top: 12px +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow { + top: -6px; + left: 50%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after { + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff +} + +.custom-theme .el-popper[x-placement^=right] { + margin-left: 12px +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow { + top: 50%; + left: -6px; + margin-bottom: 3px; + border-right-color: #e6ebf5; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=right] .popper__arrow::after { + bottom: -6px; + left: 1px; + border-right-color: #fff; + border-left-width: 0 +} + +.custom-theme .el-popper[x-placement^=left] { + margin-right: 12px +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow { + top: 50%; + right: -6px; + margin-bottom: 3px; + border-right-width: 0; + border-left-color: #e6ebf5 +} + +.custom-theme .el-popper[x-placement^=left] .popper__arrow::after { + right: 1px; + bottom: -6px; + margin-left: -6px; + border-right-width: 0; + border-left-color: #fff +} + +.custom-theme .el-cascader { + display: inline-block; + position: relative; + font-size: 14px; + line-height: 40px +} + +.custom-theme .el-cascader .el-input, .custom-theme .el-cascader .el-input__inner { + cursor: pointer +} + +.custom-theme .el-cascader .el-input__icon { + -webkit-transition: none; + transition: none +} + +.custom-theme .el-cascader .el-icon-arrow-down { + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s, -webkit-transform .3s; + font-size: 14px +} + +.custom-theme .el-cascader .el-icon-arrow-down.is-reverse { + -webkit-transform: rotateZ(180deg); + transform: rotateZ(180deg) +} + +.custom-theme .el-cascader .el-icon-circle-close { + z-index: 2; + -webkit-transition: color .2s cubic-bezier(.645, .045, .355, 1); + transition: color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-cascader .el-icon-circle-close:hover { + color: #878d99 +} + +.custom-theme .el-cascader__clearIcon { + z-index: 2; + position: relative +} + +.custom-theme .el-cascader__label { + position: absolute; + left: 0; + top: 0; + height: 100%; + padding: 0 25px 0 15px; + color: #5a5e66; + width: 100%; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + text-align: left; + font-size: inherit +} + +.custom-theme .el-cascader__label span { + color: #000 +} + +.custom-theme .el-cascader--medium { + font-size: 14px; + line-height: 36px +} + +.custom-theme .el-cascader--small { + font-size: 13px; + line-height: 32px +} + +.custom-theme .el-cascader--mini { + font-size: 12px; + line-height: 28px +} + +.custom-theme .el-cascader.is-disabled .el-cascader__label { + z-index: 2; + color: #b4bccc +} + +.custom-theme .el-cascader-menus { + white-space: nowrap; + background: #fff; + position: absolute; + margin: 5px 0; + z-index: 2; + border: solid 1px #dfe4ed; + border-radius: 2px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-cascader-menus .popper__arrow { + -webkit-transform: translateX(-400%); + transform: translateX(-400%) +} + +.custom-theme .el-cascader-menu { + display: inline-block; + vertical-align: top; + height: 204px; + overflow: auto; + border-right: solid 1px #dfe4ed; + background-color: #fff; + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 6px 0; + min-width: 160px +} + +.custom-theme .el-cascader-menu:last-child { + border-right: 0 +} + +.custom-theme .el-cascader-menu__item { + font-size: 14px; + padding: 8px 20px; + position: relative; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #5a5e66; + height: 34px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer +} + +.custom-theme .el-cascader-menu__item--extensible:after { + font-family: element-icons; + content: "\e604"; + font-size: 14px; + color: #bfcbd9; + position: absolute; + right: 15px +} + +.custom-theme .el-cascader-menu__item.is-disabled { + color: #b4bccc; + background-color: #fff; + cursor: not-allowed +} + +.custom-theme .el-cascader-menu__item.is-disabled:hover { + background-color: #fff +} + +.custom-theme .el-cascader-menu__item.is-active { + color: #262729 +} + +.custom-theme .el-cascader-menu__item:hover { + background-color: #f5f7fa +} + +.custom-theme .el-cascader-menu__item.selected { + color: #fff; + background-color: #f5f7fa +} + +.custom-theme .el-cascader-menu__item__keyword { + font-weight: 700 +} + +.custom-theme .el-cascader-menu--flexible { + height: auto; + max-height: 180px; + overflow: auto +} + +.custom-theme .el-cascader-menu--flexible .el-cascader-menu__item { + overflow: visible +} + +.custom-theme .el-color-hue-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background-color: red; + padding: 0 2px +} + +.custom-theme .el-color-hue-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to right, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%); + height: 100% +} + +.custom-theme .el-color-hue-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.custom-theme .el-color-hue-slider.is-vertical { + width: 12px; + height: 180px; + padding: 2px 0 +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(red), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(red)); + background: linear-gradient(to bottom, red 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%) +} + +.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.custom-theme .el-color-svpanel { + position: relative; + width: 280px; + height: 180px +} + +.custom-theme .el-color-svpanel__black, .custom-theme .el-color-svpanel__white { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0 +} + +.custom-theme .el-color-svpanel__white { + background: -webkit-gradient(linear, left top, right top, from(#fff), to(rgba(255, 255, 255, 0))); + background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0)) +} + +.custom-theme .el-color-svpanel__black { + background: -webkit-gradient(linear, left bottom, left top, from(#000), to(transparent)); + background: linear-gradient(to top, #000, transparent) +} + +.custom-theme .el-color-svpanel__cursor { + position: absolute +} + +.custom-theme .el-color-svpanel__cursor > div { + cursor: head; + width: 4px; + height: 4px; + -webkit-box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + box-shadow: 0 0 0 1.5px #fff, inset 0 0 1px 1px rgba(0, 0, 0, .3), 0 0 1px 2px rgba(0, 0, 0, .4); + border-radius: 50%; + -webkit-transform: translate(-2px, -2px); + transform: translate(-2px, -2px) +} + +.custom-theme .el-color-alpha-slider { + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 280px; + height: 12px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.custom-theme .el-color-alpha-slider__bar { + position: relative; + background: -webkit-gradient(linear, left top, right top, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0, #fff 100%); + height: 100% +} + +.custom-theme .el-color-alpha-slider__thumb { + position: absolute; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + left: 0; + top: 0; + width: 4px; + height: 100%; + border-radius: 1px; + background: #fff; + border: 1px solid #f0f0f0; + -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, .6); + box-shadow: 0 0 2px rgba(0, 0, 0, .6); + z-index: 1 +} + +.custom-theme .el-color-alpha-slider.is-vertical { + width: 20px; + height: 180px +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar { + background: -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0)), to(white)); + background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0, #fff 100%) +} + +.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb { + left: 0; + top: 0; + width: 100%; + height: 4px +} + +.custom-theme .el-color-dropdown { + width: 300px +} + +.custom-theme .el-color-dropdown__main-wrapper { + margin-bottom: 6px +} + +.custom-theme .el-color-dropdown__main-wrapper::after { + content: ""; + display: table; + clear: both +} + +.custom-theme .el-color-dropdown__btns { + margin-top: 6px; + text-align: right +} + +.custom-theme .el-color-dropdown__value { + float: left; + line-height: 26px; + font-size: 12px; + color: #000; + width: 160px +} + +.custom-theme .el-color-dropdown__btn { + border: 1px solid #dcdcdc; + color: #333; + line-height: 24px; + border-radius: 2px; + padding: 0 20px; + cursor: pointer; + background-color: transparent; + outline: 0; + font-size: 12px +} + +.custom-theme .el-color-dropdown__btn[disabled] { + color: #ccc; + cursor: not-allowed +} + +.custom-theme .el-color-dropdown__btn:hover { + color: #262729; + border-color: #262729 +} + +.custom-theme .el-color-dropdown__link-btn { + cursor: pointer; + color: #262729; + text-decoration: none; + padding: 15px; + font-size: 12px +} + +.custom-theme .el-color-dropdown__link-btn:hover { + color: tint(#262729, 20%) +} + +.custom-theme .el-color-picker { + display: inline-block; + position: relative; + line-height: normal; + height: 40px +} + +.custom-theme .el-color-picker.is-disabled .el-color-picker__trigger { + cursor: not-allowed +} + +.custom-theme .el-color-picker--medium { + height: 36px +} + +.custom-theme .el-color-picker--medium .el-color-picker__trigger { + height: 36px; + width: 36px +} + +.custom-theme .el-color-picker--medium .el-color-picker__mask { + height: 34px; + width: 34px +} + +.custom-theme .el-color-picker--small { + height: 32px +} + +.custom-theme .el-color-picker--small .el-color-picker__trigger { + height: 32px; + width: 32px +} + +.custom-theme .el-color-picker--small .el-color-picker__mask { + height: 30px; + width: 30px +} + +.custom-theme .el-color-picker--small .el-color-picker__empty, .custom-theme .el-color-picker--small .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.custom-theme .el-color-picker--mini { + height: 28px +} + +.custom-theme .el-color-picker--mini .el-color-picker__trigger { + height: 28px; + width: 28px +} + +.custom-theme .el-color-picker--mini .el-color-picker__mask { + height: 26px; + width: 26px +} + +.custom-theme .el-color-picker--mini .el-color-picker__empty, .custom-theme .el-color-picker--mini .el-color-picker__icon { + -webkit-transform: translate3d(-50%, -50%, 0) scale(.8); + transform: translate3d(-50%, -50%, 0) scale(.8) +} + +.custom-theme .el-color-picker__mask { + height: 38px; + width: 38px; + border-radius: 4px; + position: absolute; + top: 1px; + left: 1px; + z-index: 1; + cursor: not-allowed; + background-color: rgba(255, 255, 255, .7) +} + +.custom-theme .el-color-picker__trigger { + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 40px; + width: 40px; + padding: 4px; + border: 1px solid #e6e6e6; + border-radius: 4px; + font-size: 0; + position: relative; + cursor: pointer +} + +.custom-theme .el-color-picker__color { + position: relative; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #999; + border-radius: 2px; + width: 100%; + height: 100%; + text-align: center +} + +.custom-theme .el-color-picker__color.is-alpha { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.custom-theme .el-color-picker__color-inner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0 +} + +.custom-theme .el-color-picker__empty { + font-size: 12px; + color: #999; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0) +} + +.custom-theme .el-color-picker__icon { + display: inline-block; + position: absolute; + width: 100%; + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%, -50%, 0); + transform: translate3d(-50%, -50%, 0); + color: #fff; + text-align: center; + font-size: 12px +} + +.custom-theme .el-color-picker__panel { + position: absolute; + z-index: 10; + padding: 6px; + background-color: #fff; + border: 1px solid #e6ebf5; + border-radius: 4px; + -webkit-box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1) +} + +.custom-theme .el-input { + position: relative; + font-size: 14px; + display: inline-block; + width: 100% +} + +.custom-theme .el-input::-webkit-scrollbar { + z-index: 11; + width: 6px +} + +.custom-theme .el-input::-webkit-scrollbar:horizontal { + height: 6px +} + +.custom-theme .el-input::-webkit-scrollbar-thumb { + border-radius: 5px; + width: 6px; + background: #b4bccc +} + +.custom-theme .el-input::-webkit-scrollbar-corner { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track { + background: #fff +} + +.custom-theme .el-input::-webkit-scrollbar-track-piece { + background: #fff; + width: 6px +} + +.custom-theme .el-input__inner { + -webkit-appearance: none; + background-color: #fff; + background-image: none; + border-radius: 4px; + border: 1px solid #d8dce5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #5a5e66; + display: inline-block; + font-size: inherit; + height: 40px; + line-height: 1; + outline: 0; + padding: 0 15px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + width: 100% +} + +.custom-theme .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-input__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input__suffix { + position: absolute; + height: 100%; + right: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s; + pointer-events: none +} + +.custom-theme .el-input__suffix-inner { + pointer-events: all +} + +.custom-theme .el-input__prefix { + position: absolute; + height: 100%; + left: 5px; + top: 0; + text-align: center; + color: #b4bccc; + -webkit-transition: all .3s; + transition: all .3s +} + +.custom-theme .el-input__icon { + height: 100%; + width: 25px; + text-align: center; + -webkit-transition: all .3s; + transition: all .3s; + line-height: 40px +} + +.custom-theme .el-input__icon:after { + content: ''; + height: 100%; + width: 0; + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-input__validateIcon { + pointer-events: none +} + +.custom-theme .el-input.is-active .el-input__inner { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-input.is-disabled .el-input__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-input.is-disabled .el-input__icon { + cursor: not-allowed +} + +.custom-theme .el-input--suffix .el-input__inner { + padding-right: 30px +} + +.custom-theme .el-input--prefix .el-input__inner { + padding-left: 30px +} + +.custom-theme .el-input--medium { + font-size: 14px +} + +.custom-theme .el-input--medium .el-input__inner { + height: 36px +} + +.custom-theme .el-input--medium .el-input__icon { + line-height: 36px +} + +.custom-theme .el-input--small { + font-size: 13px +} + +.custom-theme .el-input--small .el-input__inner { + height: 32px +} + +.custom-theme .el-input--small .el-input__icon { + line-height: 32px +} + +.custom-theme .el-input--mini { + font-size: 12px +} + +.custom-theme .el-input--mini .el-input__inner { + height: 28px +} + +.custom-theme .el-input--mini .el-input__icon { + line-height: 28px +} + +.custom-theme .el-input-group { + line-height: normal; + display: inline-table; + width: 100%; + border-collapse: separate +} + +.custom-theme .el-input-group > .el-input__inner { + vertical-align: middle; + display: table-cell +} + +.custom-theme .el-input-group__append, .custom-theme .el-input-group__prepend { + background-color: #f5f7fa; + color: #0a76a4; + vertical-align: middle; + display: table-cell; + position: relative; + border: 1px solid #d8dce5; + border-radius: 4px; + padding: 0 20px; + width: 1px; + white-space: nowrap +} + +.custom-theme .el-input-group__append:focus, .custom-theme .el-input-group__prepend:focus { + outline: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-select, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-select { + display: inline-block; + margin: -20px +} + +.custom-theme .el-input-group__append button.el-button, .custom-theme .el-input-group__append div.el-select .el-input__inner, .custom-theme .el-input-group__append div.el-select:hover .el-input__inner, .custom-theme .el-input-group__prepend button.el-button, .custom-theme .el-input-group__prepend div.el-select .el-input__inner, .custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner { + border-color: transparent; + background-color: transparent; + color: inherit; + border-top: 0; + border-bottom: 0 +} + +.custom-theme .el-input-group__append .el-button, .custom-theme .el-input-group__append .el-input, .custom-theme .el-input-group__prepend .el-button, .custom-theme .el-input-group__prepend .el-input { + font-size: inherit +} + +.custom-theme .el-input-group__prepend { + border-right: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-input-group__append { + border-left: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--prepend .el-input__inner { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-input-group--append .el-input__inner { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-textarea { + display: inline-block; + width: 100%; + vertical-align: bottom +} + +.custom-theme .el-textarea__inner { + display: block; + resize: vertical; + padding: 5px 15px; + line-height: 1.5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; + font-size: 14px; + color: #5a5e66; + background-color: #fff; + background-image: none; + border: 1px solid #d8dce5; + border-radius: 4px; + -webkit-transition: border-color .2s cubic-bezier(.645, .045, .355, 1); + transition: border-color .2s cubic-bezier(.645, .045, .355, 1) +} + +.custom-theme .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea__inner:hover { + border-color: #b4bccc +} + +.custom-theme .el-textarea__inner:focus { + outline: 0; + border-color: #262729 +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner { + background-color: #f5f7fa; + border-color: #dfe4ed; + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder { + color: #b4bccc +} + +.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder { + color: #b4bccc +} + +.custom-theme .el-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-color: #d8dce5; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + -webkit-transition: .1s; + transition: .1s; + font-weight: 500; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button + .el-button { + margin-left: 10px +} + +.custom-theme .el-button.is-round { + padding: 12px 20px +} + +.custom-theme .el-button:focus, .custom-theme .el-button:hover { + color: #262729; + border-color: #bebebf; + background-color: #e9e9ea +} + +.custom-theme .el-button:active { + color: #222325; + border-color: #222325; + outline: 0 +} + +.custom-theme .el-button::-moz-focus-inner { + border: 0 +} + +.custom-theme .el-button [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-button.is-plain:focus, .custom-theme .el-button.is-plain:hover { + background: #fff; + border-color: #262729; + color: #262729 +} + +.custom-theme .el-button.is-plain:active { + background: #fff; + border-color: #222325; + color: #222325; + outline: 0 +} + +.custom-theme .el-button.is-active { + color: #222325; + border-color: #222325 +} + +.custom-theme .el-button.is-disabled, .custom-theme .el-button.is-disabled:focus, .custom-theme .el-button.is-disabled:hover { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5 +} + +.custom-theme .el-button.is-disabled.el-button--text { + background-color: transparent +} + +.custom-theme .el-button.is-disabled.is-plain, .custom-theme .el-button.is-disabled.is-plain:focus, .custom-theme .el-button.is-disabled.is-plain:hover { + background-color: #fff; + border-color: #e6ebf5; + color: #b4bccc +} + +.custom-theme .el-button.is-loading { + position: relative; + pointer-events: none +} + +.custom-theme .el-button.is-loading:before { + pointer-events: none; + content: ''; + position: absolute; + left: -1px; + top: -1px; + right: -1px; + bottom: -1px; + border-radius: inherit; + background-color: rgba(255, 255, 255, .35) +} + +.custom-theme .el-button.is-round { + border-radius: 20px; + padding: 12px 23px +} + +.custom-theme .el-button--primary { + color: #fff; + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-button--primary:focus, .custom-theme .el-button--primary:hover { + background: #515254; + border-color: #515254; + color: #fff +} + +.custom-theme .el-button--primary:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-active { + background: #222325; + border-color: #222325; + color: #fff +} + +.custom-theme .el-button--primary.is-disabled, .custom-theme .el-button--primary.is-disabled:active, .custom-theme .el-button--primary.is-disabled:focus, .custom-theme .el-button--primary.is-disabled:hover { + color: #fff; + background-color: #939394; + border-color: #939394 +} + +.custom-theme .el-button--primary.is-plain { + color: #262729; + background: #e9e9ea; + border-color: #a8a9a9 +} + +.custom-theme .el-button--primary.is-plain:focus, .custom-theme .el-button--primary.is-plain:hover { + background: #262729; + border-color: #262729; + color: #fff +} + +.custom-theme .el-button--primary.is-plain:active { + background: #222325; + border-color: #222325; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--primary.is-plain.is-disabled, .custom-theme .el-button--primary.is-plain.is-disabled:active, .custom-theme .el-button--primary.is-plain.is-disabled:focus, .custom-theme .el-button--primary.is-plain.is-disabled:hover { + color: #7d7d7f; + background-color: #e9e9ea; + border-color: #d4d4d4 +} + +.custom-theme .el-button--success { + color: #fff; + background-color: #409167; + border-color: #409167 +} + +.custom-theme .el-button--success:focus, .custom-theme .el-button--success:hover { + background: #66a785; + border-color: #66a785; + color: #fff +} + +.custom-theme .el-button--success:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-active { + background: #3a835d; + border-color: #3a835d; + color: #fff +} + +.custom-theme .el-button--success.is-disabled, .custom-theme .el-button--success.is-disabled:active, .custom-theme .el-button--success.is-disabled:focus, .custom-theme .el-button--success.is-disabled:hover { + color: #fff; + background-color: #a0c8b3; + border-color: #a0c8b3 +} + +.custom-theme .el-button--success.is-plain { + color: #409167; + background: #ecf4f0; + border-color: #b3d3c2 +} + +.custom-theme .el-button--success.is-plain:focus, .custom-theme .el-button--success.is-plain:hover { + background: #409167; + border-color: #409167; + color: #fff +} + +.custom-theme .el-button--success.is-plain:active { + background: #3a835d; + border-color: #3a835d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--success.is-plain.is-disabled, .custom-theme .el-button--success.is-plain.is-disabled:active, .custom-theme .el-button--success.is-plain.is-disabled:focus, .custom-theme .el-button--success.is-plain.is-disabled:hover { + color: #8cbda4; + background-color: #ecf4f0; + border-color: #d9e9e1 +} + +.custom-theme .el-button--warning { + color: #fff; + background-color: #9da408; + border-color: #9da408 +} + +.custom-theme .el-button--warning:focus, .custom-theme .el-button--warning:hover { + background: #b1b639; + border-color: #b1b639; + color: #fff +} + +.custom-theme .el-button--warning:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-active { + background: #8d9407; + border-color: #8d9407; + color: #fff +} + +.custom-theme .el-button--warning.is-disabled, .custom-theme .el-button--warning.is-disabled:active, .custom-theme .el-button--warning.is-disabled:focus, .custom-theme .el-button--warning.is-disabled:hover { + color: #fff; + background-color: #ced284; + border-color: #ced284 +} + +.custom-theme .el-button--warning.is-plain { + color: #9da408; + background: #f5f6e6; + border-color: #d8db9c +} + +.custom-theme .el-button--warning.is-plain:focus, .custom-theme .el-button--warning.is-plain:hover { + background: #9da408; + border-color: #9da408; + color: #fff +} + +.custom-theme .el-button--warning.is-plain:active { + background: #8d9407; + border-color: #8d9407; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--warning.is-plain.is-disabled, .custom-theme .el-button--warning.is-plain.is-disabled:active, .custom-theme .el-button--warning.is-plain.is-disabled:focus, .custom-theme .el-button--warning.is-plain.is-disabled:hover { + color: #c4c86b; + background-color: #f5f6e6; + border-color: #ebedce +} + +.custom-theme .el-button--danger { + color: #fff; + background-color: #b3450e; + border-color: #b3450e +} + +.custom-theme .el-button--danger:focus, .custom-theme .el-button--danger:hover { + background: #c26a3e; + border-color: #c26a3e; + color: #fff +} + +.custom-theme .el-button--danger:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff +} + +.custom-theme .el-button--danger.is-disabled, .custom-theme .el-button--danger.is-disabled:active, .custom-theme .el-button--danger.is-disabled:focus, .custom-theme .el-button--danger.is-disabled:hover { + color: #fff; + background-color: #d9a287; + border-color: #d9a287 +} + +.custom-theme .el-button--danger.is-plain { + color: #b3450e; + background: #f7ece7; + border-color: #e1b59f +} + +.custom-theme .el-button--danger.is-plain:focus, .custom-theme .el-button--danger.is-plain:hover { + background: #b3450e; + border-color: #b3450e; + color: #fff +} + +.custom-theme .el-button--danger.is-plain:active { + background: #a13e0d; + border-color: #a13e0d; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--danger.is-plain.is-disabled, .custom-theme .el-button--danger.is-plain.is-disabled:active, .custom-theme .el-button--danger.is-plain.is-disabled:focus, .custom-theme .el-button--danger.is-plain.is-disabled:hover { + color: #d18f6e; + background-color: #f7ece7; + border-color: #f0dacf +} + +.custom-theme .el-button--info { + color: #fff; + background-color: #0a76a4; + border-color: #0a76a4 +} + +.custom-theme .el-button--info:focus, .custom-theme .el-button--info:hover { + background: #3b91b6; + border-color: #3b91b6; + color: #fff +} + +.custom-theme .el-button--info:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-active { + background: #096a94; + border-color: #096a94; + color: #fff +} + +.custom-theme .el-button--info.is-disabled, .custom-theme .el-button--info.is-disabled:active, .custom-theme .el-button--info.is-disabled:focus, .custom-theme .el-button--info.is-disabled:hover { + color: #fff; + background-color: #85bbd2; + border-color: #85bbd2 +} + +.custom-theme .el-button--info.is-plain { + color: #0a76a4; + background: #e7f1f6; + border-color: #9dc8db +} + +.custom-theme .el-button--info.is-plain:focus, .custom-theme .el-button--info.is-plain:hover { + background: #0a76a4; + border-color: #0a76a4; + color: #fff +} + +.custom-theme .el-button--info.is-plain:active { + background: #096a94; + border-color: #096a94; + color: #fff; + outline: 0 +} + +.custom-theme .el-button--info.is-plain.is-disabled, .custom-theme .el-button--info.is-plain.is-disabled:active, .custom-theme .el-button--info.is-plain.is-disabled:focus, .custom-theme .el-button--info.is-plain.is-disabled:hover { + color: #6cadc8; + background-color: #e7f1f6; + border-color: #cee4ed +} + +.custom-theme .el-button--medium { + padding: 10px 20px; + font-size: 14px; + border-radius: 4px +} + +.custom-theme .el-button--medium.is-round { + padding: 10px 20px +} + +.custom-theme .el-button--small { + padding: 9px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--small.is-round { + padding: 9px 15px +} + +.custom-theme .el-button--mini { + padding: 7px 15px; + font-size: 12px; + border-radius: 3px +} + +.custom-theme .el-button--mini.is-round { + padding: 7px 15px +} + +.custom-theme .el-button--text { + border: none; + color: #262729; + background: 0 0; + padding-left: 0; + padding-right: 0 +} + +.custom-theme .el-button--text:focus, .custom-theme .el-button--text:hover { + color: #515254; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button--text:active { + color: #222325; + border-color: transparent; + background-color: transparent +} + +.custom-theme .el-button-group { + display: inline-block; + vertical-align: middle +} + +.custom-theme .el-button-group::after, .custom-theme .el-button-group::before { + display: table; + content: "" +} + +.custom-theme .el-button-group::after { + clear: both +} + +.custom-theme .el-button-group .el-button { + float: left; + position: relative +} + +.custom-theme .el-button-group .el-button + .el-button { + margin-left: 0 +} + +.custom-theme .el-button-group .el-button:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.custom-theme .el-button-group .el-button:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.custom-theme .el-button-group .el-button:not(:last-child) { + margin-right: -1px +} + +.custom-theme .el-button-group .el-button:active, .custom-theme .el-button-group .el-button:focus, .custom-theme .el-button-group .el-button:hover { + z-index: 1 +} + +.custom-theme .el-button-group .el-button.is-active { + z-index: 1 +} + +.custom-theme .el-button-group .el-button--primary:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:first-child { + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:last-child { + border-left-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child) { + border-left-color: rgba(255, 255, 255, .5); + border-right-color: rgba(255, 255, 255, .5) +} + +.custom-theme .el-checkbox { + color: #5a5e66; + font-weight: 500; + font-size: 14px; + position: relative; + cursor: pointer; + display: inline-block; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +.custom-theme .el-checkbox.is-bordered { + padding: 9px 20px 9px 10px; + border-radius: 4px; + border: 1px solid #d8dce5 +} + +.custom-theme .el-checkbox.is-bordered.is-checked { + border-color: #262729 +} + +.custom-theme .el-checkbox.is-bordered.is-disabled { + border-color: #e6ebf5; + cursor: not-allowed +} + +.custom-theme .el-checkbox.is-bordered + .el-checkbox.is-bordered { + margin-left: 10px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium { + padding: 7px 20px 7px 10px; + border-radius: 4px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label { + line-height: 17px; + font-size: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner { + height: 14px; + width: 14px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small { + padding: 3px 15px 7px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label { + line-height: 15px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini { + padding: 1px 15px 5px 10px; + border-radius: 3px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label { + line-height: 12px; + font-size: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner { + height: 12px; + width: 12px +} + +.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after { + height: 6px; + width: 2px +} + +.custom-theme .el-checkbox__input { + white-space: nowrap; + cursor: pointer; + outline: 0; + display: inline-block; + line-height: 1; + position: relative; + vertical-align: middle +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after { + cursor: not-allowed; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner + .el-checkbox__label { + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after { + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner { + background-color: #edf2fc; + border-color: #d8dce5 +} + +.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before { + background-color: #b4bccc; + border-color: #b4bccc +} + +.custom-theme .el-checkbox__input.is-disabled + span.el-checkbox__label { + color: #b4bccc; + cursor: not-allowed +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after { + -webkit-transform: rotate(45deg) scaleY(1); + transform: rotate(45deg) scaleY(1) +} + +.custom-theme .el-checkbox__input.is-checked + .el-checkbox__label { + color: #262729 +} + +.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: #262729; + border-color: #262729 +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before { + content: ''; + position: absolute; + display: block; + background-color: #fff; + height: 2px; + -webkit-transform: scale(.5); + transform: scale(.5); + left: 0; + right: 0; + top: 5px +} + +.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after { + display: none +} + +.custom-theme .el-checkbox__inner { + display: inline-block; + position: relative; + border: 1px solid #d8dce5; + border-radius: 2px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 14px; + height: 14px; + background-color: #fff; + z-index: 1; + -webkit-transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46); + transition: border-color .25s cubic-bezier(.71, -.46, .29, 1.46), background-color .25s cubic-bezier(.71, -.46, .29, 1.46) +} + +.custom-theme .el-checkbox__inner:hover { + border-color: #262729 +} + +.custom-theme .el-checkbox__inner::after { + -webkit-box-sizing: content-box; + box-sizing: content-box; + content: ""; + border: 1px solid #fff; + border-left: 0; + border-top: 0; + height: 7px; + left: 4px; + position: absolute; + top: 1px; + -webkit-transform: rotate(45deg) scaleY(0); + transform: rotate(45deg) scaleY(0); + width: 3px; + -webkit-transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + transition: transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms, -webkit-transform .15s cubic-bezier(.71, -.46, .88, .6) 50ms; + -webkit-transform-origin: center; + transform-origin: center +} + +.custom-theme .el-checkbox__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + width: 0; + height: 0; + left: -999px +} + +.custom-theme .el-checkbox__label { + display: inline-block; + padding-left: 10px; + line-height: 19px; + font-size: 14px +} + +.custom-theme .el-checkbox + .el-checkbox { + margin-left: 30px +} + +.custom-theme .el-checkbox-button { + position: relative; + display: inline-block +} + +.custom-theme .el-checkbox-button__inner { + display: inline-block; + line-height: 1; + font-weight: 500; + white-space: nowrap; + vertical-align: middle; + cursor: pointer; + background: #fff; + border: 1px solid #d8dce5; + border-left: 0; + color: #5a5e66; + -webkit-appearance: none; + text-align: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + outline: 0; + margin: 0; + position: relative; + -webkit-transition: all .3s cubic-bezier(.645, .045, .355, 1); + transition: all .3s cubic-bezier(.645, .045, .355, 1); + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + padding: 12px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button__inner.is-round { + padding: 12px 20px +} + +.custom-theme .el-checkbox-button__inner:hover { + color: #262729 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] { + line-height: .9 +} + +.custom-theme .el-checkbox-button__inner [class*=el-icon-] + span { + margin-left: 5px +} + +.custom-theme .el-checkbox-button__original { + opacity: 0; + outline: 0; + position: absolute; + margin: 0; + left: -999px +} + +.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner { + color: #fff; + background-color: #262729; + border-color: #262729; + -webkit-box-shadow: -1px 0 0 0 #7d7d7f; + box-shadow: -1px 0 0 0 #7d7d7f +} + +.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner { + color: #b4bccc; + cursor: not-allowed; + background-image: none; + background-color: #fff; + border-color: #e6ebf5; + -webkit-box-shadow: none; + box-shadow: none +} + +.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner { + border-left: 1px solid #d8dce5; + border-radius: 4px 0 0 4px; + -webkit-box-shadow: none !important; + box-shadow: none !important +} + +.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: #262729 +} + +.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner { + border-radius: 0 4px 4px 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner { + padding: 10px 20px; + font-size: 14px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round { + padding: 10px 20px +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner { + padding: 9px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round { + padding: 9px 15px +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner { + padding: 7px 15px; + font-size: 12px; + border-radius: 0 +} + +.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round { + padding: 7px 15px +} + +.custom-theme .el-checkbox-group { + font-size: 0 +} + +.custom-theme .el-transfer { + font-size: 14px +} + +.custom-theme .el-transfer__buttons { + display: inline-block; + vertical-align: middle; + padding: 0 30px +} + +.custom-theme .el-transfer__button { + display: block; + margin: 0 auto; + padding: 10px; + border-radius: 50%; + color: #fff; + background-color: #262729; + font-size: 0 +} + +.custom-theme .el-transfer__button.is-with-texts { + border-radius: 4px +} + +.custom-theme .el-transfer__button.is-disabled { + border: 1px solid #d8dce5; + background-color: #f5f7fa; + color: #b4bccc +} + +.custom-theme .el-transfer__button.is-disabled:hover { + border: 1px solid #d8dce5; + background-color: #f5f7fa; + color: #b4bccc +} + +.custom-theme .el-transfer__button:first-child { + margin-bottom: 10px +} + +.custom-theme .el-transfer__button:nth-child(2) { + margin: 0 +} + +.custom-theme .el-transfer__button i, .custom-theme .el-transfer__button span { + font-size: 14px +} + +.custom-theme .el-transfer__button [class*=el-icon-] + span { + margin-left: 0 +} + +.custom-theme .el-transfer-panel { + border: 1px solid #e6ebf5; + border-radius: 4px; + overflow: hidden; + background: #fff; + display: inline-block; + vertical-align: middle; + width: 200px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + position: relative +} + +.custom-theme .el-transfer-panel__body { + height: 246px +} + +.custom-theme .el-transfer-panel__body.is-with-footer { + padding-bottom: 40px +} + +.custom-theme .el-transfer-panel__list { + margin: 0; + padding: 6px 0; + list-style: none; + height: 246px; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-transfer-panel__list.is-filterable { + height: 194px; + padding-top: 0 +} + +.custom-theme .el-transfer-panel__item { + height: 30px; + line-height: 30px; + padding-left: 15px; + display: block +} + +.custom-theme .el-transfer-panel__item + .el-transfer-panel__item { + margin-left: 0 +} + +.custom-theme .el-transfer-panel__item.el-checkbox { + color: #5a5e66 +} + +.custom-theme .el-transfer-panel__item:hover { + color: #262729 +} + +.custom-theme .el-transfer-panel__item.el-checkbox .el-checkbox__label { + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-left: 24px; + line-height: 30px +} + +.custom-theme .el-transfer-panel__item .el-checkbox__input { + position: absolute; + top: 8px +} + +.custom-theme .el-transfer-panel__filter { + text-align: center; + margin: 15px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: block; + width: auto +} + +.custom-theme .el-transfer-panel__filter .el-input__inner { + height: 32px; + width: 100%; + font-size: 12px; + display: inline-block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 16px; + padding-right: 10px; + padding-left: 30px +} + +.custom-theme .el-transfer-panel__filter .el-input__icon { + margin-left: 5px +} + +.custom-theme .el-transfer-panel__filter .el-icon-circle-close { + cursor: pointer +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header { + height: 40px; + line-height: 40px; + background: #f5f7fa; + margin: 0; + padding-left: 15px; + border-bottom: 1px solid #e6ebf5; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #000 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox { + display: block; + line-height: 40px +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label { + font-size: 16px; + color: #2d2f33; + font-weight: 400 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span { + position: absolute; + right: 15px; + color: #878d99; + font-size: 12px; + font-weight: 400 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer { + height: 40px; + background: #fff; + margin: 0; + padding: 0; + border-top: 1px solid #e6ebf5; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + z-index: 1 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer::after { + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle +} + +.custom-theme .el-transfer-panel .el-transfer-panel__footer .el-checkbox { + padding-left: 20px; + color: #5a5e66 +} + +.custom-theme .el-transfer-panel .el-transfer-panel__empty { + margin: 0; + height: 30px; + line-height: 30px; + padding: 6px 15px 0; + color: #878d99 +} + +.custom-theme .el-transfer-panel .el-checkbox__label { + padding-left: 8px +} + +.custom-theme .el-transfer-panel .el-checkbox__inner { + height: 14px; + width: 14px; + border-radius: 3px +} + +.custom-theme .el-transfer-panel .el-checkbox__inner::after { + height: 6px; + width: 3px; + left: 4px +} + +.custom-theme .el-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-container.is-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column +} + +.custom-theme .el-header { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-aside { + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box +} + +.custom-theme .el-main { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 20px +} + +.custom-theme .el-footer { + padding: 0 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..36522f4a18d08216c8800b99532eaeba8c4695e5 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/BackToTop/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..2d1265fb6091b93ffd93e8726369da09ba23ed68 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Breadcrumb/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue new file mode 100644 index 0000000000000000000000000000000000000000..e7d6382501041f51df419de7cd46002e9d39c91d --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/Keyboard.vue @@ -0,0 +1,155 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue new file mode 100644 index 0000000000000000000000000000000000000000..8d97b545f852efb20de21dce5df78ada5fe2c4d9 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/LineMarker.vue @@ -0,0 +1,227 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue new file mode 100644 index 0000000000000000000000000000000000000000..c8a24b0caad72796aefec37f22b9f6971ccd3428 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/MixChart.vue @@ -0,0 +1,272 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js new file mode 100644 index 0000000000000000000000000000000000000000..89fbed183877b68a50dc9df2f4c96a16ceb4c9bc --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Charts/mixins/resize.js @@ -0,0 +1,56 @@ +import {debounce} from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null, + $_resizeHandler: null + } + }, + mounted() { + this.initListener() + }, + activated() { + if (!this.$_resizeHandler) { + // avoid duplication init + this.initListener() + } + + // when keep-alive chart activated, auto resize + this.resize() + }, + beforeDestroy() { + this.destroyListener() + }, + deactivated() { + this.destroyListener() + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.$_resizeHandler() + } + }, + initListener() { + this.$_resizeHandler = debounce(() => { + this.resize() + }, 100) + window.addEventListener('resize', this.$_resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + destroyListener() { + window.removeEventListener('resize', this.$_resizeHandler) + this.$_resizeHandler = null + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + resize() { + const {chart} = this + chart && chart.resize() + } + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..23ca006efb9dd2772ab382e3049fc309a30b8a1c --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/DndList/index.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..47f42474f1d2661414d974c79a8f1bc10733e6ce --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/DragSelect/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..bad9eb90d4c701a3cd4ae094a75ba3c2e9cede07 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Dropzone/index.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..9ad758d78c66f294abe7e0dde1aa1af10b1d6304 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ErrorLog/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..92f7aa03670addac7326854f0f671c2c0ce6c6c0 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/GithubCorner/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..368b002154ef7dfb2625e15a43d2ad264bfa040c --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/Hamburger/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..5d61ba37ca14c3847b1047b6a6c6e52bbd558d71 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/HeaderSearch/index.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..65a4262bebfb38b99255c42fe2d6c8a3322e9e0b --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/index.vue @@ -0,0 +1,1779 @@ + + + + + diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js new file mode 100644 index 0000000000000000000000000000000000000000..9c47f8af5328686c427acf090c3e7eba96ec2765 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/data2blob.js @@ -0,0 +1,19 @@ +/** + * database64文件格式转换为2进制 + * + * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 + * @param {[String]} mime [description] + * @return {[blob]} [description] + */ +export default function(data, mime) { + data = data.split(',')[1] + data = window.atob(data) + var ia = new Uint8Array(data.length) + for (var i = 0; i < data.length; i++) { + ia[i] = data.charCodeAt(i) + } + // canvas.toDataURL 返回的默认格式就是 image/png + return new Blob([ia], { + type: mime + }) +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js new file mode 100644 index 0000000000000000000000000000000000000000..46a01640a1e9eed6d2d81c87d9bf96b858c77271 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/effectRipple.js @@ -0,0 +1,39 @@ +/** + * 点击波纹效果 + * + * @param {[event]} e [description] + * @param {[Object]} arg_opts [description] + * @return {[bollean]} [description] + */ +export default function(e, arg_opts) { + var opts = Object.assign({ + ele: e.target, // 波纹作用元素 + type: 'hit', // hit点击位置扩散center中心点扩展 + bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色 + }, arg_opts) + var target = opts.ele + if (target) { + var rect = target.getBoundingClientRect() + var ripple = target.querySelector('.e-ripple') + if (!ripple) { + ripple = document.createElement('span') + ripple.className = 'e-ripple' + ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px' + target.appendChild(ripple) + } else { + ripple.className = 'e-ripple' + } + switch (opts.type) { + case 'center': + ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px' + ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px' + break + default: + ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px' + ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px' + } + ripple.style.backgroundColor = opts.bgc + ripple.className = 'e-ripple z-active' + return false + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js new file mode 100644 index 0000000000000000000000000000000000000000..727872d96f4c2d054a4bc47108a93e6b0d44b379 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/language.js @@ -0,0 +1,232 @@ +export default { + zh: { + hint: '点击,或拖动图片至此处', + loading: '正在上传……', + noSupported: '浏览器不支持该功能,请使用IE10以上或其他现在浏览器!', + success: '上传成功', + fail: '图片上传失败', + preview: '头像预览', + btn: { + off: '取消', + close: '关闭', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '仅限图片格式', + outOfSize: '单文件大小不能超过 ', + lowestPx: '图片最低像素为(宽*高):' + } + }, + 'zh-tw': { + hint: '點擊,或拖動圖片至此處', + loading: '正在上傳……', + noSupported: '瀏覽器不支持該功能,請使用IE10以上或其他現代瀏覽器!', + success: '上傳成功', + fail: '圖片上傳失敗', + preview: '頭像預覽', + btn: { + off: '取消', + close: '關閉', + back: '上一步', + save: '保存' + }, + error: { + onlyImg: '僅限圖片格式', + outOfSize: '單文件大小不能超過 ', + lowestPx: '圖片最低像素為(寬*高):' + } + }, + en: { + hint: 'Click or drag the file here to upload', + loading: 'Uploading…', + noSupported: 'Browser is not supported, please use IE10+ or other browsers', + success: 'Upload success', + fail: 'Upload failed', + preview: 'Preview', + btn: { + off: 'Cancel', + close: 'Close', + back: 'Back', + save: 'Save' + }, + error: { + onlyImg: 'Image only', + outOfSize: 'Image exceeds size limit: ', + lowestPx: 'Image\'s size is too low. Expected at least: ' + } + }, + ro: { + hint: 'Atinge sau trage fișierul aici', + loading: 'Se încarcă', + noSupported: 'Browser-ul tău nu suportă acest feature. Te rugăm încearcă cu alt browser.', + success: 'S-a încărcat cu succes', + fail: 'A apărut o problemă la încărcare', + preview: 'Previzualizează', + + btn: { + off: 'Anulează', + close: 'Închide', + back: 'Înapoi', + save: 'Salvează' + }, + + error: { + onlyImg: 'Doar imagini', + outOfSize: 'Imaginea depășește limita de: ', + loewstPx: 'Imaginea este prea mică; Minim: ' + } + }, + ru: { + hint: 'Нажмите, или перетащите файл в это окно', + loading: 'Загружаю……', + noSupported: 'Ваш браузер не поддерживается, пожалуйста, используйте IE10 + или другие браузеры', + success: 'Загрузка выполнена успешно', + fail: 'Ошибка загрузки', + preview: 'Предпросмотр', + btn: { + off: 'Отменить', + close: 'Закрыть', + back: 'Назад', + save: 'Сохранить' + }, + error: { + onlyImg: 'Только изображения', + outOfSize: 'Изображение превышает предельный размер: ', + lowestPx: 'Минимальный размер изображения: ' + } + }, + 'pt-br': { + hint: 'Clique ou arraste o arquivo aqui para carregar', + loading: 'Carregando…', + noSupported: 'Browser não suportado, use o IE10+ ou outro browser', + success: 'Sucesso ao carregar imagem', + fail: 'Falha ao carregar imagem', + preview: 'Pré-visualizar', + btn: { + off: 'Cancelar', + close: 'Fechar', + back: 'Voltar', + save: 'Salvar' + }, + error: { + onlyImg: 'Apenas imagens', + outOfSize: 'A imagem excede o limite de tamanho: ', + lowestPx: 'O tamanho da imagem é muito pequeno. Tamanho mínimo: ' + } + }, + fr: { + hint: 'Cliquez ou glissez le fichier ici.', + loading: 'Téléchargement…', + noSupported: 'Votre navigateur n\'est pas supporté. Utilisez IE10 + ou un autre navigateur s\'il vous plaît.', + success: 'Téléchargement réussit', + fail: 'Téléchargement echoué', + preview: 'Aperçu', + btn: { + off: 'Annuler', + close: 'Fermer', + back: 'Retour', + save: 'Enregistrer' + }, + error: { + onlyImg: 'Image uniquement', + outOfSize: 'L\'image sélectionnée dépasse la taille maximum: ', + lowestPx: 'L\'image sélectionnée est trop petite. Dimensions attendues: ' + } + }, + nl: { + hint: 'Klik hier of sleep een afbeelding in dit vlak', + loading: 'Uploaden…', + noSupported: 'Je browser wordt helaas niet ondersteund. Gebruik IE10+ of een andere browser.', + success: 'Upload succesvol', + fail: 'Upload mislukt', + preview: 'Voorbeeld', + btn: { + off: 'Annuleren', + close: 'Sluiten', + back: 'Terug', + save: 'Opslaan' + }, + error: { + onlyImg: 'Alleen afbeeldingen', + outOfSize: 'De afbeelding is groter dan: ', + lowestPx: 'De afbeelding is te klein! Minimale afmetingen: ' + } + }, + tr: { + hint: 'Tıkla veya yüklemek istediğini buraya sürükle', + loading: 'Yükleniyor…', + noSupported: 'Tarayıcı desteklenmiyor, lütfen IE10+ veya farklı tarayıcı kullanın', + success: 'Yükleme başarılı', + fail: 'Yüklemede hata oluştu', + preview: 'Önizle', + btn: { + off: 'İptal', + close: 'Kapat', + back: 'Geri', + save: 'Kaydet' + }, + error: { + onlyImg: 'Sadece resim', + outOfSize: 'Resim yükleme limitini aşıyor: ', + lowestPx: 'Resmin boyutu çok küçük. En az olması gereken: ' + } + }, + 'es-MX': { + hint: 'Selecciona o arrastra una imagen', + loading: 'Subiendo...', + noSupported: 'Tu navegador no es soportado, porfavor usa IE10+ u otros navegadores mas recientes', + success: 'Subido exitosamente', + fail: 'Sucedió un error', + preview: 'Vista previa', + btn: { + off: 'Cancelar', + close: 'Cerrar', + back: 'Atras', + save: 'Guardar' + }, + error: { + onlyImg: 'Unicamente imagenes', + outOfSize: 'La imagen excede el tamaño maximo:', + lowestPx: 'La imagen es demasiado pequeño. Se espera por lo menos:' + } + }, + de: { + hint: 'Klick hier oder zieh eine Datei hier rein zum Hochladen', + loading: 'Hochladen…', + noSupported: 'Browser wird nicht unterstützt, bitte verwende IE10+ oder andere Browser', + success: 'Upload erfolgreich', + fail: 'Upload fehlgeschlagen', + preview: 'Vorschau', + btn: { + off: 'Abbrechen', + close: 'Schließen', + back: 'Zurück', + save: 'Speichern' + }, + error: { + onlyImg: 'Nur Bilder', + outOfSize: 'Das Bild ist zu groß: ', + lowestPx: 'Das Bild ist zu klein. Mindestens: ' + } + }, + ja: { + hint: 'クリック・ドラッグしてファイルをアップロード', + loading: 'アップロード中...', + noSupported: 'このブラウザは対応されていません。IE10+かその他の主要ブラウザをお使いください。', + success: 'アップロード成功', + fail: 'アップロード失敗', + preview: 'プレビュー', + btn: { + off: 'キャンセル', + close: '閉じる', + back: '戻る', + save: '保存' + }, + error: { + onlyImg: '画像のみ', + outOfSize: '画像サイズが上限を超えています。上限: ', + lowestPx: '画像が小さすぎます。最小サイズ: ' + } + } +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js new file mode 100644 index 0000000000000000000000000000000000000000..e20c085ca318859ce609f0d2e53c0b47238ff092 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/ImageCropper/utils/mimes.js @@ -0,0 +1,7 @@ +export default { + 'jpg': 'image/jpeg', + 'png': 'image/png', + 'gif': 'image/gif', + 'svg': 'image/svg+xml', + 'psd': 'image/photoshop' +} diff --git a/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue b/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue new file mode 100644 index 0000000000000000000000000000000000000000..c05b090c3b45e78844a5316b79fb60df0e67ee51 --- /dev/null +++ b/app/Modules/Admin/Resources/vue-element-admin/components/JsonEditor/index.vue @@ -0,0 +1,77 @@ +